Скачать MetaTrader 5

Тикет закрытой позиции как в мт4, как найти? как вытащить тикет закрытой позиции, по тикету сделки? РЕШЕНО!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladislav Andruschenko
99767
Vladislav Andruschenko  

Всем привет, 

кто рассуждал на тему приведения кода мт4 под мт5?

вот возникла такая сложность в определении:

 

в мт4:

Есть открытая позиция, у нее есть тикет 123, позиция закрывается ее тикет 123.

 

В мт5:

все кардинально по другому,

Позиция = сделка или несколько сделок с разными тикетами, но тикет позиции 1.

после закрытия появляется еще сделка уже с другим тикетом,

 

Вопрос: по сути, как вытащить тикет закрытой позиции, по тикету сделки?

DEAL_POSITION_ID пробовал но это не то.

Если позиция, например, состоит из нескольких сделок, к примеру 5 сделок = 5 тикетов,

мы открываем противоположную сделку, тем самым закрывая часть позиции,

Как сделать что-то похожее на мт4? голову ломаю, никак не могу придумать.  

 

 


 

РЕШЕНО 

 

для тех кто не знал, или скрывал :-) 

в общем: свойства сделок и IN и OUT выдает один и тот же идентификатор позиции, тоесть тикет, так что все нормально, просто в истории он другой но если залезть в МКЛ5 то можно вытянуть тикет нормально.

(PositionGetInteger(POSITION_IDENTIFIER))

 и

 HistoryDealGetInteger(HistoryDealGetTicket(i),DEAL_POSITION_ID) 

 

выдают один и тот же тикет позиции, и не важно сколько было открыто или закрыто сделок в этой позиции

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

 

 

но если вытянуть тикеты позиции  HistoryDealGetInteger(HistoryDealGetTicket(i),DEAL_POSITION_ID)  то все отлично 

 

 

или так например, первая графа тикет позиции вторая тикет сделки:

 

Dmitry Fedoseev
45349
Dmitry Fedoseev  
Сначала надо определиться, где же находятся тикеты позиций? Где? Когда найдете, где они находятся, тогда можно будет думать, как их от туда вытащить.
Vladislav Andruschenko
99767
Vladislav Andruschenko  
тикеты позиций находятся в истории,
Mikhail Filimonov
5931
Mikhail Filimonov  
Vladislav Andruschenko:

Всем привет, 

кто рассуждал на тему приведения кода мт4 под мт5?

вот возникла такая сложность в определении:

 

в мт4:

Есть открытая позиция, у нее есть тикет 123, позиция закрывается ее тикет 123.

 

В мт5:

все кардинально по другому,

Позиция = сделка или несколько сделок с разными тикетами, но тикет позиции 1.

после закрытия появляется еще сделка уже с другим тикетом,

 

Вопрос: по сути, как вытащить тикет закрытой позиции, по тикету сделки?

А что Вы вообще хотите узнать? (МТ5)

Зачем Вам тикет закрытой позиции?

Если нужно определить кол-во сделок, их напрвление  и цену исполнения, то нужно знать POSITION_IDENTIFIER

Vladislav Andruschenko
99767
Vladislav Andruschenko  

дело в другом

в мт4: 1 тикет на открытие и закрытие

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

 

привести функции мт5 в подобие мт4.

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

а если две сделки одинакового объема?  

Dmitry Fedoseev
45349
Dmitry Fedoseev  
Vladislav Andruschenko:
тикеты позиций находятся в истории,
Да? А где вообще у позиции тикет?
Vladislav Andruschenko
99767
Vladislav Andruschenko  
Mikhail Filimonov
5931
Mikhail Filimonov  
Dmitry Fedoseev:
Да? А где вообще у позиции тикет?

Вот пример, если позиция открыта (в примере только берутся данные по увеличению позиции.)

//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice( const string aSymbol )
{
  double price_in = 0;
  double volume_in = 0;
  
  if ( PositionSelect( aSymbol ) )
  {
    ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) );
    
    if ( pos_id > 0 )
    {
      if ( HistorySelectByPosition( pos_id ) )
      {
        int deals = HistoryDealsTotal();
      
        for( int i = 0; i < deals; i++ )
        {
          ulong deal_ticket = HistoryDealGetTicket( i );
          ulong order_ticket = ulong( HistoryDealGetInteger( deal_ticket, DEAL_ORDER ) );
        
          if ( order_ticket > 0 )
          {
            ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY( HistoryDealGetInteger( deal_ticket, DEAL_ENTRY ) );
              
            if ( deal_entry == DEAL_ENTRY_IN )
            {
              double price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE );
              double volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME );
                                
              price_in += price * volume;
              volume_in += volume;  
            }
          }
        }
        if ( volume_in > 0 ) return( NormalizeDouble( price_in / volume_in, _Digits ) );
      }
      else
      {
        Print( "GetPositionPrice: Невозможно получить историю позиции по символу ", aSymbol );
      }
    }
    else
    {
      Print( "GetPositionPrice: Невозможно определить идентификатор позиции по символу ", aSymbol );
    }
  }
  return( 0 );
}

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

взять ее ID ( POSITION_IDENTIFIER ) Идентификатор позиции позволит быстро найти сделки в истории.

Dmitry Fedoseev
45349
Dmitry Fedoseev  
Михаил:

Вот пример, если позиция открыта (в примере только берутся данные по увеличению позиции.)

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

взять ее ID ( POSITION_IDENTIFIER 

А мне то вы зачем рассказываете? 
Dmitry Fedoseev
45349
Dmitry Fedoseev  

Есть POSITIO_IDENTFIER используется в функции PositionGetInteger()

Есть DEAL_POSITION_ID используется в функции HistoryDealGetInteger()

Есть ORDER_POSITION_ID используется в функции HistoryOrderGetInteger()

Есть история ордеров и история сделок, других историй нет. 

Mikhail Filimonov
5931
Mikhail Filimonov  
Dmitry Fedoseev:
А мне то вы зачем рассказываете? 

Вы спросили - я ответил. 

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