Проблема с ренко графиком - страница 2

 
Scriptong:

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

Другой вариант выявления нового бара - ориентироваться на количество баров:

 

 


По количеству баров ситуация точно такая же, видимо придется пробовать брать данные из hst.
 
dj_ymep:

 Была такая мысль, но все-таки хочется видеть наглядно что происходит.
Ну, так и оставьте автономный график, он же не помешает.
Более того, какое-то время желательно сравнивать значения характерных точек на графике с расчетными в советнике.
Отладчика нет, а проверять надо. Куда же денешься.
 
dj_ymep:

По количеству баров ситуация точно такая же, видимо придется пробовать брать данные из hst.
Вам что надо от автономного графика?
Если только момент появления нового "кирпича", то нет ничего проще:
- пишете примитивный индикатор, который ловит этот момент и выставляет значение в "Глобальную переменную терминала".
- навешиваете этот индюк на автономный график. И все на этом. Глобальные переменные работают на любых графиках.

Можно в индюк добавить еще OPEN и CLOSE предыдущего кирпича. Тоже в глобальных переменных.

Сам же советник сидит на обычном графике и, время от времени, проверяет эти "Глобальные переменные терминала".
 
dj_ymep:

По количеству баров ситуация точно такая же, видимо придется пробовать брать данные из hst.
К сожалению, так и не могу понять, почему у Вас не работает ни один из вариантов. У себя проверил - все работает отлично. Видимо, есть какой-то нюанс в алгоритме запуска системы, который Вы не учли. Или, наоборот, у Вас какая-то задача, которая мною упускается из виду.
 
prorab:
Игорь, я когда-то тоже пытался поставить советник на автономный график, не получилось.
Если не трудно, покажите полный текст вашего примера, который работает отлично.

Вот в чем дело - необходимо поставить советник на автономный график. Я как то упустил это в контексте разговора. Тогда дело не в самом коде программы, а в том, что на автономном графике советник не получает тики. Это решается добавлением в стандартный скрипт PeriodConverter (или в ту программу, которая создает автономный график) следующего кода вслед за обновлением графика:

SendMessageW(hwnd, mt4Message, 2, 1);

 где hwnd - дескриптор окна автономного графика,

       mt4Message:

#import "user32.dll"
        int RegisterWindowMessageW(string lpString); 
#import

int      mt4Message = RegisterWindowMessageW("MetaTrader4_Internal_Message");

 В итоге получаем такой код обновленного стандартного скрипта.

Файлы:
 
Scriptong:

Вот в чем дело - необходимо поставить советник на автономный график. Я как то упустил это в контексте разговора. Тогда дело не в самом коде программы, а в том, что на автономном графике советник не получает тики. Это решается добавлением в стандартный скрипт PeriodConverter (или в ту программу, которая создает автономный график) следующего кода вслед за обновлением графика:

 где hwnd - дескриптор окна автономного графика,

       mt4Message:

 В итоге получаем такой код обновленного стандартного скрипта.

 

Спасибо, Игорь! 

Я уже и сам понял, что вы автономный график упустили из виду. Потому и пост удалил, понял, что халявы нет и не ожидается.

Не судьба, увы. 

 PS. про SendMessageW() не слышал, посмотрю.

 
prorab:

Спасибо, Игорь! 

Я уже и сам понял, что вы автономный график упустили из виду. Потому и пост удалил, понял, что халявы нет и не ожидается.

Не судьба, увы. 

 


Нет, автономный график я из виду не упускал. Я про советник не понял. Но решение есть и оно работает (проверьте у себя - коды приложены). Поэтому все равно не понимаю, в чем проблема. 

Определить появление нового бара через время открытия бара нельзя только в том случае, когда несколько свечей имеют одинаковое время открытия. Но в таком случае помогает функция подсчета баров.

 
Scriptong:


Нет, автономный график я из виду не упускал. Я про советник не понял. Но решение есть и оно работает (проверьте у себя - коды приложены). Поэтому все равно не понимаю, в чем проблема. 

Определить появление нового бара через время открытия бара нельзя только в том случае, когда несколько свечей имеют одинаковое время открытия. Но в таком случае помогает функция подсчета баров.

Я этот RenkoLive посмотрел, время там есть, для быстрых тиков просто инкрементом добавляется ++. Для тех, которые строятся по истории, берется из бара.
 
prorab:
Я этот RenkoLive посмотрел, время там есть, для быстрых тиков просто инкрементом добавляется ++. Для тех, которые строятся по истории, берется из бара.


Дело не в самом индикаторе. Ведь он просто создает автономный график. Проблема топикстартера в том (я так ее понимаю), что его советник, повешенный на автономный график, некорректно работает. Хотя, по идее, без поступления тиков эксперта он вообще не должен работать. Решается это тремя способами:

1. Зациклить советник на автономном графике.

2. Обеспечить генерацию тиков советника на автономном графике (указанный мною вариант).

3. Повесить советник на онлайн-график, но запрашивать данные с автономного графика.

 

Спасибо, Игорь, пункт 2 меня заинтересовал.

Дальше попробую разобраться сам.