Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1527

 
MakarFX:

исходя из показаний строй логику для своего индикатора

неа, так не подходит. 

вот . 1 индикатор показывает всегда число - 2147483647. как только сигнал - показывает другое число на одном из буферов. В этом я разобрался.

а вот второй индикатор всегда показывает или 0 или  2147483647 на 2 буферах одновременно

Файлы:
 
Вроде разобрался. По идее должно быть так
  
     if (in1b<2147483647 && in2b>0 && in2b<2147483647)
           Sell[i]=low[i];
     if (in1s<2147483647 && in2s>0 && in2s<2147483647)
            Buy[i]=high[i];
 
jarikn:
Вроде разобрался. По идее должно быть так

в данном случае конкретика не нужна, т.е. просто если >0

 
MakarFX:

в данном случае конкретика не нужна, т.е. просто если >0

но вот что в буферах когда нет сигнала. не думаю что >0 тут подойдет. но сейчас попробую

Файлы:
 
jarikn:

но вот что в буферах когда нет сигнала. не думаю что >0 тут подойдет. но сейчас попробую

у первого индикатора при отсутствии сигнала значение EMPTY_VALUE

надо сделать так

   if(iCustom(NULL,0,"in1",1,i)>0&&iCustom(NULL,0,"in1",1,i)<Bid*2&&iCustom(NULL,0,"in2",0,i)>0) // индикатор стрелка вниз

   if(iCustom(NULL,0,"in1",0,i)>0&&iCustom(NULL,0,"in1",0,i)<Bid*2&&iCustom(NULL,0,"in2",1,i)>0) // индикатор стрелка вверх
 

Помогите, пожалуйста, решить такую проблему с тестером. Тестирую открытие позиции для CME на фьючерсе EUR/USD

На росте рынка в тестере открывается длинная позиция на пробой со своим стопом, сделка получает тикет #2. Рынок вырос и открывается следующая позиция со своим стопом, сделка получает тикет #3 в тестере.

Когда рынок идет против позиции #3 и доходит до ее стопа, по идее #3 должна закрыться по стопу, а #2 должна остаться висеть, дожидаясь, когда цена дойдет до стопа #2. Но тестер почему-то при срабатывании стопа #3, закрывает и позу #2.

Код для mql5 такой

MqlTradeRequest request={};
MqlTradeResult  result={};
                                 
request.action = TRADE_ACTION_DEAL; //Вход рынку
request.symbol = Symbol();
request.volume = 1.0; //Кол-во фьючей
request.type   = ORDER_TYPE_BUY; //Купить
request.price  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);   
request.sl     = NormalizeDouble(sl,5); // Стоп

bool check     = OrderSend(request,result);


 
NastyaMaley:

Помогите, пожалуйста, решить такую проблему с тестером. Тестирую открытие позиции для CME на фьючерсе EUR/USD

На росте рынка в тестере открывается длинная позиция на пробой со своим стопом, сделка получает номер 2. Рынок вырос и открывается следующая позиция со своим стопом, сделка получает номер 3 в тестере.

Когда рынок идет против позиции #3 и доходит до ее стопа, по идее #3 должна закрыться по стопу, а #2 должна остаться висеть, дожидаясь, когда цена дойдет до стопа #2. Но тестер почему-то при срабатывании стопа #3, закрывает и позу #2.

Код для mql5 такой


Я  особо не разбираюсь mql5 , но я не вижу где идет выбор ордера для закрытия
 
MakarFX:

у первого индикатора при отсутствии сигнала значение EMPTY_VALUE

надо сделать так

да, точно. Это оно. спасибо большое

 

Вроде стала понятна причина такого поведения тестера. Тип демо-счета, на котором тестируется робот - Netting. Поэтому если срабатывает стоп, указанный при открытии позиции #3, то он закроет весь объем позы. Поэтому по стопу из #3, закрывает и #2, хотя у нее при открытии устанавливался для нее свой отдельный стоп.

При типе счета Хеджинговый, все бы работало как в старом добром mql4.

 
NastyaMaley:

Помогите, пожалуйста, решить такую проблему с тестером. Тестирую открытие позиции для CME на фьючерсе EUR/USD

На росте рынка в тестере открывается длинная позиция на пробой со своим стопом, сделка получает тикет #2. Рынок вырос и открывается следующая позиция со своим стопом, сделка получает тикет #3 в тестере.

Когда рынок идет против позиции #3 и доходит до ее стопа, по идее #3 должна закрыться по стопу, а #2 должна остаться висеть, дожидаясь, когда цена дойдет до стопа #2. Но тестер почему-то при срабатывании стопа #3, закрывает и позу #2.

Код для mql5 такой

Не надо пользоваться стопами. Вместо стопов надо ставить отложенные ордера противоположного направления.

Причина обращения: