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
Olá a todos
Desculpe, mas falei cedo demais. Ao acrescentar RefreshRates() parece fazer diferença, ainda estou tendo o mesmo problema. Às vezes abre ambas as ordens pendentes, às vezes apenas uma das duas, e às vezes nenhuma delas. Ainda estou recebendo erro 130 quando não abre uma ordem, ou ambas, mas nenhum erro quando ambas realmente são abertas. Também notei que naqueles pares onde minhas entradas estão abaixo do MODE_STOPLEVEL, ele nunca abre uma ordem e eu sempre tenho erro 130, mesmo que o programa ajuste minhas entradas conforme solicitado. Estou imprimindo os valores e eles são ajustados conforme esperado. Portanto, estou tentando descobrir porque meu OrderSend não funciona de verdade.
Em um par como o EURUSD, onde o estojo é 5, ele geralmente envia os dois pedidos, mas nem sempre. Entretanto, em um par como o EURAUD, onde o estojo é 10, ele nunca envia um pedido.
Eu também já tentei assim, mas não faz diferença:
E mesmo que eu faça isso, não faz diferença:
Obrigado a todos por toda a ajuda. Finalmente consegui que funcionasse. A única maneira de conseguir que funcionasse de forma consistente foi mudando-o para isso:
Também descobri que o nível do Pipmove antes que a ordem pendente seja ativada também deve ser mais alto do que o stoplevel. Então tudo parece funcionar agora... Obrigado
Obrigado a todos por toda a ajuda. Finalmente consegui que funcionasse. A única maneira de conseguir que funcionasse de forma consistente foi mudando-o para isso:
Também descobri que o nível do Pipmove antes que a ordem pendente seja ativada também deve ser mais alto do que o stoplevel. Então tudo parece funcionar agora... Obrigado
A resposta simples é não tentar abrir pedidos pendentes tão perto do preço atual. 5 Pontos é normalmente meio pip
Obrigado pela resposta. Meu cálculo está na verdade em pips, então as ordens pendentes estão a pelo menos 50 pontos (5 pips de distância do preço atual), no entanto, parece funcionar se eu o mover pelo menos 1 pip mais longe do stoplevel, que é 50 pontos no EURUSD. Agora parece que ele abre ambas as negociações, exceto a primeira, depois que eu o arrasto para o gráfico. Mas estou bem com isso por enquanto. Meu código agora se parece com isto:
Uma vez que uma das ordens pendentes é acionada, uma de duas coisas pode acontecer: ou aciona o TrailingStop e a outra ordem pendente é apagada. ou se essa negociação for contra mim deve abrir uma sebe na direção oposta. Dependendo de como escrevo o código, ou abrirá mais de uma sebe ou não abrirá nenhuma sebe. Já tentei alguma coisa, incluindo as duas seguintes:
Ou:
Devo usar um laço separado para isso? Obrigado.
Olá a todos
Foram semanas de tentativas e ainda não fiz nenhum progresso. Tudo funciona agora, exceto que sob certas condições a EA abre mais de um comércio de hedge no comércio original. O SL no comércio original é de 11 pips e o SL no comércio de Hedge é de 9 pips. Às vezes o comércio de hedge é interrompido a 9 pips enquanto o comércio original ainda está aberto. Então, abrirá um segundo comércio de hedge e até mesmo um 3º e 4º enquanto o comércio original ainda está aberto. Eu simplesmente quero limitar a quantidade de comércio de hedge a um e se ele for interrompido, basta esperar e ver o que acontece com o comércio original.
Este é o tipo de resultado que eu recebo:
576 2015.01.15 11:39 comprar parada 29 0.48 1.16786 1.16616 0.00000 0.00 4834.24
577 2015.01.15 11:39 vender parada 30 0.48 1.16642 1.16812 0.00000 0.00 4834.24
578 2015.01.15 11:39 vender 30 0.48 1.16642 1.16812 0.00000 0.00 4834.24
579 2015.01.15 11:39 excluir 29 0.48 1.16786 1.16616 0.00000 0.00 0.00 4834.24
580 2015.01.15 11:42 comprar 31 1.44 1.16743 1.16653 0.00000 0.00 0.00 4834.24
581 2015.01.15 11:42 s/l 31 1.44 1.16653 1.16653 0.00000 -129.60 4704.64
582 2015.01.15 11:44 comprar 32 1.44 1.16742 1.16652 0.00000 0.00 4704.64
583 2015.01.15 11:44 s/l 30 0.48 1.16812 1.16812 0.00000 -81.60 4623.04
584 2015.01.15 11:48 modificar 32 1.44 1.16742 1.16893 0.00000 0.00 4623.04
As ordens de compra e venda (29 e 30) são abertas como deveriam. O preço então cai e a ordem de venda (30) é preenchida enquanto a ordem de compra (29) é apagada. O preço então sobe novamente e a ordem de hedge(martingale) (31) é acionada (3*lotsize). O preço então cai novamente e o hedge (31) é interrompido, mas como o 30 ainda está aberto, aciona outro hedge (32), etc. Como posso evitar que o pedido 32 seja acionado? Obrigado.
Olá a todos. Já faz mais de um mês que tentei resolver isto e estou começando a pensar que é programticamente impossível codificar. Por isso, se alguém quiser confirmar isto, eu posso colocar para descansar e seguir em frente. Não é possível estabelecer um nível profundo para o número de ordens de hedge(martingale) como explicado no post acima? Obrigado.
O melhor que eu tenho até agora é:
Há diferentes maneiras de se conseguir isso.
Quando o hedge é aberto, criar uma Variável Global do terminal do cliente.
Dê a ela um nome que inclua o número do bilhete do comércio principal.
Dê a ela um valor que funcione como uma bandeira de que um comércio de hedge foi aberto para esse número de bilhete, ou uma contagem de hedge, se necessário.
Verifique o GV antes de abrir um sebe.
O sebe e o comércio principal têm diferentes tamanhos de lote.
Antes de abrir um sebe, verifique as ordens abertas e o histórico para ver se uma ordem oposta foi aberta com o tamanho de lote relevante com um OrderOpenTime() mais tarde do que o tempo de abertura do comércio principal.
Há diferentes maneiras de se conseguir isso.
Quando o sebe é aberto, crie uma Variável Global do terminal do cliente.
Dê-lhe um nome que inclua o número do bilhete do comércio principal.
Dê a ele um valor que funcione como uma bandeira de que um comércio de cobertura foi aberto para esse número de bilhete, ou uma contagem de cobertura, se necessário.
Verifique o GV antes de abrir um sebe.
O sebe e o comércio principal têm diferentes tamanhos de lote.
Antes de abrir um hedge, verifique as ordens abertas e o histórico para ver se uma ordem oposta foi aberta com o tamanho de lote relevante com um OrderOpenTime() mais tarde do que o tempo de abertura do comércio principal.
Por isso, tentei conseguir isto através de uma Variável Global, mas desde que acrescentei este código, ele não está abrindo um comércio de hedge de forma alguma. Acho que a questão é que a EA está fazendo um GlobalVariableCheck, mas como ainda não foi criado nenhum, ele não vai continuar: