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
A opção certa usando um exemplo simples
Acho que é melhor se a ordem ainda não foi contabilizada na posição, basta esperar que ela seja contabilizada.
Eu não entendo a idéia.
Este diagrama mostra que quando uma ordem de mercado é colocada usando OrderSendAsync em MetaQuotes-Demo, é impossível capturar com segurança a ordem correspondente sendo colocada até que a ordem seja executada ou rejeitada. Ou seja, não há mecanismos simples no MT5 para avaliar os resultados intermediários de seus OrderSendAsync.
parece estar em tema,
Gostaria de ressaltar que este código :
trabalha sem falhas na DEMO (resultado=pedido),
mas em REAL - é impossível obter um resultado (resultado=0,0). ... A menos que você espere alguns segundos.
Parece estar no assunto,
Gostaria de ressaltar que tal código :
Na DEMO funciona sem falhas (resultado=pedido),
mas em REAL - é impossível obter resultado (resultado=0,0). ... A menos que você espere alguns segundos.
Faltam dados - logs, valores de campo de estrutura após OrderSend, nome do servidor comercial.
O ponto em poucas palavras é o seguinte: se houver uma ordem de mercado, considere-a também uma "posição". Em aspas porque é uma posição embrulhada. O código destacado geralmente não aparece em nenhum lugar. Mas evita a reabertura de posições. A coisa mais interessante aqui é destacada em vermelho. A necessidade deste chip não é imediatamente aparente.
Pode não haver um sinal comercial no próximo tique. Eu mesmo uso o estilo MT4, por isso não posso deixar de ver tais "posições" sem me meter em problemas.
Faltam dados - logs, valores de campo de estrutura após OrderSend, nome do servidor comercial.
2018.02.20 15:20:35.845 Pedido de compra nº 66745055 0.01 / 0.01 EURUSDeur no mercado feito em 610.625 ms
2018.02.20 15:20:35.935 Trades deal #5461453 comprar 0,01 EURUSDeur a 1,23403 feito (com base no pedido #66745055)
2018.02.20 15:20:35.845 TestBUY (EURUSDeur,M15) retcode=10009 deal=0 order=66745055
Se o pedido for atendido (10009) , por que negociar=0
Se o pedido é feito (10009) , por que negociar=0
Foi quase aí que a discussão começou. Os links têm todos os detalhes.
Existe uma solução para que a OrderSend funcione perfeitamente, mas isso seria a publicidade.
A opção certa usando um exemplo simples
O ponto em resumo é o seguinte: se existe uma ordem de mercado, considere-a também uma "posição". Em citações, porque é uma posição embrulhada. O código destacado geralmente não aparece em nenhum lugar. Mas evita a reabertura de posições. A coisa mais interessante aqui é destacada em vermelho. A necessidade deste chip não é imediatamente aparente.
A questão é que existem as chamadas ordens de fechamento de mercado. O mesmo SL/TP. Obviamente, não gostaríamos de ver tais ordens de mercado como "posições". E não gostaríamos de ver também os pedidos que fizemos para fechar. Portanto, a condição destacada é o filtro apropriado.
for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderGetTicket(i) && (OrderGetInteger(ORDER_TYPE) <= ORDER_TYPE_SELL) && !OrderGetInteger(ORDER_POSITION_ID) && (OrderGetString(ORDER_SYMBOL) == Symb)) Res++;
SZY Insira este código aqui e verifique o resultado no servidor de demonstração.
Convido todos os interessados a discutir esta questão. Minha opinião sobre este assunto é a seguinte:
for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderGetTicket(i) && (OrderGetInteger(ORDER_TYPE) <= ORDER_TYPE_SELL) && !OrderGetInteger(ORDER_POSITION_ID) && (OrderGetString(ORDER_SYMBOL) == Symb)) Res++;
Este laço adiciona uma posição se for encontrada uma ordem que não tenha um identificador de posição (o ID é zero).
Retornamos mais uma posição.
E se o pedido for cancelado pelo servidor?
...
Penso que ao calcular as ordens de mercado, devemos retornar WRONG_VALUE, por exemplo, se encontramos uma - as posições não podem ser inferiores a zero. Isto será um sinal de que há uma ordem de mercado não gravada. Mas não para adicionar o número de posições.