Здравствуйте! Прошу помочь в решении проблемы. Вопрос казалось бы простенький. Но и так и сяк... и...
Вот пример кода:
Как только я переношу индикатор на график - все ок. Выглядит он так (скрин 1.jpg):

Но при поступлении данных нового тика - линиия SBER_close[t+1] непонятным образом
"трансформируется" и возникает провал на первой свече (которая идет за нулевой). Глюк вот такой (скрин 2.jpg):

Как избавиться от этой трансформации? почему она возникает?
- Анализ свечей нескольких валютных пар
- Small Moneymanagement-Indicator разрушен новым MQL4
- Индикаторы: AllAverages v2.5
#property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 White #property indicator_color2 Turquoise double ExtMapBuffer1[]; double ExtMapBuffer2[]; int init() { IndicatorBuffers(2); SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1); SetIndexBuffer(1,ExtMapBuffer2); return(0); } // int start() { int i; int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(i=0;i<limit;i++) { ExtMapBuffer1[i] = iClose("#SBER", 0, i); ExtMapBuffer2[i] = iClose("#SBER", 0, i+1); } return(0); }вот как-то так.
SofTAA:
вот как-то так.
Все дело в промежуточном массиве SBER_close[i] - он очень нужен. Может быть без него и будет выводиться адекватно на график, но дальнейшая обработка данных производится именно по нему. Как убрать провалы сохранив SBER_close[i]? Т.е. как организовать вывод в буфер данных (ExtMapBuffer2) именно из SBER_close[i+1] и (ExtMapBuffer1) из SBER_close[i] ???
вот как-то так.
//+------------------------------------------------------------------+ //| Test_copy.mq4 | //| | //| | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 White #property indicator_color2 Turquoise double ExtMapBuffer1[]; double ExtMapBuffer2[]; int i, t; double SBER_close[]; int init() { IndicatorBuffers(2); SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1); SetIndexBuffer(1,ExtMapBuffer2); ArrayResize(SBER_close,Bars); ArrayInitialize(SBER_close,0.0); } int start() { int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(i=0;i<limit+1;i++) { SBER_close[i] =iClose(Symbol(),0,i); } t=0; for(i=0;i<limit;i++) { ExtMapBuffer1[i]=SBER_close[i]; ExtMapBuffer2[i]=SBER_close[i+1]; } return(0); } //+------------------------------------------------------------------+
turbo_tr:
Все дело в промежуточном массиве SBER_close[i] - он очень нужен. Может быть без него и будет выводиться адекватно на график, но дальнейшая обработка данных производится именно по нему. Как убрать провалы сохранив SBER_close[i]? Т.е. как организовать вывод в буфер данных (ExtMapBuffer2) именно из SBER_close[i+1] и (ExtMapBuffer1) из SBER_close[i] ???
Все дело в промежуточном массиве SBER_close[i] - он очень нужен. Может быть без него и будет выводиться адекватно на график, но дальнейшая обработка данных производится именно по нему. Как убрать провалы сохранив SBER_close[i]? Т.е. как организовать вывод в буфер данных (ExtMapBuffer2) именно из SBER_close[i+1] и (ExtMapBuffer1) из SBER_close[i] ???
При новом тике массиву SBER_close задаётся размер 2, маловата будет© :)
SBER_close возможно будет удобнее сделать индикаторным буфером.
для понимания происходящего добавьте Сomment ("Limit=",limit); после вычисления limit=Bars-counted_bars;
Огромное спасибо! Участники, в Вашу честь по бокалу вина за 1 пост :)

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь