Как найти число заработанных пунктов у позиции из истории её сделок/ордеров - страница 4

 
o_O:
в ордере же есть инфа ORDER_PRICE_OPEN про цену установки.
Она может меняться.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

сделка от ордера

fxsaber, 2016.10.23 10:08

Ставим SellLimit по цене OrderPrice1 на 3 лота. Открылась сделка по DealPrice1 на 1 лот (из-за частичного исполнения).

Изменили цену оставшейся части лимитника на OrderPrice2. Открылась сделка по DealPrice2 на оставшуюся часть (2 лота).

 

По итогу инфа об OrderPrice1 (цена ордера, породившего первую сделку) утеряна. 

Добавлять нужно DEAL_ORDER_PRICE - цена ордера, породившего сделку.
 
fxsaber:
Она может меняться.
Добавлять нужно DEAL_ORDER_PRICE - цена ордера, породившего сделку.

для сделки 2 - цена ордере = OrderPrice2

для сделки 1 - цена оредра = OrderPrice1

где тут видите противоречие?

 
o_O:

для сделки 2 - цена ордере = OrderPrice2

для сделки 1 - цена оредра = OrderPrice1

где тут видите противоречие?

Сейчас в истории нет OrderPrice1.
 

таки да.

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

 
o_O:

таки да.

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

Да подумал примазаться к Вашей заявке. Все равно же она касается ENUM_DEAL_PROPERTY_DOUBLE
 
fxsaber:
Да подумал примазаться к Вашей заявке. Все равно же она касается ENUM_DEAL_PROPERTY_DOUBLE

к моей не получится )  я прошу данные которые есть в МТ5, а для вашей задачи их надо еще туда добавить.

поэтому, как сказал, надо обосновано описать в Сд суть проблемы, которая появляется без знаний цены ордера

 
o_O:

к моей не получится )  я прошу данные которые есть в МТ5, а для вашей задачи их надо еще туда добавить.

поэтому, как сказал, надо обосновано описать в Сд суть проблемы, которая появляется без знаний цены ордера

Оформил.
 
fxsaber:
Оформил.
К сожалению, отказали. Поэтому история останется неполноценной.
 
fxsaber:
К сожалению, отказали. Поэтому история останется неполноценной.
История некоторых платформ полноценней MT5 - среди свойств сделки есть requested price.
 
o_O:
сабж

Всем, привет.

Я считаю так:

//+------------------------------------------------------------------+
//| Возвращает профит за текущий день в пунктах (из истории)         |
//+------------------------------------------------------------------+
double GetDayPoint()
{
   ulong deal_ticket=0;          // тикет сделки
   ulong deal_order_last=0;      // ордер последней сделки
   double day_point = 0;         // дневной профит в пунктах
   MqlDateTime dt_struct;        // переменная типа структуры даты-времени
   TimeCurrent(dt_struct);
   dt_struct.hour=10;
   dt_struct.min=0;
   if(HistorySelect(StructToTime(dt_struct),TimeCurrent()))
   {
      uint hist_count=HistoryDealsTotal();
      // считаем профит за текущий день
      for(uint i=0; i<hist_count; i++)
      {
         if((deal_ticket = HistoryDealGetTicket(i))>0)
         {
            ulong deal_order=HistoryDealGetInteger(deal_ticket,DEAL_ORDER);
            long deal_entry=HistoryDealGetInteger(deal_ticket,DEAL_ENTRY);
            if(deal_entry==DEAL_ENTRY_OUT && (deal_order!=deal_order_last || deal_order==0))
            {
               deal_order_last=deal_order;
               double deal_profit = HistoryDealGetDouble(deal_ticket, DEAL_PROFIT);
               double deal_volume = HistoryDealGetDouble(deal_ticket, DEAL_VOLUME);
               double tick_value=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
               double tick_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);                
               day_point=day_point+deal_profit/deal_volume/tick_value*tick_size;
            }
         }
      }
   }
   else
      PrintFormat("%s: %s: Не удалось получить историю сделок!",EXPERT_NAME,__FUNCTION__);
   return(day_point);
}

Вроде работает. Но у меня эксперт для ФОРТС и торгует только фьючерс на индекс RTS, поэтому на других инструментах не проверял.