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

 
Ihor Herasko:

Если нужно взять свечу М30, которая закрылась вместе с последней закрытой свечей Н1, то это может быть свеча с индексом не только 1, но и 2. Другое дело, что тогда непонятно, почему берется цена закрытия М30, если это та же самая цена закрытия для предыдущей свечи Н1. То есть в этом случае нет смысла опрашивать цену закрытия другого ТФ, т. к. она совпадает с ценой закрытия текущего ТФ.

Как раз и нужно узнать закрытие М30 внутри Н1

Нашлась причина, контроль открытия бара. Спасибо.

 

Как в индикаторе сравнивать, в цикле, цену High[i+1] +/-10*Point с нижними фракталами?

если нашлось равенство, поставить стрелку  Buf_o[i+1]= High[i+1] ;.

 

Здравствуйте!

Хочу написать простой код стратегии по бинарам для отработки её тестирования с помощью тестера MetaTrader 4. Знаю, что полноценно втроенный тестер не тестирует бинарные стратегии, но мне надо лишь знать долю прибыльных сделок за период тестирования. Мне не удаётся задать период экспирации сделки. Использую оператор OrderSend:

OrderSend(Symbol(),OP_BUY,1,Ask,10,0,0,"5",15167,Expiration,clrGreen);

При осуществлении автоматической торговли всё работает нормально, но там по условиям брокера период экспирации задаётся в комментарии к позиции. В данном случае у меня указан комментарий "5". Это пять минут. Но тестер, естественно, не воспринимает комментарий как указание периода экспирации. На различные значения параметра Expiration тестер вообще никак не реагирует. Сначала он открывает сделки по сигналам стратегии, а потом закрывает разом все открытые за период тестирования следки в момент окончания периода тестирования. В итоге результат тестирования совершенно не корректный.

Как задать понятный тестеру период экспирации? Пока осваиваю "старый" вариант кода.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
kirson-7:

Как задать понятный тестеру период экспирации?

Закрывайте позицию если текущее время = время открытия позиции плюс 5 минут или на открытии нового бара, если период графика М5.
 

Как сделать не точное равенство цене фрактала High[i+1] +/-10*Point?

 {
//---
   if(rates_total<2) return(0);

   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      // BufferUP[i+1]=EMPTY_VALUE;
      
      //
      for(int y=i+2;y<=i+100;y++)
        {
         if(low[i+1]==iFractals(Symbol(),0,MODE_HIGH,y))estb=true;
        }
      if(estb)
        {
         BufferUP[i+1]=low[i+1]-distance*Point;//НЕПРАВИЛЬНО СТАВИТ СТРЕЛКУ
        }
      estb=0;
      //==//
      for(int y=i+2;y<=i+100;y++)
        {
         if(high[i+1]==iFractals(Symbol(),0,MODE_LOWER,y))ests=true;
        }
      if(ests)
        {
         BufferDN[i+1]=high[i+1]+distance*Point;//ПРАВИЛЬНО СТАВИТ СТРЕЛКУ
        }
      ests=0;

      //Comment("");
     }
   return(rates_total);
  }
 
bij:

Как сделать не точное равенство цене фрактала High[i+1] +/-10*Point?

Разница значений больше 10*Point, но надо учесть будет положительная или отрицательная разность.
 
bij:
Закрывайте позицию если текущее время = время открытия позиции плюс 5 минут или на открытии нового бара, если период графика М5.
А почему может не работать стандартное указание периода экспирации в списке параметров оператора OrderSend? Оно обозначено в моём примере как Expiration.
 
kirson-7:
А почему может не работать стандартное указание периода экспирации в списке параметров оператора OrderSend? Оно обозначено в моём примере как Expiration.
Это для отложенных ордеров
 
Помогите пожалуйста написать функцию : закрывать ордера от большего лота к меньшему (string Symbol, int type, bool hand orders, int Magic)
То есть выбор символа, типа, учитываются ли ручные ордера, меджик номер.


 
Приветствую Всех.Такой вопрос:Можно ли в пользовательской функции прописать открытие позиции(на пример покупка по рынынку),и обращаться к данной функции при разных сигналах на покупку??? То есть _Сигнал по MACD-обратились к данной функции -позиция открылась.  _Сигнал по мувингам-обратились к данной функции-и снова покупка....и т.д. Или в каждом конкретном случае при отработке сигнала  Надо писать ОрдерСенд(Символ,ОП_БАЙ, и.т.д.);
Причина обращения: