динамик канала боллинджера mql5 - страница 2

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих

aleks557, 2014.09.17 06:48

нашел в статьях пример информационной панельки сделана в виде советника, подскажите как мне ее прописать в моем советнике , самостоятельно пробывал не получается,что то делаю не так

вот фаил панельки 


Файлы:
 
вот вобственно чем помогли

// Входные параметры.
// блок изменений от valeryk - начало
input string _0 = "Filter properties";//***Настройки фильтра Bollinger Bands***
input string _1 = "Width of the channel";//***Ширина канала***
input int Width = 100; //Ширина пункт, 0=откл
input string _2 = "Dynamics of the channel";//***Динамика канала***
input int             BarsForCalc = 500 ; // вычесленную на барах
input bool         UseCalcForOpen = true;//%Ширины открытия от расчета вкл
input bool        UseCalcForClose = true;//%Ширины закрытия от расчета вкл
input double  PercentFromCalcOpen = 10; //%Ширины открытия от расчета 
input double PercentFromCalcClose = 10; //%Ширины закрытия от расчета 
// блок изменений от valeryk - конец
// блок изменений от valeryk - начало
void OnDeinit(const int reason)
  {
//input int             BarsForCalc = 83 ; 
//input bool         UseCalcForOpen = true;
//input bool        UseCalcForClose = true;
//input double  PercentFromCalcOpen = 12;
//input double PercentFromCalcClose = 444;
  }




//|Фильтр  от valeryk                                           |
//+------------------------------------------------------------------+
void FiltrOp(bool& openfl,bool& closefl)
  {
   double Up[],Dn[]; // 
   ArraySetAsSeries(Up,true);// 
   ArraySetAsSeries(Dn,true);// 
// капируем в буфер верх?
   CopyBuffer(g_hBollingerBands,UPPER_BAND,0,MathMax(BarsForCalc+1,1),Up);
// капируем в буфер низ?
   CopyBuffer(g_hBollingerBands,LOWER_BAND,0,MathMax(BarsForCalc+1,1),Dn);
 // функция  расчета ширины
   if(Width<0){if(int((Up[0]-Dn[0])/_Point)>Width)openfl=false;}
   if((openfl && UseCalcForOpen) || UseCalcForClose)
     {
      double temp=0.0,cur=Up[0]-Dn[0];
      int i=0;
      for(i=1;i<=BarsForCalc;i++)temp+=(Up[i]-Dn[i]);
      temp/=BarsForCalc;

      if(openfl && UseCalcForOpen){if(!(cur-(temp+((temp/100)*PercentFromCalcOpen))>DBL_EPSILON))openfl=false;}

      if(UseCalcForClose){if(!(cur-(temp-((temp/100)*PercentFromCalcClose))>DBL_EPSILON))closefl=true;}
      Comment("open =   ",openfl,"\nclose =   ",closefl);
     }  
      
   
  }

//+------------------------------------------------------------------+
// блок изменений от valeryk - конец
// если есть незавершённая транзакция - выходим
        if(g_bTradeIsInProcess == true)
                return;
                 // блок изменений от valeryk - начало
   bool openfl=true,closefl=false;
   FiltrOp(openfl,closefl);
   // блок изменений от valeryk - конец

// доливаемся
                                         if(openfl)  // valeryk
                                        MarketOrder(_Symbol, POSITION_TYPE_BUY, fLot, 0, 0, 0, i_nSlippage);
// доливаемся
                                         if(openfl)  // valeryk
                                        MarketOrder(_Symbol, POSITION_TYPE_SELL, fLot, 0, 0, 0, i_nSlippage);


 как мне визуально увидеть где фильтр подает сигнал на открытие и на закрытие если нет данных?

 OBJ_ARROW_SELL..OBJ_ARROW_BUY вот что нашел ,в справочнике а как прописать не знаю
 

Ну например можно в момент сигнала нарисовать на графике графический любой объект Типы объектов.

 

Я конечно не гуру,  Но вот сомнительно что bb можно описать.

Много времени убил, и пришел к выводу- только глазками 

Руку набьешь - как семечки.

Советую на минутку в конец американской сессии

Рука набивается очень быстро. 

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