Это ошибка или так задумано?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Viktorov
35767
Alexey Viktorov  

Согласно документации тикет позиции имеет тип long

POSITION_TICKET

Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта позиция, следует использовать свойство POSITION_IDENTIFIER.
 

Значение POSITION_TICKET соответствует MqlTradeRequest::position.

long

Так-же как и magick

POSITION_MAGIC

Magic number для позиции (смотри ORDER_MAGIC)

long


Но в структурах MqlTradeTransaction

struct MqlTradeTransaction 
  { 
   ulong                         deal;             // Тикет сделки 
   ulong                         order;            // Тикет ордера 
   string                        symbol;           // Имя торгового инструмента 
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Тип торговой транзакции 
   ENUM_ORDER_TYPE               order_type;       // Тип ордера 
   ENUM_ORDER_STATE              order_state;      // Состояние ордера 
   ENUM_DEAL_TYPE                deal_type;        // Тип сделки 
   ENUM_ORDER_TYPE_TIME          time_type;        // Тип ордера по времени действия 
   datetime                      time_expiration;  // Срок истечения ордера 
   double                        price;            // Цена  
   double                        price_trigger;    // Цена срабатывания стоп-лимитного ордера 
   double                        price_sl;         // Уровень Stop Loss 
   double                        price_tp;         // Уровень Take Profit 
   double                        volume;           // Объем в лотах 
   ulong                         position;         // Тикет позиции 
   ulong                         position_by;      // Тикет встречной позиции 
  };

и MqlTradeRequest

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;      // Тикет встречной позиции 
  };

 они имеют тип ulong. То-же самое и с тикетами ордера и сделки.

Это несоответствие заставляет чаще прибегать к явному приведению типов. Может лучше исправить это несоответствие?

Alexey Viktorov
35767
Alexey Viktorov  
@Slava можете-ли Вы прокомментировать этот вопрос?
fxsaber
13557
fxsaber  
*GetInteger-функции возвращают всегда long. Поэтому любое целочисленное свойство возможно получить только long-типа.
Alexey Viktorov
35767
Alexey Viktorov  
fxsaber:
*GetInteger-функции возвращают всегда long. Поэтому любое целочисленное свойство возможно получить только long-типа.

А разве не integer?

Ну в таком случае не целесообразно-ли в структуре поменять тип?

fxsaber
13557
fxsaber  
Alexey Viktorov:

А разве не integer?

Ну в таком случае не целесообразно-ли в структуре поменять тип?

Мне не мешает, поэтому не знаю. Сам использую такое

  #define TICKET_TYPE long
  #define MAGIC_TYPE  long
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий