Ранее сообщил о проблеме подвисания ПК, занимающегося раздачей заданий агентам. После поочерёдной раздачи заданий оптимизации циклично пошла проходить, поэтому не отслеживал, но проснулся от холода - компьютеры не работали над заданиями...
Сейчас просмотрел логи, выяснилось, что этот процесс не вечен - ориентировочно с 8:58 по 9:33, включая саму оптимизацию, которая до и после примерно занимала 3 минуты. Таким образом подвисание было на 30 минут!
Лог из секции Инструменты - вкладка - Журнал:
OM 008:57:44.797 Tester register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
HR 008:57:45.219 Experts optimization frame expert Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K (EURUSD,M15) loaded successfully
JO 008:58:44.664 Experts optimization frame expert Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K (EURUSD,M15) removed
QQ 008:58:50.218 Tester register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
EO 008:58:50.642 Experts optimization frame expert Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K (EURUSD,M15) loaded successfully
IS 009:33:23.376 Experts optimization frame expert Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K (EURUSD,M15) removed
OR 009:33:28.884 Tester register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
LH 009:33:29.298 Experts optimization frame expert Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K (EURUSD,M15) loaded successfully
ID 009:36:25.069 Experts optimization frame expert Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K (EURUSD,M15) removed
Лог из секции Тестер стратегий -вкладка - Журнал:
FL 0 08:58:50.214 Tester "Kamikadze_ver\Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K.ex5" 64 bit
KF 0 08:58:50.218 Tester register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
LJ 0 08:58:50.692 Experts optimization frame expert Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K (EURUSD,M15) processing started
EE 0 08:58:50.815 Tester Experts\Kamikadze_Ver\Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K.ex5 on EURUSD,M15 from 2008.01.01 00:00 to 2023.01.01 00:00
NH 0 08:58:50.815 Tester complete optimization started
QQ 0 08:58:50.815 Tester tester_no_cache property used
...
FO 008:58:50.881 E5-2680v3:2020 connecting to 192.168.123.7:2020
IO 008:58:52.130 E5-2680v3:2020 connected
QO 008:59:17.579 E5-2680v3:2020 authorized (agent build 4289)
FJ 008:59:17.579 E5-2680v3:2020 pass 74 started
JF 009:19:02.959 E5-2680v3:2020 common synchronization completed
OL 009:29:20.731 E5-2680v3:2020 pass 74 returned result 1531.200000in0:00:18.693
PS 009:29:20.740 E5-2680v3:2020 pass 135 started
OH 009:30:58.885 E5-2680v3:2020 pass 135 returned result 16285.130000in0:00:17.871
RR 009:30:58.894 E5-2680v3:2020 pass 208 started
HP 009:32:46.521 E5-2680v3:2020 pass 208 returned result 21.440000in0:00:17.904
IQ 009:33:17.950 E5-2680v3:2020 connection closed
Я для примера тут показываю ситуацию с одним агентом, которая уже в его логе выглядит следующим образом
CS 008:58:50.914192.168.123.1 login (build 4260)
CS 008:59:34.680192.168.123.1 shutdown finished
CS 008:59:53.590192.168.123.1 login (build 4260)
CS 009:00:41.848192.168.123.1 shutdown finished
CS 009:01:00.562192.168.123.1 login (build 4260)
CS 009:01:48.646192.168.123.1 shutdown finished
CS 009:02:10.187192.168.123.1 login (build 4260)
CS 009:02:54.976192.168.123.1 shutdown finished
CS 009:03:15.129192.168.123.1 login (build 4260)
CS 009:04:00.457192.168.123.1 shutdown finished
CS 009:04:25.392192.168.123.1 login (build 4260)
CS 009:04:38.604 Tester account info found with currency USD
CS 009:24:23.969 Network 1478 bytes of tester parameters loaded
CS 009:24:23.969 Network 306884 bytes of input parameters loaded
CS 009:24:23.970 Network 190 bytes of symbols list loaded (31 symbols)
CS 009:24:23.971 Tester expert file added: Experts\Kamikadze_Ver\Kamikadze_MA_V_04_43_Fibo_06_Regressor_T_K.ex5. 1715690 bytes loaded
CS 009:24:23.972 Network 415440 bytes of optimized inputs info loaded
CS 009:24:23.976 Tester successfully initialized
CS 009:24:23.976 Network 1689 Kb of total initialization data received
CS 009:24:23.976 Tester Intel Xeon E5-2680 v3 @ 2.50GHz, 65410 MB
CS 009:24:23.982 Tester optimization pass 74 started
CS 009:24:24.010 Symbols EURUSD: symbol to be synchronized
CS 009:24:24.013 Symbols EURUSD: symbol synchronized, 3800 bytes of symbol info received
CS 009:24:24.057 History EURUSD: load 27 bytes of history data to synchronize in0:00:00.041
CS 009:24:24.057 History EURUSD: history synchronized from2007.01.01 to 2024.01.26
CS 009:24:24.173 History EURUSD,M15: history cache allocated for400759 bars and contains 25056 bars from2007.01.0100:00 to 2007.12.3123:45
CS 009:24:24.173 History EURUSD,M15: history begins from2007.01.0100:00
CS 009:24:27.017 History EURUSD,Daily: history cache allocated for4227 bars and contains 313 bars from2007.01.0100:00 to 2007.12.3100:00
CS 009:24:27.017 History EURUSD,Daily: history begins from2007.01.0100:00
CS 009:24:42.722 Tester 74 OnTester result 1531.2 : passed in0:00:18.693
CS 009:24:42.727 Tester optimization finished
CS 009:34:41.819 Tester optimization pass 135 started
CS 009:34:59.708 Tester 135 OnTester result 16285.13 : passed in0:00:17.871
CS 009:34:59.713 Tester optimization finished
Из лога видно, что на синхронизацию даётся 45 секунд примерно, и если она не происходит, то происходит разрыв, и, как я понимаю, требуется снова передавать все данные. Такой подход забивает трафик и приводит к торможению раздающего задания компьютера.
Как я понимаю, у меня были настройки оптимизации в цикле с малым числом заданий и все агенты не требовались, что привело к выгрузки из памяти агентов кэша со всеми данными синхронизации.
Уважаемые разработчики, я вижу необходимым сделать настраиваемыми параметры:
1. Время передачи данных от Принципала (или как его тут назвать?) Агенту для синхронизации.
2. Внедрить возможность последовательно проводить синхронизацию с учётом скорости передачи данных, или хотя бы с возможностью указать число агентов, с которыми за раз проводится синхронизация.А в идеале передавать для агентов из локальной сети один пакет с данными, который будет делится между всеми агентами на ПК.
3. Сделать возможным настройку времени, через которое происходит высвобождение кэша агентов. Тут одни хотят сразу, а я бы и сутки ждал - у всех свои задачи. Кроме того не понятно, почему нельзя локальным агентам, которые используются для своих нужд, не разрешить хранить в качестве кэша файлы на накопителе, в том числе советники и сопутствующие, которые необходимы для оптимизации.
Надеюсь на действенную реакцию, так как такие тормоза возникают периодически, и ранее в 2023 году их не наблюдалось.
Всем здравствуйте. Перестал корректно работать такой код, раньше работало, код то не менял. Если стратегия задумана работать только по ценам открытия то она у меня стала работать первый бар тестирования не работает(ну то есть как и нужно), со второго и далее отрабатывает каждый тик то есть функция не работает (выяснил в визуальном режиме). Подскажите с чем может быть связано, не с тем ли что использую win 7 очень не нра. десятка. Или какие то изменения произошли, к сожалению нет времени следить за всеми изменениями(( Хорошо что по стечению обстоятельств не ведется торговля на реальных деньгах, а то могли быть большие убытки.
Всем здравствуйте. Перестал корректно работать такой код, раньше работало, код то не менял. Если стратегия задумана работать только по ценам открытия то она у меня стала работать первый бар тестирования не работает(ну то есть как и нужно), со второго и далее отрабатывает каждый тик то есть функция не работает (выяснил в визуальном режиме). Подскажите с чем может быть связано, не с тем ли что использую win 7 очень не нра. десятка. Или какие то изменения произошли, к сожалению нет времени следить за всеми изменениями(( Хорошо что по стечению обстоятельств не ведется торговля на реальных деньгах, а то могли быть большие убытки.
Да вроде как ничего не менялось... у меня как то так реализовано
//---Операции выполняются только при появлении следующего бараif(!isNewBar()) return;
...
//+-----------------------------------------------------------------+//| Возвращает TRUE, если появился новый бар на текущем ТФ//+-----------------------------------------------------------------+bool isNewBar()
{
datetime tm[];
staticdatetime prevBarTime=0;
if(CopyTime(Symbol(),Signal_MA_TF,0,1,tm)<0)
{
Print("%s CopyTime error = %d",__FUNCTION__,GetLastError());
}
else
{
if(prevBarTime!=tm[0])
{
prevBarTime=tm[0];
returntrue;
}
returnfalse;
}
returntrue;
}
Доброго времени суток. Перестала работать функциия подсчета ордеров. Считала все корректно, а сейчас перестала. Что не так? И как это сделать, чтобы стала работать опять как надо?
void CountOrders()
{
NmbBuy=0;
NmbSell=0;
int total=PositionsTotal();
for(int i=total-1; i>=0; i--)
{
ulong tick_select=PositionGetTicket(i); // значение tick_select равно 14 (как нужно)if(PositionSelectByTicket(tick_select))
tick_select=PositionGetInteger(POSITION_TICKET); // значение переменной tick_select равно 14 (как нужно)if(PositionGetInteger(POSITION_MAGIC)==Magic)
tick_select=PositionGetInteger(POSITION_TICKET);// Тикет сохраняетсяif(PositionGetSymbol(POSITION_SYMBOL)==Symbol())
{
string select_symbol=PositionGetSymbol(POSITION_SYMBOL);
tick_select=PositionGetInteger(POSITION_TICKET); // значение переменной tick_select изменилось на 2 (ошибка!!!)// далее он работает с не той позицеей и считает ордера неправильно.ENUM_POSITION_TYPE type_select=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
if(type_select==POSITION_TYPE_BUY) // PositionGetInteger(POSITION_TYPE)
NmbBuy++;
if(type_select==POSITION_TYPE_SELL) // PositionGetInteger(POSITION_TYPE)
NmbSell++;
}
}
}
Доброго времени суток. Перестала работать функциия подсчета ордеров. Считала все корректно, а сейчас перестала. Что не так? И как это сделать, чтобы стала работать опять как надо?
Много ненужных действий в коде, которые дублируют друг друга. Скорее всего, раньше (когда "работало") использовался счет типа Netting, а теперь перешли на Hedge.
Делайте следующим образом:
for (int i = PositionsTotal() - 1; i >= 0; --i)
{
ulong ulTicket = PositionGetTicket(i);
if (ulTicket == 0)
continue;
if (PositionGetString(POSITION_SYMBOL) != Symbol())
continue;
if (PositionGetInteger(POSITION_MAGIC) != Magic)
continue;
if ((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
NmbBuy++;
else
NmbSell++;
}
Эта функция не только получает имя символа, но и выбирает новую позицию. В случае с Hedge-счетом будет выбрана вовсе не та позиция, на которую Вы рассчитываете.
Использую универсальное решение. Без этого ничего не смог бы делать в боевой торговле.
Спасибо - сходу принцип не уловил - как выстраивается последовательность?
Я тут подумал, что можно привязаться к id чарта , и сделать задержку в зависимости от номера.
Спасибо - сходу принцип не уловил - как выстраивается последовательность?
Ранее сообщил о проблеме подвисания ПК, занимающегося раздачей заданий агентам. После поочерёдной раздачи заданий оптимизации циклично пошла проходить, поэтому не отслеживал, но проснулся от холода - компьютеры не работали над заданиями...
Сейчас просмотрел логи, выяснилось, что этот процесс не вечен - ориентировочно с 8:58 по 9:33, включая саму оптимизацию, которая до и после примерно занимала 3 минуты. Таким образом подвисание было на 30 минут!
Лог из секции Инструменты - вкладка - Журнал:
Лог из секции Тестер стратегий - вкладка - Журнал:
Я для примера тут показываю ситуацию с одним агентом, которая уже в его логе выглядит следующим образом
Из лога видно, что на синхронизацию даётся 45 секунд примерно, и если она не происходит, то происходит разрыв, и, как я понимаю, требуется снова передавать все данные. Такой подход забивает трафик и приводит к торможению раздающего задания компьютера.
Как я понимаю, у меня были настройки оптимизации в цикле с малым числом заданий и все агенты не требовались, что привело к выгрузки из памяти агентов кэша со всеми данными синхронизации.
Уважаемые разработчики, я вижу необходимым сделать настраиваемыми параметры:
1. Время передачи данных от Принципала (или как его тут назвать?) Агенту для синхронизации.
2. Внедрить возможность последовательно проводить синхронизацию с учётом скорости передачи данных, или хотя бы с возможностью указать число агентов, с которыми за раз проводится синхронизация.А в идеале передавать для агентов из локальной сети один пакет с данными, который будет делится между всеми агентами на ПК.
3. Сделать возможным настройку времени, через которое происходит высвобождение кэша агентов. Тут одни хотят сразу, а я бы и сутки ждал - у всех свои задачи. Кроме того не понятно, почему нельзя локальным агентам, которые используются для своих нужд, не разрешить хранить в качестве кэша файлы на накопителе, в том числе советники и сопутствующие, которые необходимы для оптимизации.
Надеюсь на действенную реакцию, так как такие тормоза возникают периодически, и ранее в 2023 году их не наблюдалось.
Логи прикладываю.
b4292, показывается разное количество доступных облачных Агентов.
Наверное, правильно показывать одинаковые (правильные) значения.
Строка для поиска: Uluchshenie 091.Всем здравствуйте. Перестал корректно работать такой код, раньше работало, код то не менял. Если стратегия задумана работать только по ценам открытия то она у меня стала работать первый бар тестирования не работает(ну то есть как и нужно), со второго и далее отрабатывает каждый тик то есть функция не работает (выяснил в визуальном режиме). Подскажите с чем может быть связано, не с тем ли что использую win 7 очень не нра. десятка. Или какие то изменения произошли, к сожалению нет времени следить за всеми изменениями(( Хорошо что по стечению обстоятельств не ведется торговля на реальных деньгах, а то могли быть большие убытки.
Всем здравствуйте. Перестал корректно работать такой код, раньше работало, код то не менял. Если стратегия задумана работать только по ценам открытия то она у меня стала работать первый бар тестирования не работает(ну то есть как и нужно), со второго и далее отрабатывает каждый тик то есть функция не работает (выяснил в визуальном режиме). Подскажите с чем может быть связано, не с тем ли что использую win 7 очень не нра. десятка. Или какие то изменения произошли, к сожалению нет времени следить за всеми изменениями(( Хорошо что по стечению обстоятельств не ведется торговля на реальных деньгах, а то могли быть большие убытки.
Да вроде как ничего не менялось... у меня как то так реализовано
Да вроде как ничего не менялось... у меня как то так реализовано
Т.е. если блок выполнится и не произойдёт копирования, то функция вернёт тру? Ну-ну.
prevBarTime
Да, это защищает от сбоев :)
Доброго времени суток. Перестала работать функциия подсчета ордеров. Считала все корректно, а сейчас перестала. Что не так? И как это сделать, чтобы стала работать опять как надо?
Доброго времени суток. Перестала работать функциия подсчета ордеров. Считала все корректно, а сейчас перестала. Что не так? И как это сделать, чтобы стала работать опять как надо?
Много ненужных действий в коде, которые дублируют друг друга. Скорее всего, раньше (когда "работало") использовался счет типа Netting, а теперь перешли на Hedge.
Делайте следующим образом:
Проблемой в Вашем коде является строка:
Эта функция не только получает имя символа, но и выбирает новую позицию. В случае с Hedge-счетом будет выбрана вовсе не та позиция, на которую Вы рассчитываете.