• Обзор
  • Отзывы
  • Обсуждение

MicroTrendCheckerMT5

Сигнальный индикатор MicroTrendChecker отслеживает движения цены на графике терминала по валютной паре. Пока нет тренда, возвращает уровни от Ask на значение points вверх и соответственно от Bid на значение points вниз.


Входные параметры

  • MaxSpread – максимальный спред (рекомендуется ставить его больше среднего спреда по инструменту), необходимо для фильтрации расширения спреда во время новостей.
  • *wits – первый параметр индикатора (целочисленное положительное значение от 1 и больше);
  • *body – второй параметр индикатора (целочисленное положительное значение от 1 и больше), как правило больше значения *wits;
  • *sense – третий параметр индикатора (целочисленное положительное значение от 1 и больше);
  • *points – количество пунктов отступа от текущих цен (Ask/Bid);
  • *delta – значение оценки тренд/флет (дробное значение от 0.001 и больше);
  • tracker – переключатель режимов слежения за ценой (принимаемые значения true/false). Если введено значение true, то в буферах индикатора никогда не будет пустых значений (EMPTY_VALUE), если false, то в буферах индикатора как правило будут появляться пустые значения при тренде, при этом новые метки индикатора на графике не будут фиксироваться во время формирования бара.


Пример использования индикатора в коде советника

input int _MaxSpread=30;
input int     _size0=2; //*wits
input int     _size1=21;//*body
input int     _size2=2; //*sense
input int     _point=10;//*points
input double  _dlt=1;   //*delta
input bool _track=true;

int    Handle_s;     // handle of mTCheck  for sellstop_orders
double Val_s[];      // array of mTCheck for sellstop_orders
int    Handle_b;     // handle of mTCheck  for buystop_orders
double Val_b[];      // array of mTCheck for buystop_orders
//
int OnInit()
  {

   return(INIT_SUCCEEDED);
  }
//
void OnDeinit(const int reason)
  {

  }
//
void OnTick()
  {

   if(PositionsTotal()>0)TreilingPositions();

   if(PositionsTotal()<1 && OrdersTotal()<1)
     {
      YourTradeFunc(_SellStopValue());
      YourTradeFunc(_BuyStopValue());
     }

   if(PositionsTotal()<1 && OrdersTotal()>0)
     {
      ModifyOrder(_SellStopValue());
      ModifyOrder(_BuyStopValue());
     }

   if(PositionsTotal()>0 && OrdersTotal()>0)
     {
      DeleteOrders();
     }

  }
//
double _SellStopValue()
  {
   double res;
   int    i,k=Bars(Symbol(),0);

   Handle_s=iCustom(Symbol(),Period(),"microTrendChecker",_MaxSpread,_size0,_size1,_size2,_point,_dlt,_track);
   if(Handle_s<0)
     {
      Print("Error: ",GetLastError());
     }
   ArraySetAsSeries(Val_s,true);
   CopyBuffer(Handle_s,1,0,100,Val_s);

   for(i=0; i<k; i++)
     {
      res=Val_s[i];

      if(res!=EMPTY_VALUE)
        {
         return(res);
        }
     }
   return(0);
  }
//
double _BuyStopValue()
  {
   double res;
   int    i,k=Bars(Symbol(),0);

   Handle_b=iCustom(Symbol(),Period(),"microTrendChecker",_MaxSpread,_size0,_size1,_size2,_point,_dlt,_track);
   if(Handle_b<0)
     {
      Print("Error: ",GetLastError(),"!!");
     }
   ArraySetAsSeries(Val_b,true);
   CopyBuffer(Handle_b,0,0,100,Val_b);

   for(i=0; i<k; i++)
     {
      res=Val_b[i];

      if(res!=EMPTY_VALUE)
        {
         return(res);
        }
     }
   return(0);
  }


Дополнительно

Данный индикатор используется в советнике USDCatch.

Нет отзывов