Сопровождение ордеров - страница 4

 
Aleksey Mavrin:

в соседней ветке Artyom Trishkin давал ссылку на его статью, в которой про сопровождение ордеров, идея у меня была такая - вести каждую сделку со своим маджиком (чтобы эксперт присваивал свой маджик каждой своей сделке(серии сделок) по определенным правилам, и мог найти/отличить все свои сделки (с разными маджиками)), по нему можно и учет частичного закрытия и т.п. вести. я пока это не реализовывал, но пойду по этому пути.

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

Если эксперт на счёте один это легко, а если не один то кажется программными методами гарантировать отсутствие пересечения номеров не получится, только организационными)

ап: ознакомился со способом  в статье, мне показался он не очень удобен. Например если я хочу чтобы ордер идентифицировался по нескольким признакам (стратегия открытия, закрытия, тип трейлинга СЛ, ТП, еще какие либо флаги-триггеры для сопровождения)

то по сути мне нужно в мэджике хранить номера всех этих признаков. Мне на ум приходит такой способ - разделить по разрядам десятичного числа, т.е. оставить первую сотню для уникального номера эксперта (т.е. экспертов на счете м.б. максимум 100)

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

Там как раз 1. Магик, 2. Группа 1 и 3. Группа 2. В группе может быть 15 подгрупп. В общем - вы невнимательно читали.
Но есть одно "но" - магик нельзя изменить.
 
Artyom Trishkin:
Там как раз 1. Магик, 2. Группа 1 и 3. Группа 2. В группе может быть 15 подгрупп. В общем - вы невнимательно читали.
Но есть одно "но" - магик нельзя изменить.

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

У вас возможных комбинаций 16*16, я говорил о количестве комбинаций 10 в степени 8, чувствуете разницу?)

 

написал скрипт частичного закрытия ордера по № тикета

#property copyright "IgorM"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property show_inputs

input int      Order_Ticket = -1;
input double   Lot          = 0.5;
//+------------------------------------------------------------------+
void OnStart()
{
   Print("Result GetTicketByOrderCloseLot( ", Order_Ticket, " , ", Lot, ") = ", GetTicketByOrderCloseLot(Order_Ticket, Lot));
}

//_______________________________________________________________________
int GetTicketByOrderCloseLot(const int ticket, const double lot, ushort separator = '#', int slippage = 30, color col = clrYellow)
{
   string result[];
   if(OrderSelect(ticket, SELECT_BY_TICKET)) {

      if(OrderCloseTime()==0) {     // если ордер не закрыт, то закроем
         if(!OrderClose(ticket, fmin(OrderLots(), lot), OrderType()==OP_BUY ? Bid : Ask, slippage, col)) {
            Print("Order not closed, error № ", GetLastError());
            return(-1);
         }
      }

      if(OrderSelect(ticket, SELECT_BY_TICKET) && OrderCloseTime()>0) {  // если ордер закрыт, то вернем тикет из комментария
         Print("Order closed ");
         if(StringSplit(OrderComment(), separator, result)==2) return(StrToInteger(result[1]));
      }
   }
   return(-1);
}
//+------------------------------------------------------------------+


проверил, работает, как проверял: открыл руками ордер 1 лот, во вкладке терминала "Журнал" скопировал строку с номером тикета в МЕ и затем из буфера вставил в окно настроек скрипта


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



UPD: возможно ошибаюсь, а если в МТ5 выполнить частичное закрытие ордера, то сервер комментарий не изменяет?


UPD2: возможно ошибаюсь, а если в МТ5 выполнить частичное закрытие ордера, то тикет "остатка ордера" не меняется? - если да, тогда в МТ5 частичное закрытие на хэдж счетах вообще без проблем

 
Igor Makanu:

UPD: возможно ошибаюсь, а если в МТ5 выполнить частичное закрытие ордера, то сервер комментарий не изменяет?

Насколько я знаю - возможность изменения комментария при любой торговой транзакции - в руках брокера. В альпари была функция такая настройки торговли (сейчас отключили т.к. не пользуется популярностью) - прикольная вещь, так вот при этом всякие подробности писались  в коммент, я тогда юзал МТ4, но вроде под оба работало.

 
Aleksey Mavrin:

Насколько я знаю - возможность изменения комментария при любой торговой транзакции - в руках брокера. В альпари была функция такая настройки торговли (сейчас отключили т.к. не пользуется популярностью) - прикольная вещь, так вот при этом всякие подробности писались  в коммент, я тогда юзал МТ4, но вроде под оба работало.

дополнил свой пост выше

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


ЗЫ: код частично закрытия мне нужен, вот собрался с мыслями написал пример, но начал в МТ5 проверять, там вообще без проблем все это, у меня мой ЕА под МТ5, по тикетам работает, а не по перебору всех ордеров и позиций, т.е. тикеты в коде ЕА всегда знаю и удаляю тикеты из обьектов  когда не нужны.... хм, но как бы МТ5 рулит в этом вопросе однозначно!

 
Igor Makanu:

дополнил свой пост выше

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


ЗЫ: код частично закрытия мне нужен, вот собрался с мыслями написал пример, но начал в МТ5 проверять, там вообще без проблем все это, у меня мой ЕА под МТ5, по тикетам работает, а не по перебору всех ордеров и позиций, т.е. тикеты в коде ЕА всегда знаю и удаляю тикеты из обьектов  когда не нужны.... хм, но как бы МТ5 рулит в этом вопросе однозначно!

Хм, я про это и говорю :), а то все ругаются на сложность. связка - ордер-сделка-позиция-ордер на закрытие-сделка закрывающая  очень удобна. Если память не изменяет, то тикет вас может подвести только на биржах, где при ролловере позиции тупо закрываются и открываются новые.

Там видимо надо  при ролловере делать инвентаризацию по магику, но я туда пока не лазил)

 
Aleksey Mavrin:

Хм, я про это и говорю :), а то все ругаются на сложность. связка - ордер-сделка-позиция-ордер на закрытие-сделка закрывающая  очень удобна. Если память не изменяет, то тикет вас может подвести только на биржах, где при ролловере позиции тупо закрываются и открываются новые.

Там видимо надо  при ролловере делать инвентаризацию по магику, но я туда пока не лазил)

На форексе она тоже тупо закрылась и вновь открылась совсем недавно. Вы этого не заметили. 

 
Igor Makanu:

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

А если был открыт ордер вручную?

 
Maksim Neimerik:

А если был открыт ордер вручную?

Igor Makanu:

написал скрипт частичного закрытия ордера по № тикета


проверил, работает, как проверял: открыл руками ордер 1 лот, во вкладке терминала "Журнал" скопировал строку с номером тикета в МЕ и затем из буфера вставил в окно настроек скрипта

 
Алексей Тарабанов:

На форексе она тоже тупо закрылась и вновь открылась совсем недавно. Вы этого не заметили. 

Что вы имеет ввиду? На Форексе это происходит по какой причине?