Características da linguagem mql5, subtilezas e técnicas - página 23

 
Artyom Trishkin:
Não, não tens. Você só precisa saber como a última posição foi fechada (e você não precisa ir muito mais fundo na história para isso - é o suficiente para filtrar "seus" negócios) - o conhecimento até a última posição no fundo da história é mais estatístico do que operacional.
Bem, tudo isto é feito na OnTradeTransaction. Somente no gatilho publicado pela fxsaber : Eu adicionaria um cheque no símbolo, mágico e comércio em DEAL_ENTRY_OUT
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Alexey Viktorov:
Bem, tudo isto é feito na OnTradeTransaction. Somente em gatilho publicado por fxsaber : Eu adicionaria uma verificação no símbolo, mágico e comércio em DEAL_ENTRY_OUT
E como é que verificarias no testador?
 
Artyom Trishkin:
Como vai fazer o check-in no testador?
Da mesma maneira. Qual é a diferença? Eu tentei tudo no testador e no depurador para entender como funciona.
 
Alexey Viktorov:

Não olhei para este gatilho com cuidado, mas não vi nenhuma verificação da troca por DEAL_ENTRY_OUT. Afinal, é esta negociação que indica o fechamento da posição nas contas correntes.

O cheque não é necessário. O gatilho não funcionará no testador, porque o testador não gera alguns eventos de comércio.
 
fxsaber:
O cheque não é necessário. O gatilho não vai funcionar no testador, porque o testador não gera alguns eventos comerciais.

Quais, por exemplo, desta lista?

TRADE_TRANSACTION_ORDER_ADD

Adiciona uma nova ordem em aberto.

TRADE_TRANSACTION_ORDER_UPDATE

Modificação de uma ordem em aberto. Estas mudanças incluem não só mudanças explícitas no terminal do cliente ou no lado do servidor de negociação, mas também mudanças no estado de colocação de pedidos (por exemplo, de ORDER_STATE_STARTED para ORDER_STATE_PLACED ou de ORDER_STATE_PLACED para ORDER_STATE_PARTIAL etc.).

TRADE_TRANSACTION_ORDER_DELETE

Elimina a ordem da lista de ordens em aberto. Uma ordem pode ser excluída da lista de ordens abertas como resultado de uma solicitação de negociação ou como resultado da execução (preenchimento) e transferência para o histórico.

TRADE_TRANSACTION_DEALDEAL_ADD

Adicionando uma troca à história. Isto é realizado como resultado da execução da ordem ou como resultado das operações de saldo da conta.

TRADE_TRANSACTION_DEAL_UPDATE

A mudança de uma profissão na história. São possíveis situações em que um negócio previamente executado é alterado no servidor. Por exemplo, a transação foi modificada no sistema de comércio externo (bolsa), onde foi removida pelo corretor.

TRADE_TRANSACTION_DEAL_DELETE

Eliminação da transação do histórico. Pode haver situações em que uma negociação previamente executada é apagada no servidor. Por exemplo, o comércio foi eliminado no sistema de comércio externo (bolsa) onde foi removido pelo corretor.

COMÉRCIO_TRANSACÇÃO_HISTORY_ADD

Adicionando uma ordem ao histórico como resultado da execução ou cancelamento.

COMÉRCIO_TRANSACÇÃO_ACTUALIZAÇÃO_DA_HISTÓRIA

Modificação de um pedido colocado no histórico do pedido. Este tipo destina-se a aumentar a funcionalidade do lado do servidor comercial.

TRADE_TRANSACTION_HISTORY_DELETE

Eliminação de uma ordem do histórico da ordem. Este tipo é destinado à expansão de funcionalidades do lado do servidor comercial.

POSIÇÃO_DE_TRANSACÇÃO_COMERCIAL

Alteração de uma posição não relacionada com a execução da negociação. Este tipo de transação indica que a posição foi alterada no lado do servidor de negociação. O volume da posição, o preço de abertura e os níveis de Stop Loss e Take Profit podem ser alterados. Informações sobre mudanças são passadas para a estrutura da MqlTradeTransaction através do manipulador da OnTradeTransaction. Uma modificação de posição (adição, modificação ou eliminação) como resultado de uma negociação não causa a ocorrência da transação TRADE_TRANSACTION_POSITION.

PEDIDO_DE_TRANSACÇÃO_COMERCIAL

Uma notificação de que um pedido comercial foi processado pelo servidor e o seu resultado foi recebido. Para transações deste tipo é necessário analisar apenas um campo - tipo (tipo de transação) na estrutura MqlTradeTransaction. O segundo e terceiro parâmetros da função OnTradeTransaction (solicitação e resultado) devem ser analisados para obter informações adicionais.


A menos que o evento destacado não seja gerado. Então, quem precisa disso?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Quais deles, por exemplo, estão nesta lista?

Evento comercial é o meu termo.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Características da linguagem mql5, subtilezas e truques

fxsaber, 2017.02.28 19:30

Pode haver uma posição de COMPRA em aberto e uma ordem de COMPRA válida. Acima deu um exemplo de código, mas provavelmente mais fácil nos dedos. Como é que o TP de uma posição aberta dispara?

  • O preço atinge o TP da posição COMPRAR.
  • O servidor de negociação cria uma ordem de venda ativa correspondente.
  • Então o terminal tem simultaneamente uma posição de COMPRA e uma ordem de VENDA.
  • A ordem de venda é executada entrando na história e gerando um negócio lá.
  • A posição inicial de compra é fechada com base nesta troca, que não é capturada em nenhum lugar - ela está presente indiretamente na história do comércio.

O evento comercial selecionado não ocorre no testador.
 
fxsaber:

Evento comercial é o meu termo.

Um evento comercial em destaque não ocorre no testador.

Não é um evento, na minha opinião. São as subtilezas da sequência de execução da ordem. Por que devo apanhar o momento em que uma ordem de VENDA para fechar uma posição de COMPRA está no terminal em simultâneo com a própria posição?

Pode ser uma infelicidade que a sequência dos acontecimentos não seja observada, mas ... O que é o principal na negociação? Não é o acompanhamento do fluxo de eventos e a medição da velocidade? Se me abrirem uma posição amanhã ao preço pedido e a fecharem ontem, mas com lucro, eu não me oporei.

 
Alexey Viktorov:

Na minha opinião, isto não é um evento. São as subtilezas da sequência de execução da ordem. Por que devo apanhar o momento em que uma ordem de VENDA para fechar uma posição de COMPRA está no terminal, ao mesmo tempo que a própria posição?

Leia o título deste ramo.
 
fxsaber:
Leia o título do tópico.
Que diferença é que isso faz?
 
Alexey Viktorov:
O que vai mudar?
Nada vai mudar, mas as subtilezas são descritas - não há dúvida.
E a questão permanece: como essa função vai se fechar em pontos/paradas no testador?