Советники: Delayer

 

Delayer:

Торговая стратегия на пересечении двух iMA (Moving Average, MA) и контроль прохода цены от точки пересечения

Delayer

Автор: Vladimir Karputov

 

Володя, привет!

158-я строка,

   ExtSignalIndent   = InpSignalIndent    * ExtAdjustedPoint;

последнее известное место, где оставил след путь Signal Indent.

Покажи, пожалуйста, на что далее влияет ExtSignalIndent?

 
Aleksei Mikhanoshin:

Володя, привет!

158-я строка,

последнее известное место, где оставил след путь Signal Indent.

Покажи, пожалуйста, на что далее влияет ExtSignalIndent?

Спасибо за сообщение. Теперь все правильно (версия 1.001).

//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool SearchTradingSignals(void)
  {
   double fast[],slow[];
   MqlRates rates[];
   ArraySetAsSeries(fast,true);
   ArraySetAsSeries(slow,true);
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iMA_Fast,0,start_pos,count,fast) || 
      !iGetArray(handle_iMA_Slow,0,start_pos,count,slow) || 
      CopyRates(m_symbol.Name(),0,start_pos,count,rates)!=count)
     {
      return(false);
     }

   int size_need_position=ArraySize(SNeedPosition);
   if(fast[1]<slow[1] && fast[0]>slow[0])
     {
      ExtSignal=POSITION_TYPE_BUY;
      ExtSignalBid=m_symbol.Bid();
      ExtSignalAsk=m_symbol.Ask();
     }
   else if(fast[1]>slow[1] && fast[0]<slow[0])
     {
      ExtSignal=POSITION_TYPE_SELL;
      ExtSignalBid=m_symbol.Bid();
      ExtSignalAsk=m_symbol.Ask();
     }

   if(ExtSignal==POSITION_TYPE_BUY && m_symbol.Ask()-ExtSignalAsk>=ExtSignalIndent)
     {
      if(!InpReverse)
        {
         ArrayResize(SNeedPosition,size_need_position+1);
         SNeedPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
         return(true);
        }
      else
        {
         ArrayResize(SNeedPosition,size_need_position+1);
         SNeedPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
         return(true);
        }
     }
   if(ExtSignal==POSITION_TYPE_SELL && ExtSignalBid-m_symbol.Bid()>=ExtSignalIndent)
     {
      if(!InpReverse)
        {
         ArrayResize(SNeedPosition,size_need_position+1);
         SNeedPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
         return(true);
        }
      else
        {
         ArrayResize(SNeedPosition,size_need_position+1);
         SNeedPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
         return(true);
        }
     }
//---
   return(true);
  }
 

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

К примеру: получен сигнал; открылась сделка; сделка закрывается по СЛ или трейлинг стопом (не важно); новая сделка не будет открыта, пока не появится новое пересечение двух МА (если возможно, то настраивать ограничение - 1, 2 или 3 сделки за одно пересечение МА). 

Чтобы не было ситуации, когда сделка открывается по тому же пересечению МА, что и предыдущая, но уже перед самым разворотом. Т.к. она закроется по СЛ и может забрать всю полученную до этого прибыль.

 
Konstantin Demidov:

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

К примеру: получен сигнал; открылась сделка; сделка закрывается по СЛ или трейлинг стопом (не важно); новая сделка не будет открыта, пока не появится новое пересечение двух МА (если возможно, то настраивать ограничение - 1, 2 или 3 сделки за одно пересечение МА). 

Чтобы не было ситуации, когда сделка открывается по тому же пересечению МА, что и предыдущая, но уже перед самым разворотом. Т.к. она закроется по СЛ и может забрать всю полученную до этого прибыль.

Дайте настройки:

укажите дату на графике и укажите что именно на этом участке не так...
Причина обращения: