При двойном клике на индикаторный буфер нельзя задать собственное поведение, кроме изменения параметров индикатора. Логично предоставить опцию пользовательского события.
Нашелся ещё баг со временем закрытия сделки по СЛ в миллисекундах (DEAL_TIME_MSC). Эксперт:
#include <Trade\Trade.mqh> //подключаем библиотеку для совершения торговых операций
CTrade Trade; // объект для выполнения торговых операцийint stop=0;
voidOnTick(){
if(stop > 1){return;}//2 первые сделкиMqlTick Tick;
if (SymbolInfoTick(_Symbol, Tick) ){Print("--Main (",_Symbol,") tick time=",MscToString(Tick.time_msc));}
if (SymbolInfoTick("GBPUSD", Tick)){
Print("===GBPUSD tick time=",MscToString(Tick.time_msc)," ask=",Tick.ask," bid=",Tick.bid);
Trade.Buy (1,"GBPUSD",Tick.ask, Tick.ask - 10 * _Point, Tick.ask + 10 * _Point);
//Trade.Sell(1,_Symbol,Tick.bid, 0, 0);
}
stop++;
}
voidOnDeinit(constint reason ){
HistorySelect(0,TimeCurrent());
for(int i=0;i<HistoryDealsTotal();i++){
ulong deal_ticket= HistoryDealGetTicket(i);
long tr_time=HistoryDealGetInteger(deal_ticket,DEAL_TIME_MSC);
Print("POSITION_ID:",HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID)," deal #",deal_ticket," at ",MscToString(tr_time)," Price:",DoubleToString(HistoryDealGetDouble(deal_ticket,DEAL_PRICE),5)," DEAL_TYPE: ",HistoryDealGetInteger(deal_ticket,DEAL_TYPE));
}
}
string MscToString(long ms){return (string)(datetime)(ms/1000)+"."+(string)(ms%1000);}
Торгует в коде на GBPUSD, а запускаем на другом инструменте EURGBP. ДЦ: Ал-ри, хедж, ECN счет.
Печатает:
1-й тик 2023.05.29 00:15:00 --Main (EURGBP) tick time=2023.05.29 00:15:00.488 2023.05.29 00:15:00 ===GBPUSD tick time=2023.05.29 00:15:00.189 ask=1.23441 bid=1.23431 ... 2-й тик 2023.05.29 00:15:16 --Main (EURGBP) tick time=2023.05.29 00:15:16.417 2023.05.29 00:15:16 ===GBPUSD tick time=2023.05.29 00:15:00.189 ask=1.23441 bid=1.23431 - по GBPUSD новых тиков еще не было ... Печать сделок: 2023.05.29 23:54:58 POSITION_ID:0 deal #1 at 2023.05.29 00:00:00.0 Price:0.00000 DEAL_TYPE: 2 2023.05.29 23:54:58 POSITION_ID:2 deal #2 at 2023.05.29 00:15:00.488 Price:1.23441 DEAL_TYPE: 0 2023.05.29 23:54:58 POSITION_ID:2 deal #3 at 2023.05.29 00:15:00.139 Price:1.23402 DEAL_TYPE: 1 2023.05.29 23:54:58 POSITION_ID:4 deal #4 at 2023.05.29 00:15:16.417 Price:1.23441 DEAL_TYPE: 0 2023.05.29 23:54:58 POSITION_ID:4 deal #5 at 2023.05.29 00:16:01.617 Price:1.23402 DEAL_TYPE: 1
Забыли обновить время закрытия сделки в мс 15:00.139, оно получается раньше времени открытия 15:00.488 .
Предполагаю, что время закрытия не обновляется, только в случае, если сделка открылась и закрылась по цене тика, который был раньше первого тика основного инструмента EURGBP. Т.к. все последующие тики (как видно по 2-му, имеют правильное время закрытия)
П.С.
Заметил эту ошибку, т.к. печатал сделки через библиотеку Report https://www.mql5.com/ru/code/18801
Там происходит корректировка ошибок по времени открытия/закрытия. И эта сделка просто была исключена из отчета:
На что сразу обратил внимание. Пришлось искать, где пропавшая сделка. Сделал проверочный код (см выше), который и показал, что ошибка в тестере, а не в Report-e
Т.е. сделка сразу же закрылась при открытии, т.к. bid == sl. Но время закрытия все равно неверное, не должно быть меньше времени открытия. Видимо должно быть = 15:00.488
Нашелся ещё баг со временем закрытия сделки по СЛ в миллисекундах (DEAL_TIME_MSC).
Вы проделали огромную работу. К сожалению, даже мне (заинтересованному лицу) приходится очень сильно напрягаться, чтобы въехать в суть описания бага. Потому боюсь, что MQ не уделят должного внимания данной проблеме. Как показать, чтобы MQ заинтересовались - не знаю. Текущий вариант - очень тяжелый. Скорее всего, только один человек его внимательно посмотрит. И это будет не MQ.
fxsaber #: Вы проделали огромную работу. К сожалению, даже мне (заинтересованному лицу) приходится очень сильно напрягаться, чтобы въехать в суть описания бага. Потому боюсь, что MQ не уделят должного внимания данной проблеме. Как показать, чтобы MQ заинтересовались - не знаю. Текущий вариант - очень тяжелый. Скорее всего, только один человек его внимательно посмотрит. И это будет не MQ.
Вот с утра и до обеда искал, делал тестовый советник и описывл ситуацию. Не хотелось бы, чтобы этот труд оказался напрасным. Точность работы тестера - тоже в интересах MQ. Даже с одной неверной сделкой.
П.С. Вместо работы над советником уже 3-й раз за последние 8 дней, трачу время на баги ((. Не туда время уходит, куда хотелось бы. Черный ящик тяжелее исследовать, чем свой код.
Предложение по закрытым вкладкам. Очень часто закрываю нужную вкладку по ошибке.
Меню "Файл" - "Открыть удалённый"
Меню "Файл" - "Открыть удалённый"
Спасибо. Удивлён, что есть такой функционал, только не додумался там искать.
Одно из окон с результатами оптимизации не реагирует на кнопку закрытия.
Всё остальное (изменение вида отображения результатов, вкл/выкл сетки, сворачивание/разворачивание, ресайз) отрабатывается нормально.
Другие подобные окна нормально закрылись.
Одно из окон с результатами оптимизации не реагирует на кнопку закрытия.
Нашелся ещё баг со временем закрытия сделки по СЛ в миллисекундах (DEAL_TIME_MSC). Эксперт:
Торгует в коде на GBPUSD, а запускаем на другом инструменте EURGBP. ДЦ: Ал-ри, хедж, ECN счет.
Печатает:
1-й тик
2023.05.29 00:15:00 --Main (EURGBP) tick time=2023.05.29 00:15:00.488
2023.05.29 00:15:00 ===GBPUSD tick time=2023.05.29 00:15:00.189 ask=1.23441 bid=1.23431
...
2-й тик
2023.05.29 00:15:16 --Main (EURGBP) tick time=2023.05.29 00:15:16.417
2023.05.29 00:15:16 ===GBPUSD tick time=2023.05.29 00:15:00.189 ask=1.23441 bid=1.23431 - по GBPUSD новых тиков еще не было
...
Печать сделок:
2023.05.29 23:54:58 POSITION_ID:0 deal #1 at 2023.05.29 00:00:00.0 Price:0.00000 DEAL_TYPE: 2
2023.05.29 23:54:58 POSITION_ID:2 deal #2 at 2023.05.29 00:15:00.488 Price:1.23441 DEAL_TYPE: 0
2023.05.29 23:54:58 POSITION_ID:2 deal #3 at 2023.05.29 00:15:00.139 Price:1.23402 DEAL_TYPE: 1
2023.05.29 23:54:58 POSITION_ID:4 deal #4 at 2023.05.29 00:15:16.417 Price:1.23441 DEAL_TYPE: 0
2023.05.29 23:54:58 POSITION_ID:4 deal #5 at 2023.05.29 00:16:01.617 Price:1.23402 DEAL_TYPE: 1
Забыли обновить время закрытия сделки в мс 15:00.139, оно получается раньше времени открытия 15:00.488 .
Предполагаю, что время закрытия не обновляется, только в случае, если сделка открылась и закрылась по цене тика, который был раньше первого тика основного инструмента EURGBP. Т.к. все последующие тики (как видно по 2-му, имеют правильное время закрытия)
П.С.
Заметил эту ошибку, т.к. печатал сделки через библиотеку Report https://www.mql5.com/ru/code/18801

Там происходит корректировка ошибок по времени открытия/закрытия. И эта сделка просто была исключена из отчета:
На что сразу обратил внимание. Пришлось искать, где пропавшая сделка. Сделал проверочный код (см выше), который и показал, что ошибка в тестере, а не в Report-e
...
2023.05.29 00:15:00 stop loss triggered #2 buy 1 GBPUSD 1.23441 sl: 1.23431 tp: 1.23451 [#3 sell 1 GBPUSD at 1.23431]
Но время закрытия все равно неверное, не должно быть меньше времени открытия. Видимо должно быть = 15:00.488
Нашелся ещё баг со временем закрытия сделки по СЛ в миллисекундах (DEAL_TIME_MSC).
Вы проделали огромную работу. К сожалению, даже мне (заинтересованному лицу) приходится очень сильно напрягаться, чтобы въехать в суть описания бага. Потому боюсь, что MQ не уделят должного внимания данной проблеме. Как показать, чтобы MQ заинтересовались - не знаю. Текущий вариант - очень тяжелый. Скорее всего, только один человек его внимательно посмотрит. И это будет не MQ.
П.С. Вместо работы над советником уже 3-й раз за последние 8 дней, трачу время на баги ((. Не туда время уходит, куда хотелось бы. Черный ящик тяжелее исследовать, чем свой код.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 4040: Улучшения и исправления
Forester, 2023.12.19 11:42