Перейти к содержанию

[Советник] [Мультивалютник] Коржик


Rigal

Рекомендуемые сообщения

[Советник] [Мультивалютник] Коржик Опубликовано
52 минуты назад, Rigal сказал:

А можно скриншот истории сделок. 

Меня интересует эта группа ордеров на покупку по GBPCAD, в частности, тикет 275698281

Хочу увидеть, когда и как он был закрыт

image.thumb.png.4bbee49a8b13cdc08518492749f64b06.png

Тот что остался:

image.thumb.png.3e079c0663e768d00a1cd8f2ebca7ec5.png

 

@Rigal я готов терпеть CloseBy,пока не получится найти и нейтрализовать ошибку, только напиши когда тебе уже не понадобиться Trace уровень логирования, сильно грузит сервер.

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 1,2k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Название советника: BasketTraderГод выпуска: 2020Версия: 2.25.1Сайт продажи: некоммерческая разработка tlap.comВалютные пары: множество, определяется структурой сетов (прилагаются 25 сетов на разные п

Перейти

Спасибо, очень приятно я только очень хочу уточнить один момент: это не я и моя команда. мы - единомышленники, мы работаем сообща и делимся всем, что у нас есть: ресурсами, временем, навыкам

Перейти

Начинаю выкладывать сеты для Коржика. Первый сет USDCHF. Тест 2015-2020. Период опта 2016-2018.Комиссия $4.Проскальзывание 300-500мс.В принципе, сам сет не нужен-уже выложен в первом посте.Значение им

Перейти
[Советник] [Мультивалютник] Коржик Опубликовано
3 часа назад, ademen сказал:

image.thumb.png.4bbee49a8b13cdc08518492749f64b06.png

Тот что остался:

image.thumb.png.3e079c0663e768d00a1cd8f2ebca7ec5.png

 

@Rigal я готов терпеть CloseBy,пока не получится найти и нейтрализовать ошибку, только напиши когда тебе уже не понадобиться Trace уровень логирования, сильно грузит сервер.

А еще вопрос: у оставшегося в рынке ордера на 0.12 - какой маджик?

 

Я точно понимаю порядок событий на вашем счету сейчас, шаг за шагом. Я при этом не понимаю причины некоторых из них

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
6 минут назад, Rigal сказал:

А еще вопрос: у оставшегося в рынке ордера на 0.12 - какой маджик?

 

Я точно понимаю порядок событий на вашем счету сейчас, шаг за шагом. Я при этом не понимаю причины некоторых из них

Пишет, установлен вручную, вручную ничего не открывал.

  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
15 минут назад, ademen сказал:

Пишет, установлен вручную, вручную ничего не открывал.

Вот, нашлась причина номер один.

 

Итак, что произошло:

  • На старте было открыто три покупки по 0.06 лота
  • Советник, как и полагалось, открыл продажу на локирующий лот, 0.18, ордер #275765614 маджик 65124387 
  • После этого он отправил первую пару на закрытие:  покупка #275698281 0.06 и упомянутый локирующий ордер
  • Эти два ордера были закрыты успешно, но возникло две неожиданости:
    • Остаток 0.12 был переоткрыт без маджика
    • Операция закрытия вернула код неуспеха (само по себе не смертельно, но советник попробовал закрыть ту же пару еще 9 раз)
  • Советник перешел к следующему ордеру, но локирующего ордера уже не нашел, поэтому закрыл остальные ордера как есть

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

Как выясняется, есть по крайней мере один брокер, который не сохраняет маджик в переоткрытом остатке.

Я полагаю, механизм можно переписать, искать ордер по набору других признаков: цена открытия, лот

Я подумаю и перепишу.

Но метак разочаровывающе отвратителен в обработке закрытия парами.

  • Лайк 6
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
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
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
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
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
8 минут назад, Rigal сказал:

Спасибо, но особенностью этого кода является как раз то, что он закрывает все ордера по символу.

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

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

Магик есть, просто строка закомментирована.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
В 05.12.2020 в 02:34, ademen сказал:

Магик есть, просто строка закомментирована.

Да. Но у вас проблема как раз в том, что маджик не сохраняется после переоткрытия.

 

Однако у меня есть хорошая новость: я за выходные перебрал свою библиотеку работы с ордерами... я давно собирался выписать закрытие по CloseBy для произвольного набора ордеров на одном символе. Потенциально разные маджики и потенциально включающие частично закрываемые ордера.

Ваша проблема послужила финальным толчком: стало очевидно, что мои предыдущие реализации не справляются.

 

Я уже выложил реализации ступидо с новой библиотекой.

На днях соберу в кучу коржика и сеты, авторизую и выложу новую версию.

  • Лайк 11
  • Спасибо 1
  • Огонь! 2
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано (изменено)

Добрый день 

На демо советник запустил пару сделок в течении двух дней

Перевел на реал

Пытался запустить на VPS 0 не получилось

И в дальнейшем перестал работать, терминал выдал ошибки и подвис

 

Screenshot_2.png

Screenshot_1.png

Screenshot_3.png

Screenshot_4.png

Изменено пользователем Rabinovich
дополнение
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано

Добавил к этой ветке и к отдельным веткам со стратегиями коржика тег:

https://tlap.com/forum/tags/коржик/

 

Теперь, легко можно найти все связанные ветки.

  • Лайк 6
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано (изменено)

Добрый день 

На демо советник запустил пару сделок в течении двух дней

Перевел на реал

Пытался запустить на VPS не получилось

И в дальнейшем перестал работать, терминал выдал ошибки и подвис

Screenshot_4.png

Screenshot_3.png

Screenshot_2.png

Screenshot_1.png

Изменено пользователем Rabinovich
дополнение
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
19 часов назад, Rabinovich сказал:

Добрый день 

На демо советник запустил пару сделок в течении двух дней

Перевел на реал

Пытался запустить на VPS 0 не получилось

И в дальнейшем перестал работать, терминал выдал ошибки и подвис

 

Screenshot_2.png

Screenshot_1.png

Screenshot_3.png

Screenshot_4.png

Да, советник использует DLL, а «виртуальный» метаквотовский ВПС не поддерживает динамических библиотек.

  • Лайк 2
  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
3 часа назад, Rigal сказал:

Да, советник использует DLL, а «виртуальный» метаквотовский ВПС не поддерживает динамических библиотек.

На демо работает норм, на реале начинает подгружать без остановки историю 

Не работает

Может я чтото недонажал для реала?

Извините за назойливость

33333.png

222.png

11111.png

Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
13 минут назад, Rabinovich сказал:

На демо работает норм, на реале начинает подгружать без остановки историю 

Не работает

Может я чтото недонажал для реала?

Извините за назойливость

33333.png

222.png

11111.png

Откройте недельный график для каждой пары, на которую он жалуется. Дайте ему прогрузиться, нажмите на клавиатуре кнопку home несколько раз. Он должен прогрузить и перестать жаловаться.

Я не думаю, что я использую недельные свечи, но механизм подгрузки написан универсально и грузит все вплоть до недель.

  • Лайк 2
  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано

@Rabinovichвопросы по коржику задавайте в топике коржика - строго.  Правила таковы - иначе оффтоп.

Я перенес в топик коржика ваши последние вопросы из кориандра - но это слегка стремно и делать это весьма неудобно.

Дальше придерживайтесь правил.

  • Спасибо 1
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано

В ветке кориандра набралось довольно много новых сетов.

Я собираюсь сегодня дооптить пару сетов на девила и сделать сборку коржика.

  • Лайк 13
  • Спасибо 1
  • Огонь! 3
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано

@Rigal это у меня баг, или ночью рынок был столь недоброжелателен, что получилось 3 стопа подряд?

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

Магик:82111, 82112, 82113.

image.thumb.png.0180c6413e19c37e3eb1b2871645ba32.png

20201209.log

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

 

Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
1 час назад, ademen сказал:

@Rigal это у меня баг, или ночью рынок был столь недоброжелателен, что получилось 3 стопа подряд?

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

Магик:82111, 82112, 82113.

image.thumb.png.0180c6413e19c37e3eb1b2871645ba32.png

20201209.log 306 \u043a\u0411 · 0 загрузок

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

 

У меня три стопа по кориандру было ночью на этой паре. Все. комменты на месте

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
В 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
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
2 минуты назад, Rigal сказал:

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

Как это выглядит? Смогу ли я установить сеты с прошлой версии? Или нужно менять корзину?

Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
6 минут назад, Rigal сказал:

Добавлен реестр сетов (в архиве, PDF)

Интересный способ составления корзины=b

Через какое ПО делался реестр?

Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
1 час назад, ademen сказал:

Интересный способ составления корзины=b

Через какое ПО делался реестр?

Это просто табличка в Numbers, я попрятал служебные колонки, которые проверяют уникальность маджиков и прочее.

Часть моего общего реестра сетов на счете.

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
1 час назад, ademen сказал:

Как это выглядит? Смогу ли я установить сеты с прошлой версии? Или нужно менять корзину?

Сеты с прошлой версии включены в корзину.

 

  • Лайк 4
Ссылка на сообщение
Поделиться на другие сайты

[Советник] [Мультивалютник] Коржик Опубликовано
В 02.10.2020 в 10:51, Rigal сказал:

Risk allocation method - метод разделения риска между стратегиями

@Rigal где поподробнее можно прочитать о каждом методе?

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...