Ошибки, баги, вопросы - страница 936

 
FinEngineer:
 Посмотрите Справочник MQL5 / Доступ к таймсериям и индикаторам / Организация доступа к данным
 
FinEngineer: но выходит ошибка аут оф рэндж...что не так в коде см ниже...? 
 Посмотрите, насколько соответствуют друг другу значения переменных to_copy и limit.
 
В режиме визуализации при торговле на двух символах после закрытия сделок в одно время в историю попадают данные только с символа на котором запущен эксперт. С другого символа данные попадают на вкладку историю только после открытия следующих сделок. В результате есть период времени когда данные на вкладке торговля и история различны.
 
JF 0 Trades 19:31:10 '***': cancel order #3694236 buy stop 1.10 AUDJPY.m at 95.679
DS 0 Trades 19:31:10 '***': cancel order #3694238 buy limit 1.10 AUDJPY.m at 93.876
DH 0 Trades 19:31:10 '***': cancel order #3694237 buy stop 0.36 AUDJPY.m at 95.679
FI 0 Trades 19:31:10 '***': cancel order #3694239 buy limit 0.36 AUDJPY.m at 93.876
FP 0 Trades 19:31:10 '***': cancel order #3694236 buy stop 1.10 AUDJPY.m at 95.679 done
QE 0 Trades 19:31:11 '***': cancel order #3694238 buy limit 1.10 AUDJPY.m at 93.876 done
CG 0 Trades 19:31:11 '***': cancel order #3694237 buy stop 0.36 AUDJPY.m at 95.679 done
OL 0 Trades 19:31:11 '***': cancel order #3694239 buy limit 0.36 AUDJPY.m at 93.876 done

 Четыре отложенных ордера, по журналу, вроде как удалились быстро. Но в OnTradeTransaction ответы пришли, где-то через 15 сек, тики в этот период исправно приходили.

KH 0 prp5 (EURUSD.m,M1) 19:31:23 TS=6 Удаление sl _ OnTrade PENDING id=84 m=3 b/s=SELL Err=Заявка выполнена
***

JG 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Удаление tp _ OnTrade PENDING id=85 m=3 b/s=SELL Err=Заявка выполнена
***
RL 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Удаление sl _ OnTrade PENDING id=86 m=3 b/s=SELL Err=Заявка выполнена
***

HK 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 Удаление tp _ OnTrade PENDING id=87 m=3 b/s=SELL Err=Заявка выполнена 

Хотя, тут тоже что-то странно

IE 0 prp5 (EURUSD.m,M1) 19:31:26 TS=6 =O= Deal закрытие/разворот price=95.648 m=3 b/s=SELL ...   ==>Время перед OrderSendAsync
ES 0 prp5 (EURUSD.m,M1) 19:31:29 TS=6 case 8(real) m=3 b/s=SELL Err=Ордер размещён                    ==>после выполнения  OrderSendAsync, 3 сек как-то многовато кажись.

P.S. Походу были тормоза с выполнением эксперта, хотя интересно, сколько времени пакеты для  OnTradeTransaction могут держаться в очереди. 

 
fyords:

Из справки:

Справочник MQL5 / Стандартная библиотека / Классы для создания панелей и диалогов / CWnd / StateFlagsSet

Каких свойств?

StateFlagsSet не свойств, а состояния. Метод группового изменения состояния. Чуть выше методы изменения отдельных флагов состояния.

Пользуйте отдельно.

 

Посмотрел "организацию доступа к данным", посмотрел скрипт-пример который подкачивает данные и все понял, возникли следующие вопросы:

1. Почему я не могу в индикаторе в функции OnInit прописать этот код, чтобы при запуске индикатор сам себе подкачал историю и подготовил таймсерии? Могу ли я прописывать в советнике подобную проверку?   

2. Как часто надо делать подобную проверку для: 1 советников, 2 индикаторов? Если я всего один раз подготовлю историю и таймсерии для копирования то в дальнейшем не будут возникать ошибки при копировании? Или мне придется каждый раз или периодически проверять готовность истории и таймсерий?

3. Эта проверка необходима только для индикаторов и советников, в которых используются несколько таймфреймов и символов, или желательна во всех подряд? 

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Процессы подкачки асинхронны, а индикатор не имеет права ждать данных. Поэтому в ините можно запросить, ни в коем случае не ждать и не тормозить и только в онкалкулейте проверять наличие и считать.

Обратите внимание - индикатор не имеет права ждать или циклиться, иначе он убьет расчет последующих индикаторов.
 
Renat:
Процессы подкачки асинхронны, а индикатор не имеет права ждать данных. Поэтому в ините можно запросить, ни в коем случае не ждать и не тормозить и только в онкалкулейте проверять наличие и считать.

Обратите внимание - индикатор не имеет права ждать или циклиться, иначе он убьет расчет последующих индикаторов.

 1 Так где же мне тогда подкачку осуществить данных? Если я хочу индикатор сделать в котором будет корзина из вал пар, много символов...по каждому из них надо будет сделать проверку и подкачать данные...мне что из индикатора запускать скрипт что-ли?  Почему один индикатор убьет расчеты последующих? Достаточно использовать в последующих индикаторах проверку на рассчет предыдущего индикатора через BarsCalculated(indicator1_Handle), пускай себе считается и данные подкачивает, или я не прав?  

2 И еще такой вопрос, другого характера, когда я объявляю хэндл индикатора в функции он инит, тогда он начинает считаться? Или он начинает считаться перед тем как я дал команду на его копирование?

 
Подкачка инициируется автоматически при запросе истории символа.

То есть, в ините дернули нужное, а в oncalculate запрашиваете данные. Если данные устраивают, то считаете, иначе пропускаете вызов до следующего тика.
 
У нас где-то была вроде статья с обьяснением процессинга индикаторов.