Индикатор повреждается - страница 2

 
jjc:

Например, если сейчас 8 утра, все, что в коде предполагает, что (а) бар для 7 утра был 60 баров назад, или даже (б) что бар для 07:00 вообще существует.

Хорошая мысль, я не понял, что графики были M1, когда я впервые посмотрел на них... довольно часто бары M1 отсутствуют в спокойное время, например, ночью.
 
RaptorUK:
Хорошая мысль, я не понял, что графики были M1, когда впервые посмотрел на них. ... довольно часто бары M1 отсутствуют в спокойное время, например, в течение ночи.
В данном случае я думаю, что это скорее всего временная потеря связи с брокером, но принцип и последствия те же.
 
jjc:
В данном случае я думаю, что это скорее всего временная потеря связи с брокером, но принцип и последствия те же.
...На скриншоте "Ошибка движения" также заметно, что фиолетовые линии перестают рисоваться в точке, где, похоже, отсутствует бар M1.
 
AnkaSoftware:

Хм, "новые исторические данные добавляются на график", как? Индикатор запускается и не трогается. У нас есть фиксированная обратная перспектива в 1000 баров. Индикатор не загружает никаких исторических данных.

Может ли кто-нибудь из команды разработчиков взглянуть на это?

Вы сказали ... "Я разработал индикатор, который работает нормально в течение первых 16 часов или около того" .... 16 часов x 60 минут = 960 баров ... что произойдет, если вы уменьшите обратный обзор до 500 баров, возникнут ли проблемы после 8 часов?
 

Jic, Спасибо за замечания.

Тесты проводятся на сервере CNS VPS с надежным соединением, а демо-счет используется для тестирования у брокеров IBFX и VantageFX.

Я делаю RefreshRates() на каждом тике и использую обычные функции временных рядов для доступа к данным бара. Код, используемый для обновления индикаторов, приведен в моем предыдущем сообщении в функции DrawMoveEx. Я полагаю, что в таймсерии нет пропущенных баров от 0 до 'Bars -1'. Сообщите мне, если это предположение неверно.

Прилагаю еще один снимок, с правильным масштабом времени и без прокрутки вправо (с текущими данными IBFX).

Получилось ли у вас посмотреть файл excel, приложенный в посте 2011.10.07 15:30

 

AnkaSoftware:
I believe the TimeSeries does not have missing bars from 0 to 'Bars -1'. Let me know if this assumption is incorrect.

Это предположение, конечно, кажется неверным, потому что ваш оригинальный скриншот "Move Error" имеет 16 баров между каждым маркером оси X - вы можете посчитать их сами - но один из периодов охватывает 21, а не 16 минут. И, как говорит RaptorUK, это не то предположение, которое можно смело делать в своем коде. Не обязательно торговля будет происходить каждую минуту дня - хотя я был бы удивлен, если бы это было не так на GBPUSD вне крупных праздников - и поэтому не обязательно будет бар M1 для каждой минуты.

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

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

 
AnkaSoftware:

Jic, Спасибо за замечания.

Тесты проводятся на сервере CNS VPS с надежным соединением, а демо-счет используется для тестирования у брокеров IBFX и VantageFX.

Я делаю RefreshRates() на каждом тике и использую обычные функции временных рядов для доступа к данным бара.

Возможно, это не является причиной вашей проблемы, но ... RefreshRates() не имеет никакого значения, если вы используете эти функции: https: //docs.mql4.com/series RefreshRates обновляет только эти переменные: https://docs.mql4.com/predefined/variables.
 
jjc:

Это предположение, конечно, кажется неверным, потому что ваш оригинальный скриншот "Move Error" имеет 16 баров между каждым маркером оси X - вы можете посчитать их сами - но один из периодов охватывает 21, а не 16 минут. И, как говорит RaptorUK, это не то предположение, которое можно смело делать в своем коде. Не обязательно торговля будет происходить каждую минуту дня - хотя я был бы удивлен, если бы это было не так на GBPUSD вне крупных праздников - и поэтому не обязательно будет бар M1 для каждой минуты.

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

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

Raptor, Я проверю "что произойдет, если вы уменьшите обратный обзор до 500 баров, возникнут ли проблемы после 8 часов?" и сделаю реверс.

JIC, Пожалуйста, обратите внимание, что проблема не возникает на 32-битных платформах. Я предоставил некоторый код в одном из предыдущих сообщений.

 
AnkaSoftware:
Я полагаю, что TimeSeries не имеет пропущенных баров от 0 до 'Bars -1'. Сообщите мне, если это предположение неверно.

Конечно, нет, есть свечи Bars, пронумерованные от 0 до Bars-1. ArraySize(Close) == Bars всегда.

Однако всегда есть пропущенные бары. от Fri 21:59z следующий бар будет Sun 22:00z. Выходные и праздничные дни и минуты без активности.

Вы не можете считать, что Time[x] == Time[x+1] + 60*Period() не будет на пропущенном баре.

Если вы хотите получить помощь с ВАШИМ индикатором, опубликуйте ВАШ код - здесь нет читателей мыслей.

 
AnkaSoftware:

Дополнительная информация -

a) Повреждение индикаторов происходит только на платформе Windows 64 bit

б) Я сделал дамп массива индикаторов до повреждения и после повреждения - то же самое доступно в прилагаемом xls файле с комментариями.

Посмотрите на значения времени Unix в вашей таблице, промежутки между соседними значениями должны быть 60, 60 секунд, есть несколько 240 секундных промежутков и по крайней мере один 120 секундный промежуток. Разработан ли ваш код для обработки отсутствующих баров M1?
Причина обращения: