RESOLVIDO = Fazer entradas somente na transição da condição

 

O uso correto do count_buys e count_sells foi o que deu certo para sanar a minha dúvida. Ao fazer uma compra fecho uma venda e vice-versa 

if(signal==1 && count_buys<1) 

     {

      ClosePositions(POSITION_TYPE_SELL);      



Colegas, 

Num trecho abaixo do código de um EA que eu estou estudando na conta hedge demo eu tenho um sinal de compra quando a variável Preço estiver maior que a variável Compra (vSignal=1), e na venda é ao contrário (vSignal= -1). O que tá pegando é que enquanto as duas condições estão como verdadeiras o EA faz infinitas entradas. Daí eu coloquei um int count_buys e int count_sells, só que ao fazer isso o EA para de fazer as entradas como eu gostaria. O que eu pretendo é que o EA só compre (ou venda) na transição de vSignal=1 para vSignal= -1 (ou vice-versa para venda). Não é o caso da condição ser verdadeira abrir novas compras e novas vendas, mas sim, de ocorrer a transição da condição. Por isso eu pergunto: O quê de mais simples eu poderia pôr no código para funcionar desta forma como eu pretendo ?

Ou seja, se era vSignal = -1 e passou para vSignal = 1, faz 1 compra, e compra denovo sempre que ocorrer esta transição. Então poderá fazer N compras bastando que ocorram N transições

Só deve fazer entradas na transição das condições e não na condição se manter como verdadeira como está ocorrendo. Também não seria o caso de analisar Close de candles (daria certo, mas o preço pode se distanciar muito num candle grande). Deve se basear apenas no <Preço> ser maior ou menor que <Compra> ou <Vende>.


   int vSignal=0;

   if(Preço>Compra)

      vSignal=1; // comprar 

   else if(Preço<Vende)

      vSignal=-1; // vender

 
sergiomt:

Colegas, 

Num trecho abaixo do código de um EA que eu estou estudando na conta hedge demo eu tenho um sinal de compra quando a variável Preço estiver maior que a variável Compra (vSignal=1), e na venda é ao contrário (vSignal= -1). O que tá pegando é que enquanto as duas condições estão como verdadeiras o EA faz infinitas entradas. Daí eu coloquei um int count_buys e int count_sells, só que ao fazer isso o EA para de fazer as entradas como eu gostaria. O que eu pretendo é que o EA só compre (ou venda) na transição de vSignal=1 para vSignal= -1 (ou vice-versa para venda). Não é o caso da condição ser verdadeira abrir novas compras e novas vendas, mas sim, de ocorrer a transição da condição. Por isso eu pergunto: O quê de mais simples eu poderia pôr no código para funcionar desta forma como eu pretendo ?

Ou seja, se era vSignal = -1 e passou para vSignal = 1, faz 1 compra, e compra denovo sempre que ocorrer esta transição. Então poderá fazer N compras bastando que ocorram N transições

Só deve fazer entradas na transição das condições e não na condição se manter como verdadeira como está ocorrendo. Também não seria o caso de analisar Close de candles (daria certo, mas o preço pode se distanciar muito num candle grande). Deve se basear apenas no <Preço> ser maior ou menor que <Compra> ou <Vende>.


   int vSignal=0;

   if(Preço>Compra)

      vSignal=1; // comprar 

   else if(Preço<Vende)

      vSignal=-1; // vender

Difícil responder sem saber o que é preço venda e compra, ia falar para analisar close e travar tamanho da vela.
Preço é o preço atual 
Compra e venda é uma média?
 

Opa,

Os valores ExtLinha e InpRange são input´s digitados por mim. E a variável Preço é o valor do BID

double Preço=SymbolInfoDouble(_Symbol,SYMBOL_BID);

      double Compra=ExtLinha+InpRange;

      double Vende=ExtLinha-InpRange;

Razão: