ORDER_POSITION_ID - página 20

 
Mikalas:
Você tem internet, não tem? A internet faz :)
Nein. Somente estatísticas oficiais. Somente relatórios fiscais legítimos, portanto, a Internet não é uma ajuda em nossa área. Não, não é.
 
barabashkakvn:
Nein. Somente estatísticas oficiais. Somente relatórios fiscais legítimos, portanto, a Internet não é uma ajuda em nossa área. Nein.

Está escrito no dorminhoco, no entanto, quePOSITION_IDENTIFIER não muda ao longo de sua vida.

Isso não é suficiente?

 
Mikalas:

Diz na dorminhoca, entretanto, quePOSITION_IDENTIFIER não muda ao longo de sua vida.

Isso não é suficiente?

Ajuda - isso eu sei:2

Pedi exemplos da vida, do comércio de ações:

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

ORDER_POSITION_ID

barabashkakvn, 2014.09.01 19:39

É uma pena que eu tenha fechado minha conta com o corretor. Alguém tem um histórico comercial que mostre claramente como está indo a clareira?

 
barabashkakvn:

Ajuda - Eu sei disso:

Pedi exemplos da vida, do comércio de ações:


Recebi....
 

Examinei o assunto deliberadamente e pedi desculpas pelas declarações incorretas. No final das contas, a verdade estava no meio. É verdade que uma posição existe do início ao fim de seu fechamento, com seu identificador e propriedades básicas permanecendo inalterados, quer tenha sido movida através de uma compensação ou não. No entanto, o preço de abertura da posição muda de fato. O cálculo da posição em si é exatamente como mostrado em meu posto anterior, ou seja, de uma compensação para outra é calculado o lucro/perda acumulado de uma posição aberta e este resultado é creditado na conta usando operações especiais de corretagem (negociações). Estas negociações são marcadas com comentários "[margem de variação aberta]" e "[margem de variação fechada]".

Aqui está o comentário de um funcionário da Otkritie, que descreve este processo com muita precisão:

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

MT5 Trading: Erros, Erros, Perguntas.

OpenBroker, 2013.02.26 09:59

Quero acrescentar aqui, em minha opinião, uma observação importante, para que ela possa ser levada em consideração ao planejar seus Conselheiros Especialistas.

Em FORTS, há duas sessões de compensação por dia: Intermediário (das 14:00 às 14:03, horário de Moscou) e Principal (das 18:45 às 19:00, horário de Moscou (ou 19:10 nos dias em que os contratos expiram)).

Para referência, compensação - é uma contabilidade de liquidações mútuas, em russo, é o momento da fixação de lucros/perdas em posições abertas/fechadas entre sessões de compensação.

O que é realmente importante. O importante é que, no momento da compensação, o Preço de Liquidação seja fixado. Ou seja, o preço do último comércio do período comercial anterior. Em termos de matemática, uma posição aberta é "mais ou menos" fechada e aberta ao Preço de Liquidação (naturalmente, nenhuma comissão adicional é cobrada nem pelo corretor nem pela troca por isso).

Assim, se você abriu uma posição antes da próxima compensação e ficou com ela no momento da compensação, então você tem uma mudança no preço de abertura dessa posição na MT5. E se, digamos, você tiver um "trailing stop" em pips, então ele será contado a partir do preço de compensação, e não a partir do preço do seu negócio.

Por exemplo, o contrato Si-03.13 foi comprado às 11h00, horário de Moscou, com preço 30500. É estabelecida uma parada de arrasto igual a 50 pips. Às 14h00, horário de Moscou, a posição não está fechada. O preço de liquidação da Compensação Intermediária foi de 30525. (ou seja, sua conta foi realmente compensada com (+25) rublos de cada contrato comprado). A partir das 14:03, horário de Moscou, o MT5 calculará uma parada móvel sobre o preço de 30525 (e não sobre o preço real do comércio que você fez - 30500).

A propósito, tal posição de rollover é praticada não somente em FORTS, mas também em algumas empresas forex. A meu ver, se apenas o preço de entrada de uma posição será alterado ou se será criada uma nova posição depende das regras da empresa.

Скажите, пожалуйста как именно происходит перенос позиций через ночь?
Почему именно происходит переоткрытие позиции с новой ценой ордера, а не с той же ценой?
Насколько я понимаю, переоткрытие с новой ценой ордера это ролловер (rollover).
Перенос позиции через ночь с той же ценой это своп и как бы долго позиция не удерживалась, цена ордера останется той же. Верно ??
Если так, то в ВТБ своп не применяется?
Или я в чём то ошибаюсь, расскажите..

Um swap de moeda é uma operação que consiste em duas transações de conversão opostas para a mesma quantidade de moeda negociada, com datas de valor e taxas de câmbio diferentes. Um tom/next swap significa duas transações de conversão, a primeira das quais é liquidada na data valor "tom", ou seja, no primeiro dia útil após a data da transação, excluindo fins de semana e feriados, e a outra oposta - na data à vista.
Se a posição aberta pelo Cliente não for fechada até a 1 hora da manhã, horário de Moscou, no dia seguinte à data da transação, o Banco deverá transferir independentemente a posição para o dia útil seguinte realizando um swap de moeda "tom/next". Ao fazer isso, fechará a posição existente na data valor e simultaneamente a reabrirá na próxima data valor.
As disposições deste parágrafo serão consideradas pelas Partes como um pedido irrevogável do Cliente para realizar uma transação de troca de moeda com o Banco no caso descrito no parágrafo anterior, sob as seguintes condições
-a moeda base e a contra-moeda do swap correspondem à moeda base e à contra-moeda da posição aberta,
- a taxa da primeira transação de swap é igual à taxa atual do mercado no momento da execução do swap
- a taxa da segunda transação de swap é igual à taxa da primeira transação de swap ajustada pelo valor dos pontos de swap atuais do mercado (diferença positiva ou negativa entre as taxas "tom" e "spot" do mercado)
- a data valor da primeira transação de swap é a data "tom",
- a data valor da segunda transação de swap é a data "à vista".


Перенос позиции через ночь, как это работает ?? : ВТБ24
  • www.onlinebroker.ru
Валютный своп - операция, состоящая из двух противоположных конверсионных сделок на одинаковую сумму торгуемой валюты с разными датами валютирования и разными обменными курсами. Своп типа “tom/next“ (том/некст) означает проведение двух конверсионных сделок, расчеты по первой из которых осуществляются на дату валютирования “том“ (tom), то есть...
 

C-4, é muito bom que a discussão seja construtiva!

Portanto, preciso do preço "líquido" da posição, para saber (em um mês, por exemplo) qual é o meu lucro.

PorPOSITION_IDENTIFIER(como é implementado na minha posição), você pode ver o histórico de negócios recebidos da posição atual.

Mas eu queria implementá-la através deordens (às vezes uma ordem parcialmente executada "permanece" por dois ou três dias),

porque o pedido tem ORDER_POSITION_ID, que é o mesmo que

ePOSITION_IDENTIFIER, mas a ordem tem a mesma coisa.

Na função (estou usando-o agora):

//+------------------------------------------------------------------+
//| Expert Get history price function                                |
//+------------------------------------------------------------------+
double GetHistoryPrice( const string aSymbol )
{
  double price_in = 0;
  double volume_in = 0;
  
  if ( PositionSelect( aSymbol ) )
  {
    long pos_id = long( PositionGetInteger( POSITION_IDENTIFIER ) );
    
    if ( pos_id > 0 )
    {
      if ( HistorySelectByPosition( ulong( 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_in + price * volume;
              volume_in = volume_in + volume;  
            }
          }  
        }
        if ( volume_in > 0 ) return( NormalizeDouble( price_in / volume_in, _Digits ) );
      }
      else
      {
        Print( "Не возможно получить историю позиции по символу ", aSymbol );
      }
    }
    else
    {
      Print( "Не возможно определить идентификатор позиции по символу ", aSymbol );
    }
  }
  return( 0 );
}

ainda nos referimos ao bilhete de pedido(order_ticket),

com base na qual a transação foi feita (ou seja, não podemos prescindir de um bilhete de ORDEM).

Eu pensei que mesmo que a ordem fosse parcialmente executada

Mas eu estava errado. OORDER_POSITION_ID é atribuído a ele.

é atribuída SOMENTE à ordem que foi completamente executada.

 

Mikalas:

Eu pensei que mesmo quando uma ordem é parcialmente executada

OORDER_POSITION_ID é atribuído ao pedido, mas eu estava errado.

é atribuída a uma ordem totalmente executada.

E se a parte não executada do pedido for removida, então a identificação aparece?
 
Dima_S:
E se a parte não executada do pedido for removida, a identificação aparece?
Sim, mas já na história...
 
Mikalas:
Sim, mas já na história...
E se a posição for fechada e a parte não executada da ordem não for removida e ela abrir (ou mudar) já outra posição?
 
Mikalas:

Mas eu queria implementar isto através de ordens (acontece que eu tenho uma ordem parcialmente executada "em pé" por um par ou três dias),

Sim, isso acontece no mercado de ações e essas situações devem ser levadas em conta. Esta é uma das desvantagens fundamentais das ordens de limite.

Mikalas:

...

ainda nos referimos ao bilhete de pedido(order_ticket),

que foi usado para executar o comércio (ou seja, precisamos do bilhete de pedido).

...

Em seu exemplo, acho que podemos substituí-lo:

ulong order_ticket = ulong( HistoryDealGetInteger( deal_ticket, DEAL_ORDER ) );

Para:

int deals = HistoryDealsTotal();
for( int i = 0; i < deals; i++ )
{
   ulong deal_ticket = HistoryDealGetTicket(i);
   ENUM_DEAL_TYPE type = (ENUM_DEAL_TYPE)HistoryDealGetInteger(deal_ticket, DEAL_TYPE);
   ENUM_DEAL_ENTRY entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(deal_ticket, DEAL_ENTRY);
   if((type == DEAL_TYPE_BUY || type == DEAL_TYPE_SELL) && entry = DEAL_ENTRY_IN)
   {
      double price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE );
      double volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME );                       
      price_in = price_in + price * volume;
      volume_in = volume_in + volume; 
   }
}

Uma vez que todas as operações de compra e venda são iniciadas por algum tipo de ordem.

Razão: