Изменение комментария в открытых ордерах - страница 3

 
prostotrader:

Вообще не понятно зачем что-то писать в комментариях, которые могут быть изменены брокером (Биржей) в любой момент?

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

Или какие-то другие параметры?

Так это можно и из советника увидеть.

Создеть структуру типа

А потом проверять изменения.

А Ваш вариант "искалечит" хард, постоянно читая-записывая.

В конце-концов есть Глобальные переменные терминала.

Автор темы так и не сказал для чего это ему нужно...

Считаете комментарии плохим способом помечать ордер - не пользуйтесь, мне без разницы.

Глобальные переменные - замечательное средство, сразу бы их и посоветовал, но ведь пришло бы человек 5-ть и закатило истерику о том как это плохо, даже хуже чем пользоваться комментарием.

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

Беспокойство о диске... это смешно. А когда фильмы смотрят, музыку слушают - ни кто о диске не беспокоится.  Когда интернетом пользуются - не беспокоятся. При открытии одной страницы еще сотня файлов на диск загружается, а в день, даже если ничего не делать не меньше стони страниц открывается.

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

 
prostotrader:

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

И, кстати, это именно Вы страдаете манией избранности.

Всегда начинаете с того, чтобы что-то обхаять, не приводя доводы.

P/S Кстати, самому Топикстартеру ответ-то не нужен - написал и ушел из темы :).

Да сколько можно приводить доводы?

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

2. Зачем перекодировать символ в магик, если можно просто проверить символ?

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

 
Dmitry Fedoseev:

Считаете комментарии плохим способом помечать ордер - не пользуйтесь, мне без разницы.

Глобальные переменные - замечательное средство, сразу бы их и посоветовал, но ведь пришло бы человек 5-ть и закатило истерику о том как это плохо, даже хуже чем пользоваться комментарием.

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

Беспокойство о диске... это смешно. А когда фильмы смотрят, музыку слушают - ни кто о диске не беспокоится.  Когда интернетом пользуются - не беспокоятся. При открытии одной страницы еще сотня файлов на диск загружается, а в день, даже если ничего не делать не меньше стони страниц открывается.

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

Полностью согласен.

 
Dmitry Fedoseev:

Да сколько можно приводить доводы?

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

2. Зачем перекодировать символ в магик, если можно просто проверить символ?

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

Вы, вероятно не все читали, что я писал выше.

1. Предложеное мною решение валидно только для ФОРТС.

2. Чарт ИД не "впихивается" в магик, просто добавлена проверка, как возможность (я не использую).

3. 65535 вариантов Магигов вполне достаточно, чтобы "помечать" ордера - все они, за счет старших 6 байт,

гарантированно будут принадлежать только этому советнику на данном инструменте!

4. Если чарт закрылся, то при открытии вновь принадлежность магиков будет установлена (если не использовать проверку чарта ИД).

Добавлено

Если у Вас алергия на чарт ИД, то вот такой вариант Вас устроит?

//+------------------------------------------------------------------+
//|                                                    AutoMagic.mqh |
//|                                 Copyright 2017-2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//version   "1.01
ulong symb_magic;
//-------------------------------------------------------------------+
// Split string function                                             |
//+------------------------------------------------------------------+
string SplitString(const string a_str,ulong &a_month,ulong &a_year)
  {
   int str_size=StringLen(a_str);
   int str_tire=StringFind(a_str, "-");
   int str_tochka=StringFind(a_str, ".", str_tire);
   if((str_tire>0) && (str_tochka>0) &&(str_size > 0))
     {
      a_month= ulong(StringToInteger(StringSubstr(a_str,str_tire+1,str_tochka-str_tire-1)));
      a_year = ulong(StringToInteger(StringSubstr(a_str,str_tochka+1,str_size-str_tochka-1)));
      if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, str_tire));
     }
   return("");
  }
//-------------------------------------------------------------------+
// Get Magic function                                                |
//+------------------------------------------------------------------+
ulong GetMagic(const string a_symbol)
{
//--- Get ChartID
  symb_magic = 0;
  if(SymbolSelect(Symbol(), true) == false)
  {
    Print(__FUNCTION__, ": Нет такого символа!");
    return(0);
  }
  ulong month = 0;
  ulong year = 0;
  string new_str = SplitString(a_symbol,month,year);
  if(StringLen(new_str)>0)
  {
    uchar char_array[];
    int result=StringToCharArray(new_str,char_array,0,WHOLE_ARRAY,CP_ACP);
    if(result>0)
   {
     ulong value;
     for(int i = 0; i < result - 1; i++)
     {
       value=ulong(char_array[i]);
       value<<=(56 -(i*8));
       symb_magic += value;
     }
     month<<=24;
     symb_magic += month;
     year<<=16;
     symb_magic += year;
     return(symb_magic);
   }
 }
  return(0); 
}
//-------------------------------------------------------------------+
// Is my magic function                                              |
//+------------------------------------------------------------------+
bool IsMyMagic(const ulong m_magic)
{
  if(m_magic > 0)
  {
    ulong stored_magic=symb_magic;
    stored_magic>>=16;
    ulong in_magic = m_magic;
    in_magic>>=16;
    if(in_magic == stored_magic) return(true);
  }  
  return(false);
}
//-------------------------------------------------------------------+
// Get stored magic function                                         |
//+------------------------------------------------------------------+
ulong GetStoredMagic()
{
  if(symb_magic > 0) return(symb_magic);
  return(0);  
}
 
prostotrader:

Вы, вероятно не все читали, что я писал выше.

1. Предложеное мною решение валидно только для ФОРТС.

2. Чарт ИД не "впихивается" в магик, просто добавлена проверка, как возможность (я не использую).

3. 65535 вариантов Магигов вполне достаточно, чтобы "помечать" ордера - все они, за счет старших 6 байт,

гарантированно будут принадлежать только этому советнику на данном инструменте!

4. Если чарт закрылся, то при открытии вновь принадлежность магиков будет установлена (если не использовать проверку чарта ИД).

Добавлено

Если у Вас алергия на чарт ИД, то вот такой вариант Вас устроит?

Вот-вот... о этом и предупреждал,  хоть "кол на голове теши"... фоооооррртсссс (мы и избранные! у нас даже переменная uint не такая как у жалких форексовцев)

...

Дальше не буду продолжать эти сопру. Понимающему достаточно.

 
Dmitry Fedoseev:

Вот-вот... о этом и предупреждал,  хоть "кол на голове теши"... фоооооррртсссс (мы и избранные! у нас даже переменная uint не такая как у жалких форексовцев)

...

Дальше не буду продолжать эти сопру. Понимающему достаточно.

Вы, вероятно не проснулись ещё :)

Где Вы увидели uint есть ulong

struct MqlTradeRequest 
  { 
   ENUM_TRADE_REQUEST_ACTIONS    action;           // Тип выполняемого действия 
   ulong                         magic;            // Штамп эксперта (идентификатор magic number) 
   ulong                         order;            // Тикет ордера 
   string                        symbol;           // Имя торгового инструмента 
   double                        volume;           // Запрашиваемый объем сделки в лотах 
   double                        price;            // Цена  
   double                        stoplimit;        // Уровень StopLimit ордера 
   double                        sl;               // Уровень Stop Loss ордера 
   double                        tp;               // Уровень Take Profit ордера 
   ulong                         deviation;        // Максимально приемлемое отклонение от запрашиваемой цены 
   ENUM_ORDER_TYPE               type;             // Тип ордера 
   ENUM_ORDER_TYPE_FILLING       type_filling;     // Тип ордера по исполнению 
   ENUM_ORDER_TYPE_TIME          type_time;        // Тип ордера по времени действия 
   datetime                      expiration;       // Срок истечения ордера (для ордеров типа ORDER_TIME_SPECIFIED) 
   string                        comment;          // Комментарий к ордеру 
   ulong                         position;         // Тикет позиции 
   ulong                         position_by;      // Тикет встречной позиции 
  };

Действительно лучше не продолжать :)

 

Когда-то на MT4 несколько раз столкнулся с ситуацией, что на счете, где торгуют только советники со своими мэджиками, появлялись ордера с нулевым мэджиком. Это был очень редкий баг стороннего софта брокера (хитрое стечение обстоятельств частичных исполнений). Поэтому приходилось мэджик прописывать и в комментарий в виде [123] для большей надежности. И если советник видел ордер с нулевым мэджиком, он пытался взять его еще и из комментария.

Такой подход позволил полностью избавиться от последствий бага обнуления мэджика.

 
fxsaber:

Когда-то на MT4 несколько раз столкнулся с ситуацией, что на счете, где торгуют только советники со своими мэджиками, появлялись ордера с нулевым мэджиком. Это был очень редкий баг стороннего софта брокера (хитрое стечение обстоятельств частичных исполнений). Поэтому приходилось мэджик прописывать и в комментарий в виде [123] для большей надежности. И если советник видел ордер с нулевым мэджиком, он пытался взять его еще и из комментария.

Такой подход позволил полностью избавиться от последствий бага обнуления мэджика.

В данном случае нет обнуления магика(старшие 6 байт всегда имеют значение > 0)

 
prostotrader:

Вы, вероятно не проснулись ещё :)

Где Вы увидели uint есть ulong

Действительно лучше не продолжать :)

По ошибки написал uint. Для магика ulong, но и это ситуации не исправляет. За то очень хорошо вас характеризует - сразу напасть на очевидную описку, и возрадоваться от своего триумфа.

 
Dmitry Fedoseev:

По ошибки написал uint. Для магика ulong, но и это ситуации не исправляет

Конкренто что не исправляет?

Мало магиков 65535?

Причина обращения: