Ajude-me a fechar a ordem no final do bar! - página 2

 

Hmm então isto seria bom?

/////////////////OrderSelect() and other stuff

if( OrderType() == OP_BUY ){
    
if( /* blablabla condition && */ Time[0]>OrderOpenTime()  ){

OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,TAKEPROFITPIPS,CLR_NONE);             
RefreshRates();    

}}

Na verdade eu mudei Time[1] para Time[0] porque Time[1] estava pulando mais 1 barra, então Time[0] está na verdade representando o Open[0]. Se alguém souber de algo melhor/suave do que isso, por favor diga!

 
Proximus:

Hmm então isso seria bom?

Na verdade eu mudei Time[1] para Time[0] porque Time[1] estava pulando mais 1 barra, então Time[0] está na verdade representando o Open[0]. Se alguém souber de algo melhor/suave do que isso, por favor diga!

RefreshRates();
OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,Slippage,CLR_NONE);

e verifique também se o fechamento do pedido foi bem sucedido

 
deVries:

e verifique também se o fechamento do pedido foi bem sucedido

Bem, se não for bem sucedida, então quando a função start() se repetir, ela testará novamente que se() antes do fechamento do pedido() e como as condições ainda serão verdadeiras para prosseguir, ela tentará fechá-lo novamente. Não posso tentar fechá-lo 2 vezes no mesmo loop do start(), devo esperar outro tick não?
 
Proximus:
Bem, se não for bem sucedida, então quando a função start() se repetir, ela testará novamente que se() antes do fechamento do pedido() e como as condições ainda serão verdadeiras para prosseguir, ela tentará fechá-lo novamente. Não posso tentar fechá-lo 2 vezes no mesmo loop do start(), devo esperar outro tick não?
Você não quer saber se falhou ? e se falhou por que falhou ? e qual era o valor das variáveis relevantes no momento que poderiam ter feito com que falhasse ? se você sabe tudo isso você pode consertá-lo para que não falhe na próxima vez . . .
 
Proximus:

Hmm então isto seria bom?

Na verdade eu mudei Time[1] para Time[0] porque Time[1] estava pulando mais 1 barra, então Time[0] está na verdade representando o Open[0]. Se alguém souber de algo melhor/suave do que isso, por favor diga!

Não, isto sempre fechará independentemente do tique ser o tique da próxima barra ou não, para qualquer barra seguindo a barra quando o comércio foi aberto e qualquer tempo durante aquela barra O tempo[0] será sempre maior que o tempo de abertura da barra().

Se você quiser fechar tão próximo ao fechamento da barra então você tem que determinar se o tick atual é o primeiro tick da nova barra . . . . então você também tem que ter certeza de que o fechamento funciona porque você terá apenas uma chance par barra.
 
Proximus:
Bem, se não for bem sucedida, então quando a função start() se repetir, ela testará novamente que se() antes do fechamento do pedido() e como as condições ainda serão verdadeiras para prosseguir, ela tentará fechá-lo novamente. Não posso tentar fechá-lo 2 vezes no mesmo loop do start(), devo esperar outro tick não?


você começou que ele tem que fechar o último tique de barra

tentamos entender que não é possível saber quando está chegando a última barra de carrapato

agora não importa se o fechamento falha, tentamos de novo, de novo, novamente em seguir carrapatos

você também perdeu outras mudanças que eu sugeri

que sentido faz refrescar após o fechamento do pedido ??

e você sabe por que escorregar em vez de TAKEPROFITPIPS

depende do retorno de erro que você pode tentar fechá-lo 2 vezes no mesmo loop

se o contexto comercial estiver muito ocupado e você tiver mais negócios dentro do loop para fechar a grande possibilidade, eles também falham

 
RaptorUK:
Não, isto sempre fechará independentemente do tick ser o tick da próxima barra ou não, para qualquer barra seguindo a barra quando a negociação foi aberta e qualquer tempo durante aquela barra Tempo[0] será sempre maior que OrderOpenTime().

Se você quiser fechar tão próximo ao fechamento da barra então você tem que determinar se o tick atual é o primeiro tick da nova barra . . . . então você também tem que ter certeza de que o fechamento funciona porque você terá apenas uma chance par barra.

O início() não se repete após cada tique? Eu estou errado?

De qualquer forma, imagine assim:

OrderOpenTime() = 12:12:01 (12 H 12 MIN 1 SEC)

O pedido é aberto, o pacote de função Orderclose() está após meu OrderSend() um no código principal, portanto, logo após abrir o pedido, meu pacote OrderClose() testará se as condições foram cumpridas para fechar o pedido ou não:

O tempo[0] é o preço de abertura desta barra, portanto, pela lógica comum, deve ser menor do que o tempo de abertura da ordem, pois a ordem não pode ser aberta antes da mesma barra ser aberta.

Então, por todos os meios :

if(Time[0]>OrderOpenTime())

Se não puder fechá-la, por qualquer motivo, como deslizamento, não há problema, o início() se repete.

E na próxima repetição o Tempo[0] será 100% maior do que o tempo aberto da ordem, porque é lógico, então se o primeiro fechamento falhar a outra OrdemFechar() acontecerá toda vez depois quando o início() se repetirá, e como eu acho que esse início() se repete a cada tick, então eu não acho que haja uma maneira melhor de fechar a ordem mais rápido, eu espero que eu tenha explicado claramente :)

 
deVries:


você começou que ele tem que fechar o último tique de barra

tentamos entender que não é possível saber quando está chegando a última barra de carrapato

agora não importa se o fechamento falha, tentamos de novo, de novo, novamente em seguir carrapatos

você também perdeu outras mudanças que eu sugeri

que sentido faz refrescar após o fechamento do pedido ??

e você sabe por que escorregar em vez de TAKEPROFITPIPS

depende do retorno de erro que você pode tentar fechá-lo 2 vezes no mesmo loop

se o contexto comercial estiver muito ocupado e você tiver mais negócios dentro do loop para fechar a grande possibilidade, eles também falham

Eu uso TAKEPROFITPIPS porque essa é minha variável para TAKEPROFIT, e como eu permito o máximo deslizamento tanto quanto meu nível de TP, porque é lógico que você não deve ter mais deslizamento do que seu TP se você fechar pedidos com OrderClose(), porque se você fizer isso, então o TAKEPROFIT irá fechá-lo em vez de você mais eficientemente do que o OrderClose().
 
Proximus:

O início() não se repete após cada tique? Eu estou errado?

Sim, o start() é chamado para cada tick, a menos que ainda esteja executando . . .

Proximus:

De qualquer forma, imagine assim:

OrderOpenTime() = 12:12:01 (12 H 12 MIN 1 SEC)

O pedido é aberto, o pacote de função Orderclose() está após meu OrderSend() um no código principal, portanto, logo após abrir o pedido, meu pacote OrderClose() testará se as condições foram cumpridas para fechar o pedido ou não:

O tempo[0] é o preço de abertura desta barra, portanto, pela lógica comum, deve ser menor do que o tempo de abertura da ordem, pois a ordem não pode ser aberta antes da mesma barra ser aberta.

Portanto, por todos os meios:

Se não puder fechar, por qualquer razão, como deslizamento ou assim, sem problema, o início() se repete

E na próxima repetição o Tempo[0] será 100% maior do que o tempo aberto da ordem, porque é lógico, então se o primeiro fechamento falhar a outra OrdemFechar() acontecerá toda vez depois quando o início() se repetirá, e como eu acho que esse início() se repete a cada tick, então eu não acho que haja uma maneira melhor de fechar a ordem mais rápido, eu espero que eu tenha explicado claramente :)

Sim, mas não foi isso que você pediu em seu primeiro post neste tópico ... agora você está dizendo que não há problema em atrasar o fechamento por Período e depois por outro Período, etc. Se você quiser Fechar tão perto do final da barra, então você tem que fazê-lo no primeiro tique da próxima barra, e você deve verificar se o Fechamento falhou e tentar novamente da maneira correta para que você consiga Fechá-lo.
 

É bastante raro que o preço fechado de uma barra não se repita no bar susequente, não necessariamente seu preço aberto ...