Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В сервисе Фриланс выполнено тысячи оплачиваемых заказов. Присоединяйся!
Bogdan_H
57
Bogdan_H 2015.04.26 16:06 

Помогите пожалуйста, индикаторы отрисовываются по отдельности на ура если один из них закомментирован //ExtMapBuffer2[i]=iBandsOnArray(macd,0,10,1,0,MODE_MAIN,i);, но если включить оба то ничего не работает! Дайте совет. 

 

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DarkGray
#property indicator_color2 DodgerBlue

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double macd[1000];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(0,DRAW_ARROW,0,0,clrRed);
   SetIndexArrow(0,159);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(1,DRAW_LINE);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
color color1 = Red;
color color2 = White;
color color3 = Red;
color color4 = White;

 ArrayResize(macd,1000);
 ArraySetAsSeries(macd,true); 
  int i;
        for( i=999; i>=0; i--)          
        {
        macd[i]=iMACD(Symbol(),0,10,16,21,PRICE_CLOSE,MODE_MAIN,i);
        }
        
 
 
 if(i<=1)
 {     
     for( i=0; i<=999; i++)          
        {
         ExtMapBuffer2[i]=iBandsOnArray(macd,0,10,1,0,MODE_MAIN,i);
           
         ExtMapBuffer1[i] = iCustom(Symbol(),0,"Heiken Ashi", color1,color2,color3,color4,1,i);
      }    
   
 }

         
         
   return(rates_total);
  }
Dmitry Fedoseev
41262
Dmitry Fedoseev 2015.04.26 16:19  

Неужели в codebase мало примеров индикаторов, что бы изобретать свой велосипед, да еще такой хитровымудренный? Неправильно все.

Алексей Тарабанов
7220
Алексей Тарабанов 2015.04.26 20:45  
А если закомментировать только ExtMapBuffer1[i] = iCustom(Symbol(),0,"Heiken Ashi", color1,color2,color3,color4,1,i); ?
Bogdan_H
57
Bogdan_H 2015.04.27 04:34  
tara:
А если закомментировать только ExtMapBuffer1[i] = iCustom(Symbol(),0,"Heiken Ashi", color1,color2,color3,color4,1,i); ?
То отлично отрисовывается ExtMapBuffer2[i]=iBandsOnArray(macd,0,10,1,0,MODE_MAIN,i); и наоборот, но поверх друг-друга отрисовываться они не хотят и я не понимаю почему, я же использую разные буферы.
Vitalie Postolache
11138
Vitalie Postolache 2015.04.27 15:27  

Маленький совет: массив macd[] тоже в виде буфера оформить попробуйте (непрорисовываемый, для расчётов), иногда помогает.

И мне интересно, зачем массив оформлять как таймсерию, а потом считать его "наоборот"? А потом ещё раз наоборот из него считать уже iBandsOnArray.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий