ошибку выдаёт - 2019.10.31 12:32:37.237 Lex_Bands USDCHF,H1: array out of range in 'Lex_Bands.mq4' (79,43)
что тут - наверное не правильно
dOtklSumMax[j]=dOtklSumMax[j-1]+dOtklSumMax[j];
ошибку выдаёт - 2019.10.31 12:32:37.237 Lex_Bands USDCHF,H1: array out of range in 'Lex_Bands.mq4' (79,43)
ошибку выдаёт - 2019.10.31 12:32:37.237 Lex_Bands USDCHF,H1: array out of range in 'Lex_Bands.mq4' (79,43)
что тут - наверное не правильно
dOtklSumMax[j]=dOtklSumMax[j-1]+dOtklSumMax[j];
А если там не правильно, тогда как посчитать правильно сумму?
удаляю где ошибки
пока вот так получилось
а что он вообще должен показывать?
Вот то что получилось на картинке, это просто скользящая средняя типа sma, цена (low+high)/2 и периодом 20
А должен канал показать, где верхняя его граница высчитывается как эта средняя + среднеквадратичное отклонение, которое считается не на каждом баре, а выбирается максимум из 5 баров, на интервале в 20 баров, т.е. будет 4 максимума. и из этих максимумов считается среднее квадратичное отклонение. Вот конкретно в этой строчке находим сумму этих отклонений
- 2019.10.31
- www.mql5.com
вот теперь нет ошибок - можно с этого места продолжать
//+------------------------------------------------------------------+ //| Lex_Bands.mq4 | //| Lex | //| | //+------------------------------------------------------------------+ #property copyright "Lex" #property strict #property indicator_chart_window #property indicator_buffers 3 #property indicator_plots 3 //--- plot Middle_Line #property indicator_label1 "Middle_Line" #property indicator_type1 DRAW_LINE #property indicator_color1 clrLightSeaGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 2 //--- plot Up_Line #property indicator_label2 "Up_Line" #property indicator_type2 DRAW_LINE #property indicator_color2 clrLightSeaGreen #property indicator_style2 STYLE_SOLID #property indicator_width2 2 //--- plot Down_Line #property indicator_label3 "Down_Line" #property indicator_type3 DRAW_LINE #property indicator_color3 clrLightSeaGreen #property indicator_style3 STYLE_SOLID #property indicator_width3 2 //--- indicator parameters input int InpBandsPeriod=20; // MA Period input int OtklPeriod=20; // Period Otkloneniya input int OtklShag=5; // Shag Otkloneniya input int MA_Type=0; // MA Type 0 - SMA, 1 - EMA, 2 - SMMA, 3 - LWMA input int Applied_Price=4; // 0 - PRICE_CLOSE, 1 - PRICE_OPEN, 2 - PRICE_HIGH, 3 - PRICE_LOW, 4 - PRICE_MEDIAN, 5 - PRICE_TYPICAL, 6 - PRICE_WEIGHTED //--- indicator buffers double Middle_LineBuffer[]; double Up_LineBuffer[]; double Down_LineBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { IndicatorBuffers(7); SetIndexBuffer(0,Middle_LineBuffer); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(1,Up_LineBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(2,Down_LineBuffer); SetIndexStyle(2,DRAW_LINE); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars = IndicatorCounted(); if(counted_bars < 0) return(-1); if(counted_bars > 0) counted_bars--; int limit = Bars - counted_bars; if(counted_bars==0) limit--; double dOtklSumMax[]; double SrOtklMax[]; double dOtklSumMin[]; double SrOtklMin[]; for(int i=1;i<=limit;i++) { for(int j=i;j<=i+OtklPeriod;j=j+OtklShag) { double max=High[iHighest(NULL,0,MODE_HIGH,OtklShag,i)]; double min=Low[iLowest(NULL,0,MODE_HIGH,OtklShag,i)]; double Otklmax=max-iMA(NULL,0,InpBandsPeriod,0,MA_Type,Applied_Price,i); double Otklmin=iMA(NULL,0,InpBandsPeriod,0,MA_Type,Applied_Price,i)-min; double dOtklmax=Otklmax*Otklmax; double dOtklmin=Otklmax*Otklmax; } Middle_LineBuffer[i]=iMA(NULL,0,InpBandsPeriod,0,MA_Type,Applied_Price,i); } return(0); } //+------------------------------------------------------------------+
вот теперь нет ошибок - можно с этого места продолжать
вот теперь нет ошибок - можно с этого места продолжать
Ошибка кроется видимо, во всяком случае одна из, в суммировании вот этих квадратов отклонений для расчете среднеквадратичного отклонения. Но я не могу вдуплить как это правильно просуммировать.
Ошибка кроется в выходе за пределы массива, о чем и говорит компилятор.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования