ademen Опубликовано 4 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 4 декабря, 2020 52 минуты назад, Rigal сказал: А можно скриншот истории сделок. Меня интересует эта группа ордеров на покупку по GBPCAD, в частности, тикет 275698281 Хочу увидеть, когда и как он был закрыт Тот что остался: @Rigal я готов терпеть CloseBy,пока не получится найти и нейтрализовать ошибку, только напиши когда тебе уже не понадобиться Trace уровень логирования, сильно грузит сервер. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 4 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 4 декабря, 2020 3 часа назад, ademen сказал: Тот что остался: @Rigal я готов терпеть CloseBy,пока не получится найти и нейтрализовать ошибку, только напиши когда тебе уже не понадобиться Trace уровень логирования, сильно грузит сервер. А еще вопрос: у оставшегося в рынке ордера на 0.12 - какой маджик? Я точно понимаю порядок событий на вашем счету сейчас, шаг за шагом. Я при этом не понимаю причины некоторых из них 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 4 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 4 декабря, 2020 6 минут назад, Rigal сказал: А еще вопрос: у оставшегося в рынке ордера на 0.12 - какой маджик? Я точно понимаю порядок событий на вашем счету сейчас, шаг за шагом. Я при этом не понимаю причины некоторых из них Пишет, установлен вручную, вручную ничего не открывал. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 4 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 4 декабря, 2020 15 минут назад, ademen сказал: Пишет, установлен вручную, вручную ничего не открывал. Вот, нашлась причина номер один. Итак, что произошло: На старте было открыто три покупки по 0.06 лота Советник, как и полагалось, открыл продажу на локирующий лот, 0.18, ордер #275765614 маджик 65124387 После этого он отправил первую пару на закрытие: покупка #275698281 0.06 и упомянутый локирующий ордер Эти два ордера были закрыты успешно, но возникло две неожиданости: Остаток 0.12 был переоткрыт без маджика Операция закрытия вернула код неуспеха (само по себе не смертельно, но советник попробовал закрыть ту же пару еще 9 раз) Советник перешел к следующему ордеру, но локирующего ордера уже не нашел, поэтому закрыл остальные ордера как есть Моя реализация опирается на маджик локирующего ордера, чтобы найти остаток - потому, что остаток по определению переоткрывается с другим номером тикета. Как выясняется, есть по крайней мере один брокер, который не сохраняет маджик в переоткрытом остатке. Я полагаю, механизм можно переписать, искать ордер по набору других признаков: цена открытия, лот Я подумаю и перепишу. Но метак разочаровывающе отвратителен в обработке закрытия парами. 6 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 4 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 4 декабря, 2020 6 минут назад, Rigal сказал: Вот, нашлась причина номер один. Итак, что произошло: На старте было открыто три покупки по 0.06 лота Советник, как и полагалось, открыл продажу на локирующий лот, 0.18, ордер #275765614 маджик 65124387 После этого он отправил первую пару на закрытие: покупка #275698281 0.06 и упомянутый локирующий ордер Эти два ордера были закрыты успешно, но возникло две неожиданости: Остаток 0.12 был переоткрыт без маджика Операция закрытия вернула код неуспеха (само по себе не смертельно, но советник попробовал закрыть ту же пару еще 9 раз) Советник перешел к следующему ордеру, но локирующего ордера уже не нашел, поэтому закрыл остальные ордера как есть Моя реализация опирается на маджик локирующего ордера, чтобы найти остаток - потому, что остаток по определению переоткрывается с другим номером тикета. Как выясняется, есть по крайней мере один брокер, который не сохраняет маджик в переоткрытом остатке. Я полагаю, механизм можно переписать, искать ордер по набору других признаков: цена открытия, лот Я подумаю и перепишу. Но метак разочаровывающе отвратителен в обработке закрытия парами. @Rigal поспрашивал о моей ситуации. Прислали интересный код реализации CloseBy, который был протестирован на Forex4you, где у меня и проблема наблюдается. Код скрыл под спойлером, посмотри, может пригодится, найдешь идею как решить проблему. Спойлер void ClosePosFirstProfit2(string sy="",int op=-1,int mn=-1){ struct SOrder { int nTicket; int nType; double fLots; }; color gl_clr_arrow[6]={clrBlue,clrRed,clrBlue,clrRed,clrBlue,clrRed}; SOrder DataOrders[]; int i,count_data=0,count_pairs=1; int magic=0; while(count_pairs) { RefreshRates(); ArrayResize(DataOrders,OrdersTotal()); for(i=0,count_data=0; i<OrdersTotal(); i++) { // Собираем данные об ордерах if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(/*OrderMagicNumber() != magic || */OrderSymbol() != Symbol()) continue; if(OrderType()==OP_BUY || OrderType()==OP_SELL) { DataOrders[count_data].nType=OrderType(); DataOrders[count_data].nTicket=OrderTicket(); DataOrders[count_data].fLots=OrderLots(); count_data++; } } } count_pairs=0; for(i=count_data-1; i>=0; i--) { for(int k=count_data-1; k>=0; k--) { if(DataOrders[i].nType != DataOrders[k].nType) { // Если ордера разнонаправленные if(DataOrders[i].fLots <= DataOrders[k].fLots) if(OrderCloseBy(DataOrders[i].nTicket,DataOrders[k].nTicket,clrYellow)) { // Если лот первого ордера меньше или равен второму count_pairs++; break; } else if(OrderCloseBy(DataOrders[k].nTicket,DataOrders[i].nTicket,clrYellow)) { // Если лот второго ордера меньше второго count_pairs++; break; } break; // Закрыть пару не удалось, идём искать другие } } if(count_pairs) break; // Если закрыли пару, уходим на новый пересчёт ордеров } } //for(i=0; i<count_data; i++) ClosePosition(DataOrders[i].nTicket,DataOrders[i].fLots); // Дозакрываем оставшиеся ордера for(i=0; i<count_data; i++) GetOrderClose(DataOrders[i].nTicket,DataOrders[i].fLots); // Дозакрываем оставшиеся ордера } bool GetOrderClose(int ticket,double lots=0) { bool is_closed; color arrow = CLR_NONE; double close_price = 0; int error; if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) { if (OrderType() == OP_BUY) { close_price = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),Digits); arrow = Aqua; } if (OrderType() == OP_SELL) { close_price = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),Digits); arrow = Gold; } if(lots==0)lots = OrderLots(); is_closed = OrderClose(OrderTicket(),lots,close_price,Slippage,arrow); if (is_closed) { PlaySound("tick"); Print(" Order ",ticket," close "); return(true); } error = GetLastError(); } else Print("Incorrect trade operation. Close ",ticket," error ",error); return(false); } 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 4 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 4 декабря, 2020 14 минут назад, ademen сказал: @Rigal поспрашивал о моей ситуации. Прислали интересный код реализации CloseBy, который был протестирован на Forex4you, где у меня и проблема наблюдается. Код скрыл под спойлером, посмотри, может пригодится, найдешь идею как решить проблему. Скрыть контент void ClosePosFirstProfit2(string sy="",int op=-1,int mn=-1){ struct SOrder { int nTicket; int nType; double fLots; }; color gl_clr_arrow[6]={clrBlue,clrRed,clrBlue,clrRed,clrBlue,clrRed}; SOrder DataOrders[]; int i,count_data=0,count_pairs=1; int magic=0; while(count_pairs) { RefreshRates(); ArrayResize(DataOrders,OrdersTotal()); for(i=0,count_data=0; i<OrdersTotal(); i++) { // Собираем данные об ордерах if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(/*OrderMagicNumber() != magic || */OrderSymbol() != Symbol()) continue; if(OrderType()==OP_BUY || OrderType()==OP_SELL) { DataOrders[count_data].nType=OrderType(); DataOrders[count_data].nTicket=OrderTicket(); DataOrders[count_data].fLots=OrderLots(); count_data++; } } } count_pairs=0; for(i=count_data-1; i>=0; i--) { for(int k=count_data-1; k>=0; k--) { if(DataOrders[i].nType != DataOrders[k].nType) { // Если ордера разнонаправленные if(DataOrders[i].fLots <= DataOrders[k].fLots) if(OrderCloseBy(DataOrders[i].nTicket,DataOrders[k].nTicket,clrYellow)) { // Если лот первого ордера меньше или равен второму count_pairs++; break; } else if(OrderCloseBy(DataOrders[k].nTicket,DataOrders[i].nTicket,clrYellow)) { // Если лот второго ордера меньше второго count_pairs++; break; } break; // Закрыть пару не удалось, идём искать другие } } if(count_pairs) break; // Если закрыли пару, уходим на новый пересчёт ордеров } } //for(i=0; i<count_data; i++) ClosePosition(DataOrders[i].nTicket,DataOrders[i].fLots); // Дозакрываем оставшиеся ордера for(i=0; i<count_data; i++) GetOrderClose(DataOrders[i].nTicket,DataOrders[i].fLots); // Дозакрываем оставшиеся ордера } bool GetOrderClose(int ticket,double lots=0) { bool is_closed; color arrow = CLR_NONE; double close_price = 0; int error; if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) { if (OrderType() == OP_BUY) { close_price = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),Digits); arrow = Aqua; } if (OrderType() == OP_SELL) { close_price = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),Digits); arrow = Gold; } if(lots==0)lots = OrderLots(); is_closed = OrderClose(OrderTicket(),lots,close_price,Slippage,arrow); if (is_closed) { PlaySound("tick"); Print(" Order ",ticket," close "); return(true); } error = GetLastError(); } else Print("Incorrect trade operation. Close ",ticket," error ",error); return(false); } Спасибо, но особенностью этого кода является как раз то, что он закрывает все ордера по символу. Меня такая реализация не устроит. По понятным причинам. Зато она удобно избегает всех сложностей, с которыми мне предстоит справиться. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 4 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 4 декабря, 2020 8 минут назад, Rigal сказал: Спасибо, но особенностью этого кода является как раз то, что он закрывает все ордера по символу. Меня такая реализация не устроит. По понятным причинам. Зато она удобно избегает всех сложностей, с которыми мне предстоит справиться. Магик есть, просто строка закомментирована. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 6 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 6 декабря, 2020 В 05.12.2020 в 02:34, ademen сказал: Магик есть, просто строка закомментирована. Да. Но у вас проблема как раз в том, что маджик не сохраняется после переоткрытия. Однако у меня есть хорошая новость: я за выходные перебрал свою библиотеку работы с ордерами... я давно собирался выписать закрытие по CloseBy для произвольного набора ордеров на одном символе. Потенциально разные маджики и потенциально включающие частично закрываемые ордера. Ваша проблема послужила финальным толчком: стало очевидно, что мои предыдущие реализации не справляются. Я уже выложил реализации ступидо с новой библиотекой. На днях соберу в кучу коржика и сеты, авторизую и выложу новую версию. 11 1 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rabinovich Опубликовано 7 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 7 декабря, 2020 (изменено) Добрый день На демо советник запустил пару сделок в течении двух дней Перевел на реал Пытался запустить на VPS 0 не получилось И в дальнейшем перестал работать, терминал выдал ошибки и подвис Изменено 7 декабря, 2020 пользователем Rabinovich дополнение Ссылка на сообщение Поделиться на другие сайты More sharing options...
pavlus777 Опубликовано 7 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 7 декабря, 2020 Добавил к этой ветке и к отдельным веткам со стратегиями коржика тег: https://tlap.com/forum/tags/коржик/ Теперь, легко можно найти все связанные ветки. 6 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rabinovich Опубликовано 7 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 7 декабря, 2020 (изменено) Добрый день На демо советник запустил пару сделок в течении двух дней Перевел на реал Пытался запустить на VPS не получилось И в дальнейшем перестал работать, терминал выдал ошибки и подвис Изменено 7 декабря, 2020 пользователем Rabinovich дополнение Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 8 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 8 декабря, 2020 19 часов назад, Rabinovich сказал: Добрый день На демо советник запустил пару сделок в течении двух дней Перевел на реал Пытался запустить на VPS 0 не получилось И в дальнейшем перестал работать, терминал выдал ошибки и подвис Да, советник использует DLL, а «виртуальный» метаквотовский ВПС не поддерживает динамических библиотек. 2 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rabinovich Опубликовано 8 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 8 декабря, 2020 3 часа назад, Rigal сказал: Да, советник использует DLL, а «виртуальный» метаквотовский ВПС не поддерживает динамических библиотек. На демо работает норм, на реале начинает подгружать без остановки историю Не работает Может я чтото недонажал для реала? Извините за назойливость Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 8 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 8 декабря, 2020 13 минут назад, Rabinovich сказал: На демо работает норм, на реале начинает подгружать без остановки историю Не работает Может я чтото недонажал для реала? Извините за назойливость Откройте недельный график для каждой пары, на которую он жалуется. Дайте ему прогрузиться, нажмите на клавиатуре кнопку home несколько раз. Он должен прогрузить и перестать жаловаться. Я не думаю, что я использую недельные свечи, но механизм подгрузки написан универсально и грузит все вплоть до недель. 2 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 8 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 8 декабря, 2020 @Rabinovichвопросы по коржику задавайте в топике коржика - строго. Правила таковы - иначе оффтоп. Я перенес в топик коржика ваши последние вопросы из кориандра - но это слегка стремно и делать это весьма неудобно. Дальше придерживайтесь правил. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 9 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 9 декабря, 2020 В ветке кориандра набралось довольно много новых сетов. Я собираюсь сегодня дооптить пару сетов на девила и сделать сборку коржика. 13 1 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 10 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 @Rigal это у меня баг, или ночью рынок был столь недоброжелателен, что получилось 3 стопа подряд? Так нет нормального комментария - могу предложить, что был сбой? Магик:82111, 82112, 82113. 20201209.log Я понизил уровень логирования, перед установкой нового робота, что бы избежать перегрузки сервера, может не информативно будет. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 10 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 1 час назад, ademen сказал: @Rigal это у меня баг, или ночью рынок был столь недоброжелателен, что получилось 3 стопа подряд? Так нет нормального комментария - могу предложить, что был сбой? Магик:82111, 82112, 82113. 20201209.log 306 \u043a\u0411 · 0 загрузок Я понизил уровень логирования, перед установкой нового робота, что бы избежать перегрузки сервера, может не информативно будет. У меня три стопа по кориандру было ночью на этой паре. Все. комменты на месте 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
the 7th Guest Опубликовано 10 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 Аналогично. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 10 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 В 02.10.2020 в 15:51, Rigal сказал: Версия 2.8 - Добавлены стратегии InOut и другие - Систематизированы сеты кориандра - Добавлены все переопченные сеты девила на сегодняшний день (большинство из них еще не выкладывались в ветке) - Добавлен реестр сетов (в архиве, PDF) - Сеты разделены на две папки: те, что я включил в свой набор (Files/BasketTrader) и те, что я не стал включать - по разным причинам, большинство из них обсуждались в соответствующих ветках (Files/BasketTraderDiscarded) - В верхней части панели отображается версия советника, подсвечивается красным, если советнику запрещено торговать - Все недавние правки логгирования - Все недавние усовершенствования логики закрытия, включающие исправленную проблему @ademen, когда брокер не сохраняет маджик при частичном закрытии и возвращает код неуспеха из операции CloseBy - Добавлена цифровая подпись сетов: в сетах теперь можно менять только те параметры, которые не влияют на логику торговли. Это сделано, чтобы не было соблазна покрутить руками то, что было оттестировано и отстроено. В архиве новая версия советника, оба набора сетов и реестр всех сетов со статистикой. BasketTrader-2.8-TLAP.rar 926 \u043a\u0411 · 0 загрузок Изменено только что пользователем Rigal 2.8 Много всего, мощный релиз и я долго сомневался, отрезать ли сейчас, или подождать еще вот этих нескольких сетов - но потом решил, что этот процесс бесконечен, что я очень долго не дождусь состояния, когда "все готово". На подходе новые стратегии и сеты по ним, но я уже явно наводнил форум стратегии, на которые уже никто не обращает внимания. Пора на каникулы 14 5 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 10 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 2 минуты назад, Rigal сказал: - Добавлена цифровая подпись сетов: в сетах теперь можно менять только те параметры, которые не влияют на логику торговли. Это сделано, чтобы не было соблазна покрутить руками то, что было оттестировано и отстроено. Как это выглядит? Смогу ли я установить сеты с прошлой версии? Или нужно менять корзину? Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 10 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 6 минут назад, Rigal сказал: Добавлен реестр сетов (в архиве, PDF) Интересный способ составления корзины Через какое ПО делался реестр? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 10 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 1 час назад, ademen сказал: Интересный способ составления корзины Через какое ПО делался реестр? Это просто табличка в Numbers, я попрятал служебные колонки, которые проверяют уникальность маджиков и прочее. Часть моего общего реестра сетов на счете. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 10 декабря, 2020 Автор Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 10 декабря, 2020 1 час назад, ademen сказал: Как это выглядит? Смогу ли я установить сеты с прошлой версии? Или нужно менять корзину? Сеты с прошлой версии включены в корзину. 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 11 декабря, 2020 Поделиться [Советник] [Мультивалютник] Коржик Опубликовано 11 декабря, 2020 В 02.10.2020 в 10:51, Rigal сказал: Risk allocation method - метод разделения риска между стратегиями @Rigal где поподробнее можно прочитать о каждом методе? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти