Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 814
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Há alguma forma de impedir que estas caixas de verificação inseparáveis - novos objectos - preencham a minha lista de objectos uma e outra vez?
Aqui, nas definições, remover as notícias e recarregar o terminal
Há alguma forma de impedir que estas caixas de verificação inseparáveis - novos objectos - preencham a minha lista de objectos uma e outra vez?
Aqui nas definições, remover as notícias e reiniciar o terminal
Kirill, muito obrigado. Caso contrário o meu perito percorre os objectos - percorre-os uma e outra vez.
Obrigado.
Estou a tentar aprender a utilizar a função OnTradeTransaction.
Quando o utilizo no testador, vejo o seguinte problema. Uma ordem é aberta e consequentemente a OnTradeTransaction é chamada. Neste momento, obtenho o tamanho da posição dentro da OnTradeTransaction utilizando a classe CPositionInfo. Tudo está bem. Depois na mesma chamada chamo outra função directamente da OnTradeTransaction e aí CPositionInfo devolve zero, ou seja, não é o que eu preciso. Mais alguns minutos depois tentei obter o tamanho da posição no OnTimer, mas lá estava tudo bem, isto é, 1. É claro que a posição não foi fechada e aberta novamente ao longo de toda a história.
Pergunta. Porque é que a CPositionInfo devolve na OnTradeTransaction o que precisa, mas noutra função chamada da OnTradeTransaction devolve 0 em vez do volume da posição.
Aqui estão os registos. (Posição aberta às 10:30:12 fechada às 10:48:53)
Isto desencadeia uma ordem.
2017.09.22 10:30:12 encomenda [#3 limite de compra 1.00 SBRF-3.18 em 19352] desencadeada
A OnTradeTransaction é chamada três vezes. CPositionInfo em cada chamada o volume da posição é igual a 1. Na última chamada de TRADE_TRANSACTION_HISTORY_ADD eu chamo a função.
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_DEAL_ADD order=3 order_type=ORDER_TYPE_BUY state=ORDER_STATE_STARTED Price=19352.0 deal=2 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_ORDER_DELETE order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_HISTORY_HISTORY_ADD order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
Numa função chamada da OnTradeTransaction.
2017.09.22 10:32:50 Há uma posição 0.0 no símbolo citado SBRF-3.18 em direcção a POSITION_TYPE_BUY
Depois de algum tempo a tentar obter volume novamente no OnTimer
2017.09.22 10:40:00 In OnTimer Symbol=SBRF-3.18 Volume=1.0
Fecha posição
2017.09.22 10:48:53 encomenda [#5 limite de venda 1.00 SBRF-3.18 em 19435] desencadeada
Estou a tentar aprender a utilizar a função OnTradeTransaction.
Quando o utilizo no testador, vejo o seguinte problema. Uma ordem é aberta e consequentemente a OnTradeTransaction é chamada. Neste momento, obtenho o tamanho da posição dentro da OnTradeTransaction utilizando a classe CPositionInfo. Tudo está bem. Então na mesma chamada chamo outra função directamente da OnTradeTransaction e CPositionInfo lá devolve zero, ou seja, não é o que eu preciso. Mais alguns minutos depois tentei obter o tamanho da posição no OnTimer, mas lá estava tudo bem, isto é, 1. É claro que a posição não foi fechada e aberta novamente ao longo de toda a história.
Eis a minha pergunta. Porque é que a CPositionInfo devolve o que eu preciso na OnTradeTransaction mas noutra função chamada da OnTradeTransaction, devolve 0 em vez do volume da posição.
Aqui estão os registos. (Posição aberta às 10:30:12 fechada às 10:48:53)
Isto desencadeia uma ordem.
2017.09.22 10:30:12 encomenda [#3 limite de compra 1.00 SBRF-3.18 em 19352] desencadeada
A OnTradeTransaction é chamada três vezes. CPositionInfo em cada chamada o volume da posição é igual a 1. Na última chamada de TRADE_TRANSACTION_HISTORY_ADD eu chamo a função.
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_DEAL_ADD order=3 order_type=ORDER_TYPE_BUY state=ORDER_STATE_STARTED Price=19352.0 deal=2 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_ORDER_DELETE order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
2017.09.22 10:30:50 Synmvo =SBRF-3.18 TRADE_TRANSACTION_HISTORY_HISTORY_ADD order=3 order_type=ORDER_TYPE_BUY_LIMIT state=ORDER_STATE_FILLED Price=19352.0 deal=0 deal_type=DEAL_TYPE_BUY Position direction POSITION_TYPE_BUY Volume 1.0
Numa função chamada da OnTradeTransaction.
2017.09.22 10:32:50 Há uma posição 0.0 no símbolo citado SBRF-3.18 em direcção a POSITION_TYPE_BUY
Depois de um tempo a tentar obter volume novamente no OnTimer
2017.09.22 10:40:00 In OnTimer Symbol=SBRF-3.18 Volume=1.0
Fecha a posição
2017.09.22 10:48:53 encomenda [#5 limite de venda 1.00 SBRF-3.18 em 19435] desencadeada
E porquê utilizar CPositionInfo se existe a estrutura MqlTradeTransaction com toda a informação sobre encomenda, negócio e posição?
Por conveniência. Uma pequena função é chamada da MqlTradeTransaction. Encontra o elemento necessário através da procura de elementos da classe. Então, uma das funções da classe é chamada para este elemento e faz algo de útil.
Por conveniência. Uma pequena função é chamada da MqlTradeTransaction. O elemento necessário é aí encontrado através da procura de elementos da classe. Uma das funções da classe é chamada para este elemento e faz algo de útil.
Aparentemente, é necessário alterar todo o algoritmo para o fazer. O problema está muito mal descrito. Se precisou de algumas aulas sem utilizar a OnTradeTransaction, não precisa de algumas aulas utilizando a OnTradeTransaction. É exactamente por isso que diz
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
FAQ de Iniciantes MQL5 MT5 MetaTrader 5
Alexey Viktorov, 2017.12.30 09:04
E porquê utilizar CPositionInfo quando existe a estrutura MqlTradeTransaction onde se encontram todas as informações de encomenda, negócio e posição?
Durante a execução desta função, ocorrem eventos, por exemplo - Comércio, Temporizador, etc.
É possível saber que estes eventos ocorreram sem terminar a execução da função Abc()?