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
Como eu coli acima, se eu tiver colado a metade da ordem, irrelevante o que é o OrderTicket(), QUALQUER "OP_BUY" aberto será chamado de novo e de novo?
Eu preciso de uma maneira de escrever o código para que dentro do "in start()" e do código acima, ele NÃO continue chamando o "OP_BUY" toda vez APÓS já ter fechado uma metade?
Desculpe, mas não entendo como isso me ajudaria em nada. Não importa o que acontece no loop e o vazio que é chamado. Trata-se do que eu estou chamando primeiro no "int start()", certamente?
Como eu coli acima, se eu tiver colado a metade da ordem, irrelevante o que é o OrderTicket(), QUALQUER "OP_BUY" aberto será chamado de novo e de novo?
Eu preciso de uma maneira de escrever o código para que dentro do "in start()" e do código acima, ele NÃO continue chamando o "OP_BUY" toda vez APÓS já ter fechado uma metade?
O vazio que é chamado é apenas uma função que está sendo chamada desde o início() . . é exatamente o mesmo que se o código estivesse diretamente no início().
pseudo código:
procurar por OP_BUYs
se encontrado - o TP está na BE ?
se TP não estiver em BE e Bid >= primeiro alvo move TP para BE e fecha metade do pedido
se TP estiver na BE não faça nada
SIM!!! Obrigado RaptorUK!
Desculpe, eu não sou tão estúpido quanto o que eu faço com que você saiba ;) - Só que às vezes as coisas têm que ser ligeiramente reiteradas para mim quando sou novo em alguma coisa...
Percebi que todos têm me dito isso há páginas atrás - peço desculpas por não pegar ou entender isso!
CORRETO! Conseguimos finalmente fechar pela metade, nos movimentar para quebrar o equilíbrio e parar o fechamento contínuo das metades pelo mesmo preço :D! Portanto, é praticamente perfeito!!
Tudo o que vou fazer agora, é essencialmente copiar e colar isto para minhas outras saídas e mudar algumas regras e presto de feno! Bobs seu tio = é classificado :)
Vou colocar tudo aqui para que seja justo para outros usarem se assim o desejarem - Depois de tudo, muita paciência dos outros me permitiu não só codificá-lo, mas compreendê-lo também :)
Oh, e o que se sugere fazer se o preço não atingir a primeira meta de 1:1 MAS o prejuízo é MAIS GRANDE do que a entrada....? Como eu criaria uma regra em torno dessa então....
quando se modifica para atingir o ponto de equilíbrio ??
se o objetivo não alcançado será fechado na OrderStopLoss()
quando você modifica para quebrar o equilíbrio ??
se o objetivo não alcançado será fechado na OrderStopLoss()
Eu fecho a metade usando OrderClose() e se isso retornar verdadeiro, então eu chamo o vazio de breakeven para mover o stoploss para o breakeven? Assim, o resto da posição aberta em lotes não será fechada continuamente porque se a posição foi movida para o break even, então eu escrevi que não haverá mais fechamento dessa posição até que ela atinja seu preço fixo de tomada de lucro de 1:2.
Entretanto, algumas negociações irão igualar a entrada ou além do break even ANTES que a negociação tenha atingido a primeira meta, NÃO desencadeando o meio fechamento...
Além disso, algumas profissões que saem pela metade e depois se movem para quebrar o equilíbrio funciona perfeitamente.... algumas profissões em que deveria funcionar, não faz nada? Isto pode ser devido a dados pobres e uma falha no testador de estratégia, ou há uma inconsistência com meu código?
E ainda estou recebendo OrderModify 1 - irritante como o caralho...
Como você está identificando o pedido depois de fechá-lo para depois modificar o SL para quebrar o equilíbrio? Você sabe que não pode usar corretamente o número original do bilhete ? Quando você fecha uma peça, o número original do bilhete é fechado. A parte restante recebe um novo número de bilhete. Uma maneira de identificá-lo é obter o OrderOpenTime() antes de fechar a peça. Depois de fechar uma peça, a peça restante receberá um novo número de bilhete, mas o OrderOpenTime() será o mesmo de antes.
Você também pode usar essa OrderOpenTime() para identificá-la e evitar que ela seja fechada repetidamente.
Alternativamente, você poderia modificá-la antes de fechá-la. A parte restante de seu pedido manterá o SL ou TP modificado.
Aqui está um teste. Aberto a 0,09 parte fechada 0,07 deixando 0,02
Observe como o número do ticket muda, mas o tempo de abertura permanece o mesmo:
23:42:48 2013.08.01 11:28 SDCMegaTrend EURUSD,M1: aberto #14 comprar 0,09 EURUSD a 1,3240 sl: 1,3037 tp: 1,3737 ok
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: fechar #14 comprar 0,07 EURUSD a 1,3240 sl: 1,3037 tp: 1,3737 ao preço 1,3253
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Alerta: Ticket 14 OrderOpenTime antes do fechamento da parte: 1375356521
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Alerta: Ticket 15 OrderOpenTime: 1375356521
23:42:48 2013.08.01 12:45 SDCMegaTrend EURUSD,M1: fechar #15 comprar 0,02 EURUSD a 1,3240 sl: 1,3037 tp: 1,3737 ao preço 1,3242
Como você está identificando o pedido depois de fechá-lo para depois modificar o SL para quebrar o equilíbrio? Você sabe que não pode usar corretamente o número original do bilhete ? Quando você fecha uma peça, o número original do bilhete é fechado. A parte restante recebe um novo número de bilhete. Uma maneira de identificá-lo é obter o OrderOpenTime() antes de fechar a peça. Depois de fechar uma peça, a peça restante receberá um novo número de bilhete, mas o OrderOpenTime() será o mesmo de antes.
Você também pode usar essa OrderOpenTime() para identificá-la e evitar que ela seja fechada repetidamente.
Alternativamente, você poderia modificá-la antes de fechá-la. A parte restante de seu pedido manterá o SL ou TP modificado.
Aqui está um teste. Aberto a 0,09 parte fechada 0,07 deixando 0,02
Observe como o número do ticket muda, mas o tempo de abertura permanece o mesmo:
23:42:48 2013.08.01 11:28 SDCMegaTrend EURUSD,M1: aberto #14 comprar 0,09 EURUSD a 1,3240 sl: 1,3037 tp: 1,3737 ok
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: fechar #14 comprar 0,07 EURUSD a 1,3240 sl: 1,3037 tp: 1,3737 ao preço 1,3253
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Alerta: Ticket 14 OrderOpenTime antes do fechamento da peça: 1375356521
23:42:48 2013.08.01 12:26 SDCMegaTrend EURUSD,M1: Alerta: Ticket 15 OrderOpenTime: 1375356521
23:42:48 2013.08.01 12:45 SDCMegaTrend EURUSD,M1: fechar #15 comprar 0,02 EURUSD a 1,3240 sl: 1,3037 tp: 1,3737 ao preço 1,3242
Ah - Fantástico, obrigado. Esqueci completamente a OrderOpenTime() - é uma ótima maneira de fazer isso! Obrigado pela dica - vou experimentar com isso agora.
Seguindo o meu post anterior, consegui fazer com que funcionasse muito mais suavemente agora - o OrderModify error 1 só aparece raramente agora. Parece estar funcionando mais suavemente agora.
O único problema é que, se eu tiver uma troca em que o stop loss é >= do que OrderEntry() - (assumindo que estamos falando de um longo), então ele não fechará metade da ordem porque o critério principal para fechar a metade, não foi cumprido.
Este código isolado aqui é o que inicia o fechamento da metade dos lotes, e a parada do fechamento contínuo da metade pelo mesmo preço - (não é a única coisa em "in start()", apenas tornou mais fácil de ver):
Como eu incorporaria a função OrderOpenTime() para ter um melhor controle ao garantir que cada comércio feche lá meio lote à 1:1 SEM que falte algum lugar na parada É >= a OrderOpen()?
Há várias maneiras de se certificar de que cada pedido esteja parcialmente fechado, minha maneira favorita de fazê-lo é modificar o TP por um tubo quando eu o fecho.
Assim, por exemplo, preciso de um TP de 100 pips, então abro o pedido com um TP de 99 pips. Sei que antes que o lucro seja alcançado, meu pedido será fechado em 40 pips. Quando isso acontece, eu modifico o TP para 100 pips. Portanto, qualquer pedido que tenha um lucro >= 40 pips e um TP < 100 pips precisa ser parte fechada. Qualquer pedido com um TP > 99 pips já foi parcialmente fechado. Se você o fizer dessa maneira não faz diferença o que é o SL. Apenas certifique-se de normalizar todos os pedidos duplicando o preço antes de fazer cálculos sobre eles.