MetaTrader 4 Client Terminal build 610 - страница 26

 
AlexeyVik:
Я-бы сделал так.
Всё-равно явно передаёшь символ.


это ок, но суть то не меняется. :-) во всех советниках всегда так писал как строка символа, а далее передавал в нее имя валюты.

Но с недавних времен советники словно сходят сума и трогают другие пары. Хотя явно везде прописано Symbol()

Сейчас тетсирую все ок.

Это появляется в какие то моменты - какие еще не знаю.

при чем на старом терминале все ок. на новых такая беда.

посмотрел по логам, такая ошибка возникает при смене графика:

REASON_CHARTCHANGE
 3
 Символ или период графика был изменен
 
т.е. вот лог:
07:39:44 Exp - Dvigubas NZDCAD,H4: open #31445061 buy 0.03 NZDCAD at 0.91660 ok
07:39:44 Exp - Dvigubas NZDCAD,H4: modify #31422540 buy 0.01 NZDCAD at 0.91967 sl: 0.00000 tp: 0.91912 ok
07:39:44 Exp - Dvigubas NZDCAD,H4: modify #31438570 buy 0.02 NZDCAD at 0.91811 sl: 0.00000 tp: 0.91912 ok
07:39:44 Exp - Dvigubas NZDCAD,H4: modify #31445061 buy 0.03 NZDCAD at 0.91660 sl: 0.00000 tp: 0.91912 ok
07:42:45 Myfxbook EURUSD,Weekly: Statement uploaded successfully
07:45:46 Exp - Dvigubas GBPAUD,Daily:  Autolot=0.00000000 MinLots=0.01000000 LOT=0.01000000
07:45:46 Exp - Dvigubas GBPAUD,Daily: open #31445249 buy 0.01 GBPAUD at 1.85790 ok
07:45:48 Exp - Dvigubas GBPAUD,Daily: modify #31445249 buy 0.01 GBPAUD at 1.85790 sl: 0.00000 tp: 1.86260 ok
07:47:53 Myfxbook EURUSD,Weekly: Statement uploaded successfully
07:53:03 Myfxbook EURUSD,Weekly: Statement uploaded successfully
07:58:06 Myfxbook EURUSD,Weekly: Statement uploaded successfully
08:03:15 Myfxbook EURUSD,Weekly: Statement uploaded successfully
08:08:18 Myfxbook EURUSD,Weekly: Statement uploaded successfully
08:10:07 Exp - Dvigubas GBPUSD,Daily: uninit reason 3
08:10:07 Exp - Dvigubas GBPUSD,H1: initialized

08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31210794 buy 0.01 AUDCAD at 0.99529 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31321146 buy 0.02 AUDCAD at 0.98651 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31297790 buy 0.01 AUDCHF at 0.81478 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31319096 buy 0.02 AUDCHF at 0.81159 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31321124 buy 0.03 AUDCHF at 0.80781 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31323615 buy 0.05 AUDCHF at 0.80464 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31329777 buy 0.08 AUDCHF at 0.80133 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31219968 buy 0.01 AUDNZD at 1.08641 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31320994 buy 0.02 AUDNZD at 1.08081 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31321250 buy 0.03 AUDNZD at 1.07667 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31395210 buy 0.01 AUDUSD at 0.90347 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31297632 buy 0.01 CADCHF at 0.81970 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31324150 buy 0.02 CADCHF at 0.81690 sl: 0.00000 tp: 1.68996 ok
08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31329760 buy 0.03 CADCHF at 0.81401 sl: 0.00000 tp: 1.68996 ok
 
Rosh:

Добавьте в код 2 строчки и посмотрите журнал тестера





Забыл сказать что спред поставил 20 пунктов.

Итого подсчитаем для 4 ордера сел с покупкой 0.01 лота: Цена открытия ордера 1.33464 -цена тейк профита 1.33403 =63 итого должно получиться 63 цента ну не как не 0.01. Может я что путаю?

 
Причем постоянно выдает по стоп лосу -0.01, а по тейк профиту 0.01 и не важно сколько пунктов забрал или слил.
 
Vladon:


это ок, но суть то не меняется. :-) во всех советниках всегда так писал как строка символа, а далее передавал в нее имя валюты.

Но с недавних времен советники словно сходят сума и трогают другие пары. Хотя явно везде прописано Symbol()

Сейчас тетсирую все ок.

Это появляется в какие то моменты - какие еще не знаю.

при чем на старом терминале все ок. на новых такая беда.


Обрати внимание на неоднозначность NULL, 0 и "" пустая строка.

В старом допускалось очень много вольностей которые теперь запрещены.

Например обращение к массиву arr[i-2] при переборе в цикле от нуля было всегда 0 пока i < 2 а теперь ошибка. И в индикаторах частые ошибки с размером массивов.

 
AlexeyVik:

Обрати внимание на неоднозначность NULL, 0 и "" пустая строка.


Спасибо буду думать.......
 
Vladon:


посмотрел по логам, такая ошибка возникает при смене графика:

Спасибо за сообщение. Разберемся

PS Сходу не воспроизводится

 
Rosh:

Спасибо за сообщение. Разберемся


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

Буду еще копать что не так.

 
Vladon:


это ок, но суть то не меняется. :-) во всех советниках всегда так писал как строка символа, а далее передавал в нее имя валюты.

Но с недавних времен советники словно сходят сума и трогают другие пары. Хотя явно везде прописано Symbol()

Сейчас тетсирую все ок.

Это появляется в какие то моменты - какие еще не знаю.

при чем на старом терминале все ок. на новых такая беда.

посмотрел по логам, такая ошибка возникает при смене графика:


А что не так в логе?

08:10:07 Exp - Dvigubas GBPUSD,Daily: uninit reason 3
08:10:07 Exp - Dvigubas GBPUSD,H1: initialized

08:10:13 Exp - Dvigubas GBPUSD,H1: modify #31210794 buy 0.01 AUDCAD at 0.99529 sl: 0.00000 tp: 1.68996 ok

Видно, что сменили таймфрейм с днёвки на часовку

 
stringo:

А что не так в логе?

Видно, что сменили таймфрейм с днёвки на часовку


да но после смены ТФ советник начал трогать не свои ордера

! а это исключено, советника послал на экспертизу через СД

Там везде явно стоит только ордера текущей валютной пары.

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

 
Vladon:


да но после смены ТФ советник начал трогать не свои ордера

! а это исключено, советника послал на экспертизу через СД

Там везде явно стоит только ордера текущей валютной пары.

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


Вставьте в OnInit

 Print("Symbol=",Symbol());

Тогда точно будете видеть, что Symbol() отдаёт правильное значение

Перед попыткой модификации ордера распечатывайте строку с контролируемыми параметрами.

Причина обращения: