Индикатор другого графика - страница 4

 
fxsaber:

Правда, Сергей спрашивал про условие обновления CopyRates, а не return.

Жалею, что встрял в тему. Постараюсь обходить. 

Подождите, пожалуйста. Поясните, в чем смысл повторного пересчета предыдущего бара если не получены данные CopyRates()?

Дело в том, что когда чарт максимизирован, то формирование новых баров на других чартах прекращается - экономия ресурсов, видимо. Поэтому CopyRates обламывается при первом запросе нового бара.

Под "обламывается" подразумевается именно 0, а не -1?

 
Alexey Kozitsyn:

Подождите, пожалуйста. Поясните, в чем смысл повторного пересчета предыдущего бара если не получены данные CopyRates()?

Под "обламывается" подразумевается именно 0, а не -1?

Он имел ввиду следующее:

Таким образом, если текущий день недели Суббота, то при попытке скопировать данные на недельном таймфрейме
с указанием start_time=Последний_Вторник и stop_time=Последняя_Пятница функция вернет 0,
так как время открытия на недельном таймфрейме всегда приходится на воскресенье,
но ни один недельный бар не попадает в указанный диапазон.

Если необходимо получить значение, соответствующее текущему незавершенному бару,
то можно использовать первую форму вызова с указанием start_pos=0 и count=1.

Функция фозвращает 0 только в том случае, если ничего не попадает в интервал. 

Тогда как я использую второй абзац. 

result=CopyRates(SecSymb,Period(),0,1,rates);


Если необходимо получить значение, соответствующее текущему незавершенному бару,
то можно использовать первую форму вызова с указанием start_pos=0 и count=1.

Но, даже если ничего не попало в интервал, то нет никакого смысла врзвращаться

к предыдущему бару. Поэтому паренёк и свалил, потому что не захотел признать свою ошибку.
 

 
prostotrader:

Он имел ввиду следующее:

Да, спасибо, я читал справку, но подумал, вдруг что упустил.
 
fxsaber:

Дело в том, что когда чарт максимизирован, то формирование новых баров на других чартах прекращается - экономия ресурсов, видимо. Поэтому CopyRates обламывается при первом запросе нового бара.

Из моей коллекции костылей: создаем OBJECT_CHART нужного инструмента/ТФ размером 1х1, и терминал сам следит за синхронизацией.
 
Andrey Khatimlianskii:
Из моей коллекции костылей: создаем OBJECT_CHART нужного инструмента/ТФ размером 1х1, и терминал сам следит за синхронизацией.

Красивый выкрутас, Спасибо! Надо бы коллекцию на выставку для ценителей.

А пока не вижу проблем, если делать синхронизацию так же, как с OrderSend. Но Ваше решение 100% будет не только простым, но и самым быстрым.

@Renat Fatkhullin, как так получилось, что костыльное решение самое быстрое? Т.е. хочешь быстро (за чем Вы так гонитесь) - делай через костыль.

 

OnCalculate запускается по тикам текущего графика, тики с разных инструментов приходят в разное время. 
Момент прихода первого тика на текущем графике не означает что и на других графиках пришел первый тик.

Поэтому работать с другими символами нужно в таймере (OnTimer), и раз в 100-500-1000 мс опрашивать нужные инструменты.

 
Taras Slobodyanik:

OnCalculate запускается по тикам текущего графика, тики с разных инструментов приходят в разное время. 
Момент прихода первого тика на текущем графике не означает что и на других графиках пришел первый тик.

Поэтому работать с другими символами нужно в таймере (OnTimer), и раз в 100-500-1000 мс опрашивать нужные инструменты.

Легче у GOOGLa спросить, быстрее будет. Вы представляете себе что значит 100 мс?

МТ5 позиционируется как мультивалютный мультирыночный терминал, а по вашему оказывается надо делать очень большие задержки чтобы попасть в сильно усредненные данные.

МТ4 намного быстрее получает данные с других инструментов. Что то тут не лепится. 

Думаю из за того, что МТ5 полностью рассинхронизирован. В погоне за скоростью (безсмысленном распаралеливании и полном переложении своих проблем на микрософт) и неоптимизированного кода, МТ5 стал заложником МТ4 и микрософта. На МТ5 невозможно тестировать мульти-стратегии. Вернее тестировать можно, но смысла нет.

Поэтому работать с другими символами нужно в таймере (OnTimer) 

т.е. Вы подтверждаете что на МТ5 в реальном времени работать невозможно?

 

В МТ4 с тиками точно так же, я говорю о поступающих тиках, а не о рыночных командах-запросах. 

В МТ5 заявлено быстрое исполнение ордеров и оно таки гораздо быстрее чем в МТ4) 

Если ваш индикатор-советник работает по тикам, то он ограничен частотой поступления тиков, если тиков нет - программа не работает.

 
Taras Slobodyanik:

В МТ4 с тиками точно так же, я говорю о поступающих тиках, а не о рыночных командах-запросах. 

В МТ5 заявлено быстрое исполнение ордеров и оно таки гораздо быстрее чем в МТ4) 

Если ваш индикатор-советник работает по тикам, то он ограничен частотой поступления тиков, если тиков нет - программа не работает.

Думал уже все спят ))

Вообще то вопрос о получении котировок с другого инструмента. Вы пользовались МТ5 и получением котировок с других графиков (символов, инструментов)? 

 

Вот сейчас все спят — тики приходят раз в 10-30 секунд... или даже в 60 секунд.

Но это не значит что вы не можете опросить принудительно нужные вам инструменты через таймер. Так же можно отправлять торговые запросы по таймеру, не ждать пока придет очередной тик.

Этот индикатор (что на первой странице), работает только если пришел тик на текущем инструменте. Но на другом инструменте, в это же время, скорее всего не будет тика. Значит и не появится новая свеча.
А когда появится, то этот индикатор уже отработает этот тик и это время. То есть он попросту проигнорирует событие формирования свечи на другом инструменте.

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