Доработка ботов (советников, индикаторов) vol. 2

Karabas BARABAS

Директор Буратины
Я их скомпилировал в старой билде пока работают ;) Держи __https://yadi.sk/d/BTRPtgKteXTS3 Сначала загрузи историю, потом скриптами поработай агрегатом больше 5 гиг загрузка будет и потом мой шаблон поставь должно заработать отчёт свежий вчера закачал он комбинированный фьюч+опцион ;) Там ещё и советник есть, можно торговать по нему я тестил нормально идёт

спасибо, сейчас скачаю посмотрю
 

Ladzius

Элитный участник
Я их скомпилировал в старой билде пока работают ;) Держи __https://yadi.sk/d/BTRPtgKteXTS3 Сначала загрузи историю, потом скриптами поработай агрегатом больше 5 гиг загрузка будет и потом мой шаблон поставь должно заработать отчёт свежий вчера закачал он комбинированный фьюч+опцион ;) Там ещё и советник есть, можно торговать по нему я тестил нормально идёт

интересное дело здесь...но дле его понимание думаю надо окончит не однои университет по физике и математики ;) Спасибо.
 

Fed77

Гуру форума
нашел вот такую тему про СОТ _https://www.mql5.com/ru/articles/1573
очень интересно, но проверить не могу, индюки и скрипт под старые билды, на новом куча ошибок (может кто подправит? :please:)
случайно не ваши разработки?
Не мои сам оттуда скачал
интересное дело здесь...но дле его понимание думаю надо окончит не однои университет по физике и математики ;) Спасибо.
Я экономист, поэтому для меня теория определения стоимости валюты по отчётам с учётом спекулятивного фактора, по закону Спроса и предложения больше по душе и теория вероятности тоже , поэтому думаю Ларри Вильямс даёт чёткое понимание теории движения цены и ориентиры кто на рынке хозяин и за кем следовать, сколько методик не пробовал считаю это самый адекватный подход для средне- и долгосрочной торговли, только нужно смотреть всё в комплексе фьючерсы и опционы как показатели меняются в динамике
 
Последнее редактирование модератором:

Karabas BARABAS

Директор Буратины
интересное дело здесь...но дле его понимание думаю надо окончит не однои университет по физике и математики ;) Спасибо.

посмотри здесь
_http://www.forexfactory.com/showthread.php?t=509416&page=8
глубоких рассуждений нет, правда все на английском, но принцип и по скринам понятен
 
Последнее редактирование модератором:

nikpilot

Активный участник
Доработка индикатора.

Доброго времени суток.

Уважаемые программисты доработайте индикатор пожалуйста. Индикатор выводит сообщение "Not bad moment to open position BUY" и "GOOD moment to open position BUY", аналогично для СЕЛЛ.

При появлении сообщения появляется звуковой сигнал и окошко алерта, но
нет сообщения на какой валютной паре, что не очень удобно.
Доработайте пожалуйста, чтобы выводилась информация на какой паре появился сигнал.

Заранее спасибо.
 

Вложения

  • TREND_alexcud_v_2MEn+Alert_M.mq4
    22,7 КБ · Просмотры: 77

mobidik

-----
Доброго времени суток.

Уважаемые программисты доработайте индикатор пожалуйста. Индикатор выводит сообщение "Not bad moment to open position BUY" и "GOOD moment to open position BUY", аналогично для СЕЛЛ.

При появлении сообщения появляется звуковой сигнал и окошко алерта, но
нет сообщения на какой валютной паре, что не очень удобно.
Доработайте пожалуйста, чтобы выводилась информация на какой паре появился сигнал.

Заранее спасибо.

:)
 

Вложения

  • 123.png
    123.png
    70,3 КБ · Просмотры: 376
  • TREND_alexcud_v_2MEn+Alert_M.mq4
    22,9 КБ · Просмотры: 107

Petr888

Заблокирован
Ребята помогите кто может - что в этом коде советника нужно менять чтобы шаг между орденами изменить? какой параметр ? я сам так и не нашёл .... он слишком близко друг к другу открывает ордера.....
extern int Key = 0;
extern double Lots = 1.0;
double gd_88;
double gd_96 = 0.0;
double gd_104 = 24.0;
double gd_112 = 0.0;
double gd_120 = 24.0;
extern double TakeProfit = 35.0;
extern double StopLoss = 1000.0;
bool gi_144 = FALSE;
bool gi_148 = FALSE;
double gd_152 = 10.0;
bool gi_160 = TRUE;
bool gi_164 = TRUE;
bool gi_168 = TRUE;
bool gi_172 = TRUE;
bool gi_176 = TRUE;
bool gi_180 = TRUE;
bool gi_184 = TRUE;
int g_magic_188 = 1841;
bool gi_192 = FALSE;
bool gi_196 = FALSE;
bool gi_200 = FALSE;
double g_lots_204 = 0.0;
double gd_unused_212 = 22.0;
double gd_220 = 20.0;
double gd_228 = 22.0;
double gd_236 = 20.0;
double gd_244 = 22.0;
double gd_252 = 20.0;
double gd_260 = 22.0;
double gd_268 = 20.0;
double gd_276 = 22.0;
double gd_284 = 20.0;
double gd_292 = 22.0;
double gd_300 = 20.0;
double gd_308 = 22.0;
double gd_316 = 20.0;
double gd_324 = 22.0;
double gd_332 = 20.0;
double gd_340 = 22.0;
double gd_348 = 20.0;
double gd_356 = 22.0;
double gd_364 = 22.0;
bool gi_372 = FALSE;

int f0_0() {
bool li_ret_0 = FALSE;
for (int pos_4 = 0; pos_4 < OrdersTotal(); pos_4++) {
if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) li_ret_0 = li_ret_0 + OrderProfit() + OrderSwap() + OrderCommission();
}
return (li_ret_0);
}

int f0_1() {
bool li_ret_0 = FALSE;
for (int pos_4 = 0; pos_4 < OrdersTotal(); pos_4++) {
if (OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) li_ret_0 = li_ret_0 + OrderProfit() + OrderSwap() + OrderCommission();
}
return (li_ret_0);
}

double f0_5(int ai_0, int ai_4) {
int year_8;
int month_12;
int day_16;
int datetime_20;
int hist_total_24 = OrdersHistoryTotal();
double ld_ret_28 = 0;
for (int pos_36 = 0; pos_36 < hist_total_24; pos_36++) {
OrderSelect(pos_36, SELECT_BY_POS, MODE_HISTORY);
datetime_20 = OrderCloseTime();
year_8 = TimeYear(datetime_20);
month_12 = TimeMonth(datetime_20);
day_16 = TimeDay(datetime_20);
if (year_8 == Year() && month_12 == Month() && day_16 == Day() - ai_4 && OrderMagicNumber() == g_magic_188) {
if (ai_0 == 1)
if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_28 = ld_ret_28 + OrderProfit() + OrderSwap() + OrderCommission();
}
}
return (ld_ret_28);
}

int init() {
string ls_0;
string ls_8;
string ls_unused_16;
gd_88 = 100.0 * Lots;

if (gi_200) g_lots_204 = 100000.0 * Lots;
else g_lots_204 = Lots;
return (0);
}

int start() {
double price_0;
double price_8;
double price_16;
double price_24;
double price_32;
double lots_40;
double pips_48;
double pips_56;
if (!f0_2()) return (0);
double ld_64 = (iHigh(NULL, PERIOD_H1, 1) - iLow(NULL, PERIOD_H1, 1)) / Point;
int ticket_72 = 0;
int ticket_76 = 0;
int ticket_80 = 0;
int ticket_84 = 0;
int ticket_88 = 0;
int ticket_92 = 0;
double order_lots_96 = 0;
double order_lots_104 = 0;
double order_open_price_112 = 0;
double order_open_price_120 = 0;
double ld_128 = 0;
double ld_136 = 0;
double ld_unused_144 = 0;
double order_lots_152 = 0;
double ld_unused_160 = 0;
double order_lots_168 = 0;
double ld_176 = 0;
double ld_184 = 0;
gi_196 = FALSE;
if (gi_144 == TRUE) {
switch (DayOfWeek()) {
case 0:
if (gi_160 != TRUE) break;
gi_196 = TRUE;
break;
case 1:
if (gi_164 != TRUE) break;
gi_196 = TRUE;
break;
case 2:
if (gi_168 != TRUE) break;
gi_196 = TRUE;
break;
case 3:
if (gi_172 != TRUE) break;
gi_196 = TRUE;
break;
case 4:
if (gi_176 != TRUE) break;
gi_196 = TRUE;
break;
case 5:
if (gi_180 != TRUE) break;
gi_196 = TRUE;
break;
case 6:
if (gi_184 != TRUE) break;
gi_196 = TRUE;
}
} else gi_196 = TRUE;
for (int pos_196 = 0; pos_196 < OrdersTotal(); pos_196++) {
OrderSelect(pos_196, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) {
if (OrderType() == OP_BUY && ticket_72 < OrderTicket()) {
order_lots_96 = OrderLots();
order_open_price_112 = OrderOpenPrice();
ticket_72 = OrderTicket();
ld_136 = OrderTakeProfit();
if (OrderLots() == g_lots_204) ld_176 = OrderOpenPrice() - StopLoss * Point;
}
if (OrderType() == OP_SELL && ticket_76 < OrderTicket()) {
order_lots_104 = OrderLots();
order_open_price_120 = OrderOpenPrice();
ticket_76 = OrderTicket();
ld_128 = OrderTakeProfit();
if (OrderLots() == g_lots_204) ld_184 = OrderOpenPrice() + StopLoss * Point;
}
if (OrderType() == OP_BUYLIMIT) {
ticket_80 = OrderTicket();
order_lots_168 = OrderLots();
}
if (OrderType() == OP_SELLLIMIT) {
ticket_84 = OrderTicket();
order_lots_168 = OrderLots();
}
if (OrderType() == OP_BUYSTOP) {
ticket_88 = OrderTicket();
order_lots_152 = OrderLots();
}
if (OrderType() == OP_SELLSTOP) {
ticket_92 = OrderTicket();
order_lots_152 = OrderLots();
}
}
}
int li_200 = f0_0() / (AccountBalance() / 100.0);
int li_204 = f0_1() / (AccountBalance() / 100.0);
int li_unused_208 = (f0_1() + f0_0()) / (AccountBalance() / 100.0);
if (li_200 < (-1.0 * gd_152) && gi_148 == TRUE) {
for (int pos_212 = OrdersTotal() - 1; pos_212 >= 0; pos_212--) {
if (!(OrderSelect(pos_212, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 2);
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYLIMIT && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) OrderDelete(OrderTicket());
}
}
if (li_204 < (-1.0 * gd_152) && gi_148 == TRUE) {
for (int pos_216 = OrdersTotal() - 1; pos_216 >= 0; pos_216--) {
if (!(OrderSelect(pos_216, SELECT_BY_POS, MODE_TRADES))) break;
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 2);
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) OrderDelete(OrderTicket());
if (OrderType() == OP_SELLLIMIT && OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_188) OrderDelete(OrderTicket());
}
}
int li_unused_220 = MarketInfo(Symbol(), MODE_SPREAD);
int li_unused_224 = MarketInfo(Symbol(), MODE_POINT);
int li_unused_228 = MarketInfo(Symbol(), MODE_DIGITS);
int li_unused_232 = MarketInfo(Symbol(), MODE_TICKVALUE);
if (ticket_72 == 0 && gi_196) {
if (ticket_80 != 0) OrderDelete(ticket_80);
if (ticket_88 != 0) OrderDelete(ticket_88);
price_16 = Ask - StopLoss * Point;
if (StopLoss <= 0.0) price_16 = 0;
price_32 = Ask + TakeProfit * Point;
if ((TimeHour(TimeCurrent()) >= gd_96 && TimeHour(TimeCurrent()) < gd_104) || (TimeHour(TimeCurrent()) >= gd_112 && TimeHour(TimeCurrent()) < gd_120)) OrderSend(Symbol(), OP_BUY, g_lots_204, Ask, 3, price_16, price_32, "Magic" + g_magic_188, g_magic_188, 0, Blue);
}
if (ticket_76 == 0 && gi_196) {
if (ticket_84 != 0) OrderDelete(ticket_84);
if (ticket_92 != 0) OrderDelete(ticket_92);
price_8 = Bid + StopLoss * Point;
if (StopLoss <= 0.0) price_8 = 0;
price_24 = Bid - TakeProfit * Point;
if ((TimeHour(TimeCurrent()) >= gd_96 && TimeHour(TimeCurrent()) < gd_104) || (TimeHour(TimeCurrent()) >= gd_112 && TimeHour(TimeCurrent()) < gd_120)) OrderSend(Symbol(), OP_SELL, g_lots_204, Bid, 3, price_8, price_24, "Magic" + g_magic_188, g_magic_188, 0, Red);
}
if (ticket_72 != 0 && ticket_80 == 0) {
pips_56 = f0_3(order_lots_96);
pips_48 = f0_4(order_lots_96);
price_0 = order_open_price_112 - pips_56 * Point;
if (gi_192 == FALSE) price_16 = price_0 - StopLoss * Point;
else price_16 = ld_176;
if (StopLoss <= 0.0) price_16 = 0;
price_32 = price_0 + pips_48 * Point;
lots_40 = NormalizeDouble(2.0 * order_lots_96, pips_48);
if (gi_196 && lots_40 < gd_88) OrderSend(Symbol(), OP_BUYLIMIT, lots_40, price_0, 3, price_16, price_32, "Magic" + g_magic_188, g_magic_188, 0, Blue);
}
if (ticket_76 != 0 && ticket_84 == 0) {
pips_56 = f0_3(order_lots_104);
pips_48 = f0_4(order_lots_104);
price_0 = order_open_price_120 + pips_56 * Point;
if (gi_192 == FALSE) price_8 = price_0 + StopLoss * Point;
else price_8 = ld_184;
if (StopLoss <= 0.0) price_8 = 0;
price_24 = price_0 - pips_48 * Point;
lots_40 = NormalizeDouble(2.0 * order_lots_104, pips_48);
if (gi_196 && lots_40 < gd_88) OrderSend(Symbol(), OP_SELLLIMIT, lots_40, price_0, 3, price_8, price_24, "Magic" + g_magic_188, g_magic_188, 0, Red);
}
Comment("\nЛицензия - OK! ProfitMakerPro запущен на ", AccountNumber(),
"\n",
"\n", " Прибыль за сегодня = ", NormalizeDouble(f0_5(1, 0), 2), " $ ",
"\n", " Прибыль за вчера = ", NormalizeDouble(f0_5(1, 1), 2), " $ ",
"\n", " Текущий баланс = ", AccountBalance(), " $ ");
for (pos_196 = 0; pos_196 < OrdersTotal(); pos_196++) {
OrderSelect(pos_196, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderType() == OP_BUY && ticket_72 != 0 && OrderMagicNumber() == g_magic_188) {
if (gi_192 == FALSE) price_16 = order_open_price_112 - StopLoss * Point;
else price_16 = ld_176;
if (StopLoss <= 0.0) price_16 = 0;
if (ticket_72 != OrderTicket()) price_32 = ld_136;
else price_32 = OrderTakeProfit();
if (price_32 != OrderTakeProfit() || price_16 != OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), price_16, price_32, 0, Blue);
}
if (OrderSymbol() == Symbol() && OrderType() == OP_SELL && ticket_76 != 0 && OrderMagicNumber() == g_magic_188) {
if (gi_192 == FALSE) price_8 = order_open_price_120 + StopLoss * Point;
else price_8 = ld_184;
if (StopLoss <= 0.0) price_8 = 0;
if (ticket_76 != OrderTicket()) price_24 = ld_128;
else price_24 = OrderTakeProfit();
if (price_24 != OrderTakeProfit() || price_8 != OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), price_8, price_24, 0, Red);
}
}
return (0);
}

int f0_3(double ad_0) {
ad_0 = NormalizeDouble(ad_0 / g_lots_204, 0);
switch (ad_0) {
case 1.0:
return (gd_228);
case 2.0:
return (gd_228);
case 4.0:
return (gd_244);
case 8.0:
return (gd_260);
case 16.0:
return (gd_276);
case 32.0:
return (gd_292);
case 64.0:
return (gd_308);
case 128.0:
return (gd_324);
case 256.0:
return (gd_340);
case 512.0:
return (gd_356);
}
return (gd_356);
}

int f0_4(double ad_0) {
ad_0 = NormalizeDouble(ad_0 / g_lots_204, 0);
switch (ad_0) {
case 1.0:
return (gd_220);
case 2.0:
return (gd_236);
case 4.0:
return (gd_252);
case 8.0:
return (gd_268);
case 16.0:
return (gd_284);
case 32.0:
return (gd_300);
case 64.0:
return (gd_316);
case 128.0:
return (gd_332);
case 256.0:
return (gd_348);
case 512.0:
return (gd_364);
}
return (gd_364);
}

вот этот double gd_152 = 10.0;
 

sergeikip2008

Активный участник
Добрый день,уважаемые форумчане...Уважаемый Pammexpert принял участие в доработке бота,за что ему отдельное спасибо...Да большая просьба,можно ли вывести настройки алллигатора(т.е. 3 Ма и смещение),добавить для работы валютную пару XAUUSD,а также облегчить сову для работы(убрать звук,может лишние комменты,может еще что-нибудь),а то сильно грузит терминал...С,уважением...
 

Вложения

  • ModStopReverse_v_7_aligator_pub v3 реверс.mq4
    56,9 КБ · Просмотры: 80

osvit

Активный участник
e-OpenByTime

Уважаемые программисты большая просьба прикрутите к советнику управление капиталом % от депо и добавьте в установку времени секунды. Заранее спасибо.
 

Вложения

  • e-OpenByTime.mq4
    16,9 КБ · Просмотры: 55

DIW35902345

Местный житель
Други ! Может кто нибудь доработать индикатор , нужно добавить - ТФ , сделать выборочным . Зарание большущее спасибо !
 

Вложения

  • Kalmanufilter.гистограма.2.mq4
    4 КБ · Просмотры: 68
Последнее редактирование:

borobor

Элитный участник

Вложения

  • Kalmanufilter.гистограма.2.mq4
    4,1 КБ · Просмотры: 140

bleike

Новичок форума
Можете переделать этого индикатора в советника ну или подкорректировать этот индикатор? он ничего не делает только отображает на графике номера меджиков со сделок. так вот из-за того что это индикатор приходится постоянно переключать таймфреймы для точности информации а хотелось бы чтобы индюк сам обновлял подобную инфу... может сделать обновление в секундах или как)) вам может виднее)
 

Вложения

  • infoMagic(2).mq4
    3,9 КБ · Просмотры: 52
Последнее редактирование:

zhserg

Местный знаток
Можете переделать этого индикатора в советника ну или подкорректировать этот индикатор? он ничего не делает только отображает на графике номера меджиков со сделок. так вот из-за того что это индикатор приходится постоянно переключать таймфреймы для точности информации а хотелось бы чтобы индюк сам обновлял подобную инфу... может сделать обновление в секундах или как)) вам может виднее)

Обновление по таймеру. Период в сек задается в настройках.
 

Вложения

  • infoMagic(2).mq4
    3,5 КБ · Просмотры: 77

Yura Vakulenko

Активный участник
Здравствуйте.. может кто-то помочь с кодом, чтоыб верно открывались и закрывались сделки.. нужно, чтобы открывалась серия ордеров и вся серия закрывалась при против сигнале. И для противоположного сигнала так же.. как нужно, показал на 2-х последних картинках ниже.. на 2-х первых картинках - показано, как сейчас работает.. помагите дописать верно код..
вот текущий код..

void OnTick()
{
//---
//работа по открытию бара
if(use_data_from_closed_candle)
{
if (Time[0] == prevtime) return;
prevtime = Time[0];
}


REVERSAL_Signal = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,0);
REVERSAL_1 = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,1);
REVERSAL_2 = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,2);
REVERSAL_1_0 =

ask = NormalizeDouble (MarketInfo(Symbol(),MODE_ASK), Digits);
bid = NormalizeDouble (MarketInfo(Symbol(),MODE_BID), Digits);
_OR_err = GetLastError();

Total_SELL = CountTrades(OP_SELL);
Total_Buy = CountTrades(OP_BUY);
total_orders = OrdersTotal();


if ( REVERSAL_Signal < Up_floor && REVERSAL_1 < Up_floor && REVERSAL_2 >= Up_floor && REVERSAL_1_2 > Up_floor) {sell_signal =1; buy_signal=0;}
if ( REVERSAL_Signal > Down_floor && REVERSAL_1 > Down_floor && REVERSAL_2 <= Down_floor && REVERSAL_3_2 < Down_floor) {buy_signal=1; sell_signal =0; }


if(prevtime && M1_buy_signal == 1 && Total_Buy>=0 && Total_Buy < MaxOrders && !reverse ) //buy order
{
if (Total_SELL>0) CLOSEORDER(OP_SELL);//Close_Orders(OP_SELL,loging);//CLOSEORDER(OP_SELL);
ticket_buy = OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging); //OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrBlue);
}

if(prevtime && M1_buy_signal == 1 && Total_SELL>=0 && Total_SELL < MaxOrders && reverse ) //buy Reverse order
{
if (Total_Buy>0) CLOSEORDER(OP_BUY);
ticket_buy = OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);//OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,0,0,"",Magic,0,clrRed);//OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);

}

if(prevtime && M1_sell_signal == 1 && Total_SELL>=0 && Total_SELL < MaxOrders && !reverse ) // sell order
{
if (Total_Buy>0) CLOSEORDER(OP_BUY);//Close_Orders(OP_BUY,loging);
ticket_sell = OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);//OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrRed);//OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);

}
if(prevtime && M1_sell_signal == 1 && Total_Buy>=0 && Total_Buy < MaxOrders && reverse ) // sell Reverse order
{
if (Total_SELL>0)CLOSEORDER(OP_SELL);
ticket_sell = OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging);//OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrBlue);//OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging);

}






}
 

Вложения

  • EURUSDproM15_0.png
    EURUSDproM15_0.png
    125,1 КБ · Просмотры: 119
  • EURUSDproM15_01.png
    EURUSDproM15_01.png
    92,3 КБ · Просмотры: 103
  • EURUSDproM15_02.png
    EURUSDproM15_02.png
    93,1 КБ · Просмотры: 91
  • EURUSDproM15_03.png
    EURUSDproM15_03.png
    115,4 КБ · Просмотры: 120

Геша5

ỔχστĦиҜ Ħ₳ ҦթტФИŢ
Прошу помочь модифицировать данный индикатор следующим образом: заменить однобарный экстремальный бар на однобарный и двухбарный - по принципу сложения двух баров и по принципу связи "или" между собой. Спасибо заранее!
вы в начале выложите открытый код,потому как вряд ли кто поможет.
 

Yura Vakulenko

Активный участник
Здравствуйте.. может кто-то помочь с кодом, чтоыб верно открывались и закрывались сделки.. нужно, чтобы открывалась серия ордеров и вся серия закрывалась при против сигнале. И для противоположного сигнала так же.. как нужно, показал на 2-х последних картинках ниже.. на 2-х первых картинках - показано, как сейчас работает.. помагите дописать верно код..
вот текущий код..

void OnTick()
{
//---
//работа по открытию бара
if(use_data_from_closed_candle)
{
if (Time[0] == prevtime) return;
prevtime = Time[0];
}


REVERSAL_Signal = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,0);
REVERSAL_1 = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,1);
REVERSAL_2 = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,2);
REVERSAL_1_0 =

ask = NormalizeDouble (MarketInfo(Symbol(),MODE_ASK), Digits);
bid = NormalizeDouble (MarketInfo(Symbol(),MODE_BID), Digits);
_OR_err = GetLastError();

Total_SELL = CountTrades(OP_SELL);
Total_Buy = CountTrades(OP_BUY);
total_orders = OrdersTotal();


if ( REVERSAL_Signal < Up_floor && REVERSAL_1 < Up_floor && REVERSAL_2 >= Up_floor && REVERSAL_1_2 > Up_floor) {sell_signal =1; buy_signal=0;}
if ( REVERSAL_Signal > Down_floor && REVERSAL_1 > Down_floor && REVERSAL_2 <= Down_floor && REVERSAL_3_2 < Down_floor) {buy_signal=1; sell_signal =0; }


if(prevtime && M1_buy_signal == 1 && Total_Buy>=0 && Total_Buy < MaxOrders && !reverse ) //buy order
{
if (Total_SELL>0) CLOSEORDER(OP_SELL);//Close_Orders(OP_SELL,loging);//CLOSEORDER(OP_SELL);
ticket_buy = OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging); //OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrBlue);
}

if(prevtime && M1_buy_signal == 1 && Total_SELL>=0 && Total_SELL < MaxOrders && reverse ) //buy Reverse order
{
if (Total_Buy>0) CLOSEORDER(OP_BUY);
ticket_buy = OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);//OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,0,0,"",Magic,0,clrRed);//OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);

}

if(prevtime && M1_sell_signal == 1 && Total_SELL>=0 && Total_SELL < MaxOrders && !reverse ) // sell order
{
if (Total_Buy>0) CLOSEORDER(OP_BUY);//Close_Orders(OP_BUY,loging);
ticket_sell = OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);//OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrRed);//OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);

}
if(prevtime && M1_sell_signal == 1 && Total_Buy>=0 && Total_Buy < MaxOrders && reverse ) // sell Reverse order
{
if (Total_SELL>0)CLOSEORDER(OP_SELL);
ticket_sell = OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging);//OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrBlue);//OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging);

}






}

тут есть нек. ошибки в коде..
вот так вернее.. Фун
void OnTick()
{
//---
//работа по открытию бара
if(use_data_from_closed_candle)
{
if (Time[0] == prevtime) return;
prevtime = Time[0];
}


REVERSAL_Signal = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,0);
REVERSAL_1 = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,1);
REVERSAL_2 = iCustom(NULL,0,"REVERSAL",timeframe,Main_Period,Main_Price,Down_floor,Up_floor,Length,Phase,0,2);


ask = NormalizeDouble (MarketInfo(Symbol(),MODE_ASK), Digits);
bid = NormalizeDouble (MarketInfo(Symbol(),MODE_BID), Digits);
_OR_err = GetLastError();

Total_SELL = CountTrades(OP_SELL);
Total_Buy = CountTrades(OP_BUY);
total_orders = OrdersTotal();


if ( REVERSAL_Signal < Up_floor && REVERSAL_1 < Up_floor && REVERSAL_2 >= Up_floor ) {sell_signal =1; buy_signal=0;}
if ( REVERSAL_Signal > Down_floor && REVERSAL_1 > Down_floor && REVERSAL_2 <= Down_floor ) {buy_signal=1; sell_signal =0; }


if(prevtime && buy_signal == 1 && Total_Buy>=0 && Total_Buy < MaxOrders && !reverse ) //buy order
{
if (Total_SELL>0) CLOSEORDER(OP_SELL);//Close_Orders(OP_SELL,loging);//CLOSEORDER(OP_SELL);
ticket_buy = OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging); //OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrBlue);
}

if(prevtime && buy_signal == 1 && Total_SELL>=0 && Total_SELL < MaxOrders && reverse ) //buy Reverse order
{
if (Total_Buy>0) CLOSEORDER(OP_BUY);
ticket_buy = OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);//OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,0,0,"",Magic,0,clrRed);//OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);

}

if(prevtime && sell_signal == 1 && Total_SELL>=0 && Total_SELL < MaxOrders && !reverse ) // sell order
{
if (Total_Buy>0) CLOSEORDER(OP_BUY);//Close_Orders(OP_BUY,loging);
ticket_sell = OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);//OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrRed);//OrderSendReliable(Symbol(),OP_SELL,Lots,bid,Slippage,0,0,"",Magic,0,clrRed,loging);

}
if(prevtime && sell_signal == 1 && Total_Buy>=0 && Total_Buy < MaxOrders && reverse ) // sell Reverse order
{
if (Total_SELL>0)CLOSEORDER(OP_SELL);
ticket_sell = OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging);//OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrBlue);//OrderSendReliable(Symbol(),OP_BUY,Lots,ask,Slippage,0,0,"",Magic,0,clrGreen,loging);

}






}
 

marattmb

Гуру форума
Уважаемые программисты. Нельзя ли добавить стрелки к данному индикатору при пересечении зеленой линии красной.
 

Вложения

  • TDI Red Green.mq4
    8,6 КБ · Просмотры: 67

Bullra

Новичок
Уважаемы программисты, просьба вывести в переменные возможность выставления начала точки отсчета.

PHP:
extern datetime Start_calculating_DATE = D'2014.11.14 00:00'
 

Вложения

  • Accumulation.mq4
    2,4 КБ · Просмотры: 55
Последнее редактирование:
Верх