Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Скачай MetaTrader 5 для iPad и торгуй в любом месте!
Yurij Izyumov
16256
Yurij Izyumov 2016.03.29 09:40 

Индикатор простенький, но т.к. он основан на МАшках , то он перерисовывает последний десяток-два баров, бился бился, никак не пойму как его сделать чтобы он не перерисовывал, а оставлял те сигналы на старых уже обсчитанных барах какие они есть

и что б сигналы на истории и визуализации (реале) совпадали - хотя думаю это невозможно, т.к. МА в истории не перерисовывают 

 

Файлы:
Dmitry Fedoseev
42352
Dmitry Fedoseev 2016.03.29 09:54  
Нужны промежуточные значение скользящих средних средних. Те, которые возникали в процессе формирования бара. 
Vladislav Andruschenko
89224
Vladislav Andruschenko 2016.03.29 11:42  

попробуйте сделать цикл не с 0 а с 1

   for(i=1; i<limit; i++)

 ведь все индикаторы на текущем баре рисуют и это как бы вполне логично ибо бар только строится. 

а машки перерисовываться не могут на 1 баре  

 

еще чтобы не перерисовывал можно сделать так:

      if(Naprav0!=Naprav60 || Naprav0!=Naprav240 || Naprav0!=Naprav1440 || Naprav0!=NapravWeek)
        {
         continue;
           }else{
         if(Naprav0=="Buy" && DeltaBuff2[i]==EMPTY_VALUE){ DeltaBuff2[i]=iClose(Symbol(),0,i); }
         if(Naprav0=="Sell"&& DeltaBuff1[i]==EMPTY_VALUE){ DeltaBuff1[i]=iClose(Symbol(),0,i); }
        }
делал так для одного индикатора, чтоб не врал.
т.е. если буфер еще не заполнен -только тогда заполняем, а иначе не перерисовываем его данные
Dmitry Fedoseev
42352
Dmitry Fedoseev 2016.03.29 11:58  
Vladislav Andruschenko:

попробуйте сделать цикл не с 0 а с 1

...

Не поможет. В индикаторе обращение к старшим таймфреймом. Тогда уж все шифты увеличивать на 1, но тогда показания изменятся. 
Vladislav Andruschenko
89224
Vladislav Andruschenko 2016.03.29 12:04  
Dmitry Fedoseev:
Не поможет. В индикаторе обращение к старшим таймфреймом. Тогда уж все шифты увеличивать на 1, но тогда показания изменятся. 
тогда второй вариант.
Dmitry Fedoseev
42352
Dmitry Fedoseev 2016.03.29 12:15  
Vladislav Andruschenko:
тогда второй вариант.
Тоже не то. Нужно с использованием текущего таймфрейма вычислять МА старшего таймфрейма.
Maxim Kuznetsov
9217
Maxim Kuznetsov 2016.03.29 12:43  
Dmitry Fedoseev:
Тоже не то. Нужно с использованием текущего таймфрейма вычислять МА старшего таймфрейма.

в данном конкретном случае стоит(и вполне обоснованно) вычислять MA "исскуственного/сдвинутого старшего" таймфема а-ла H1+5M.. но это lot-of-code :-)

Dmitry Fedoseev
42352
Dmitry Fedoseev 2016.03.29 12:56  
Maxim Kuznetsov:

в данном конкретном случае стоит(и вполне обоснованно) вычислять MA "исскуственного/сдвинутого старшего" таймфема а-ла H1+5M.. но это lot-of-code :-)

Куда сдвинутого? зачем сдвинутого? Зачем искусственного, да еще H1+M5? 

Обычного H1, но с использованием M5 для формирующегося бара H1, что бы на истории можно было рассчитать промежуточные значения. 

Alexander Puzanov
29099
Alexander Puzanov 2016.03.29 13:58  
Vladislav Andruschenko:
т.е. если буфер еще не заполнен -только тогда заполняем, а иначе не перерисовываем его данные
Не проще цены Close заменить на Open безо всяких доп проверок?
Vladislav Andruschenko
89224
Vladislav Andruschenko 2016.03.29 14:01  
речь шла о том, чтобы индикатор не перерисовывал свой сигнал если его нарисовал, я посоветовал вариант проверки - если буфер уже имеет стрелку - не трогать ее. 
Alexander Puzanov
29099
Alexander Puzanov 2016.03.29 14:31  
Vladislav Andruschenko:
речь шла о том, чтобы индикатор не перерисовывал свой сигнал если его нарисовал, я посоветовал вариант проверки - если буфер уже имеет стрелку - не трогать ее. 
Это не совсем так - он не будет её перерисовать в реальном времени, а после переинициализации всё равно перерисует, бо возьмёт уже изменившуюся цену Close. Если просто поменять Close на Open, результат будет таким же как у вас со всеми проверочными наворотами, но перерисовки после следующего OnInit'а не будет
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий