Советники: Binario

 

Binario:

Работа с Buy stop и Sell stop отложенными ордерами. Канал из двух индикаторов iMA (Moving Average, MA).

Торговая идея: построение канала из двух индикаторов iMA (Moving Average, MA) - один строится по ценам PRICE_HIGH, а второй по PRICE_LOW. Отложенные ордера Buy stop и Sell stop размещаются по границам канала. Расчет на то, что будет пробой (ловля сильного движения).

Binario signals

Эксперт может работать в двух режимах: на каждом тике или только в момент рождения нового бара. За режим работы отвечает параметр Expert Every Tick. Пример влияния параметра Expert Every Tick, на примере EURUSD,D1:

Binario Expert Every Tick false

Binario Expert Every Tick true

Обратите внимание, что у данной стратегии бывает мертвый сезон - время когда не будет ни одного входа - период безоткатного движения на валютной паре:

Binario Dead season

Автор: Vladimir Karputov

 
Эксперт не работает. Ошибка при компиляции.
 
adriana cs :
Эксперт не работает. Ошибка при компиляции.

Язык MQL5 постоянно развивается и, как следствие, становится все более строгим. Замените функцию на исправленную:

//+------------------------------------------------------------------+
//| Лоты или риск в процентах для сделки со свободной маржой |
//+------------------------------------------------------------------+
bool LotsOrRisk(const double lots,const double risk,const int digits_adjust)
  {
   if(lots<0.0 && risk<0.0)
     {
      Print(__FUNCTION__,",ERROR: Parameter(\"lots\" or \"risk\") can't be less than zero");
      return(false);
     }
   if(lots==0.0 && risk==0.0)
     {
      Print(__FUNCTION__,", ERROR: Trade is impossible: You have set \"lots\" == 0.0 and \"risk\" == 0.0");
      return(false);
     }
   if(lots>0.0 && risk>0.0)
     {
      Print(__FUNCTION__,", ERROR: Trade is impossible: You have set \"lots\" > 0.0 and \"risk\" > 0.0");
      return(false);
     }
   if(lots>0.0)
     {
      string err_text="";
      if(!CheckVolumeValue(lots,err_text))
        {
         Print(__FUNCTION__,", ERROR: ",err_text);
         return(false);
        }
     }
   else if(risk>0.0)
     {
      if(m_money!=NULL)
         delete m_money;
      m_money=new CMoneyFixedMargin;
      if(m_money!=NULL)
        {
         if(!m_money.Init(GetPointer(m_symbol),Period(),m_symbol.Point()*digits_adjust))
            return(false);
         m_money.Percent(risk);
        }
      else
        {
         Print(__FUNCTION__,", ERROR: Object CMoneyFixedMargin is NULL");
         return(false);
        }
     }
//---
   return(true);
  }