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
Basicamente eu estabeleço duas ordens pendentes a uma hora específica, especificamente às 23:00 GMT+2, eu acho. Uma das ordens pendentes como uma parada de venda e a outra é uma parada de compra, ambas as ordens estão a uma distância igual da vela aberta a partir das 23:00, neste caso 14 pips. Ambas têm um TakeProfit de 28 pips (neste caso) e um StopLoss de 55 pips.
Agora quando ambas as ordens são cumpridas (essencialmente subindo e descendo 14 pips do preço aberto a partir da vela das 23:00 antes que as ordens expirem), eu quero que ambas as ordens tenham seus lucros de TakeProfit aumentados em, por exemplo, 20 pips. Assim, neste caso, o lucro de suas novas tomadas é de 58 pips. O stop loss, entretanto, deve ser mantido o mesmo durante todo o tempo. Essencialmente o que estou tentando fazer é uma espécie de hedging.
Se duas negociações estiverem abertas, então é provável que o preço vá em uma única direção, o suficiente para cancelar quaisquer perdas se os lucros de ambas as negociações forem aumentados. Para obter qualquer lucro, apenas uma negociação abriria e alcançaria o take profit ou ambas as negociações abririam e atingiriam o take profit sem ir longe em uma direção.
Espero que isto esteja claro, se não estiver, vou fornecer uma imagem que deve ser mais clara.
Eu estava me referindo ao seu cargo diretamente anterior
Aqui está o código revisado para toda a EA:
Espero que isto seja claro, se não for, vou fornecer uma imagem que deve ser mais clara.
Está claro, obrigado.
Então você só quer modificar estas ordens uma vez . . . então a resposta é simples. Você precisa verificar a barra das 23:00 e determinar os TPs nos quais as ordens deveriam ter sido abertas . . . se as ordens estão no mesmo TP então elas precisam ser modificadas, se não estão no mesmo TP então elas já foram modificadas e não precisam ser modificadas novamente . . simples.
Está claro, obrigado.
Então você só quer modificar estas ordens uma vez . . . então a resposta é simples. Você precisa verificar a barra das 23:00 e determinar os TPs nos quais as ordens deveriam ter sido abertas . . . se as ordens estão no mesmo TP então elas precisam ser modificadas, se não estão no mesmo TP então elas já foram modificadas e não precisam ser modificadas novamente . . simples.
Então, essencialmente, se houver duas negociações (mesmo símbolo e número mágico) a EA deve verificar os lucros das negociações abertas em comparação com as ordens pendentes anteriormente existentes (que agora são executadas) e então, se forem as mesmas, ela deve ser modificada, e uma vez que ela faça um loop, verificará novamente e descobrirá que elas não são as mesmas e, portanto, não modificará mais as negociações?
1. A modificação e verificação só deve acontecer quando há duas ordens abertas, como eu faria isso? Devo acrescentar ao código que já tenho ou começar de novo?
2. Portanto, essencialmente, se houver duas negociações (mesmo símbolo e número mágico) a EA deverá verificar os lucros das negociações abertas em comparação com as ordens pendentes anteriormente existentes (que agora são executadas) e, então, se forem as mesmas, ela deverá ser modificada, e uma vez que ela faça um loop, verificará novamente e descobrirá que não são as mesmas e, portanto, não modificará mais as negociações?
1. Passe pelas ordens abertas, verifique o símbolo, o número mágico, quando você tiver uma correspondência que não seja um tipo de ordem pendente incremente um contador . . . quando você passar pela verificação das ordens se você tiver contado 2, então você tem 2 ordens abertas para o símbolo e número mágico corretos . . . então agora você pode modificá-las . . ver 2.
2. Não, você não pode ver o TP das ordens pendentes se elas tiverem sido ativadas e agora não estão mais pendentes. O EA deve verificar a barra das 23:00 e descobrir quais teriam sido os TPs originais . . depois comparar estes com os TPs das 2 ordens pendentes . . a partir desta informação a decisão pode ser tomada para modificar ou não modificar.
1. Passe pelas ordens abertas, verifique o símbolo, o número mágico, quando você tiver uma correspondência que não seja um tipo de ordem pendente incremente um contador . . . quando você passar pela verificação das ordens se você tiver contado 2, então você tem 2 ordens abertas para o símbolo e número mágico corretos . . . então agora você pode modificá-las . . ver 2.
2. Não, você não pode ver o TP das ordens pendentes se elas tiverem sido ativadas e agora não estão mais pendentes. O EA deve verificar a barra das 23:00 e descobrir quais teriam sido os TPs originais . . depois comparar estes com os TPs das 2 ordens pendentes . . a partir desta informação a decisão pode ser tomada para modificar ou não modificar.
Ah, estou vendo, acredito que isto é o que tenho tentado fazer o tempo todo. Até agora uma das ordens é modificada (especificamente a ordem de compra 2 em meus testes), mas ela continua sendo modificada, será que eu uso 'quebra' para impedir que ela se repita? Também como eu conto e só modifico as ordens abertas quando e só há duas delas abertas? Tenho tentado usar o OrderTotal() para isto, mas não está funcionando, não acho que precisaria fazer duas peças de código separadas para cada ordem, certo?
Apenas as ordens abertas, mesmo numeradas, estão sendo modificadas e, como eu disse que elas são modificadas repetidamente, tentei várias combinações para OrderSelect() mas ainda não consigo entender, como eu disse que sou um noob total na MQL e esta EA está quase pronta, então eu gostaria de terminá-la. Eu li estehttps://book.mql4.com/trading/ordermodify teria algo a ver com minha situação? É para um stop loss, mas eu preciso dele para ter lucro, essencialmente.
O que estou fazendo de errado aqui?
Como eu iria verificar se o TP é o mesmo que a vela das 23:00? Seria necessário como tal, já que enquanto as ordens em aberto forem modificadas quando 2 delas estiverem lá, isso alcançaria o mesmo efeito? Ou isto é apenas para impedir que o pedido seja continuamente modificado e sim, eu verifiquei a documentação.
Obrigado,
madmax3
Seu retorno(0) o está retirando do início() antes que a 2ª ordem seja modificada.
Tudo que você está fazendo é selecionar a ordem por posição, verificando se ela tem o número mágico correto, verificando se é o símbolo correto e se é OP_BUY . . . . então você a modifica, onde você está determinando se ela já foi ou não modificada ?
Você EA tem que ser capaz de recuperar de ser interrompido . ... se seus pedidos forem feitos e o MT4 falhar ele tem que ser capaz de retomar de onde parou quando for reiniciado.
É por isso que você precisa determinar se o pedido já foi modificado ou se precisa ser modificado. ... como ?
"Eu estabeleço duas ordens pendentes a uma hora específica, especificamente às 23:00 GMT+2, penso eu. Uma das ordens pendentes como uma parada de venda e a outra é uma parada de compra, ambas as ordens estão a uma distância igual da vela aberta a partir das 23:00, neste caso 14 pips. Ambas têm um TakeProfit de 28 pips (neste caso) e um StopLoss de 55 pips".
Você pode calcular onde o TP original estava por referência à vela das 23:00, verificar o pedido e ver se ainda está ajustado ao TP original, se está então pode ser modificado... se não, então já foi modificado, então não o modifique novamente.
Há outras maneiras de registrar que o pedido foi modificado, manter registro do número do bilhete escrever a informação em um arquivo quando ele foi modificado, quando estiver prestes a modificá-lo novamente abrir o arquivo e verificar o número do bilhete, etc . . Acho que a verificação versus o TP original é muito mais simples.
Até agora eu tenho isto,
O código de redação do arquivo, como incluído acima, é,
Mas estou recebendo esses erros,
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Versão 2: FileOpen - demasiados arquivos abertos
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Versão 2: cabo inválido -1 em FileWrite
O que é isso?
Por que diabos você escolheu a mais difícil das duas opções?
Quando terminar de escrever para o arquivo, você precisa fechá-lo. . . se ele já estiver aberto, você não precisa abri-lo novamente.
Seu laço está errado . . a última posição de pedido é 0 e não 1
Por que diabos você escolheu a mais difícil das duas opções?