Problemas ao usar EA em conta Hedge

 

Eu tenho um EA que trabalha fechando e reposicionando ordens a cada X pontos. Na conta Netting ele funciona perfeitamente mas na conta Hedge ele simplesmente fica fechando as ordens antes de chegar ao alvo.


Ai vai algumas partes do codigo.

if(rompimento==true){
if(tick.last > rates[1].high && !posAberta){
trade.Buy(Contratos,Symbol(),tick.ask,0,0,NULL);
}

if(tick.last < rates[1].low && !posAberta){
trade.Sell(Contratos,Symbol(),tick.bid,0,0,NULL);

if(posAberta && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && tick.last > PositionGetDouble(POSITION_PRICE_OPEN)+distancia*_Point){
FecharPosicao();
}

if(posAberta && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && tick.last < PositionGetDouble(POSITION_PRICE_OPEN)-distancia*_Point){
FecharPosicao();
}

if(posAberta && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && PositionGetDouble(POSITION_VOLUME)>=risco_max && tick.last <= PositionGetDouble(POSITION_PRICE_OPEN)-distancia_protecao*_Point){
FecharPosicao();
}

if(posAberta && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && PositionGetDouble(POSITION_VOLUME)>=risco_max && tick.last >= PositionGetDouble(POSITION_PRICE_OPEN)+distancia_protecao*_Point){
FecharPosicao();
}

void Dobrar_Mao_Venda_Aritimetica(){
   for(int i=PositionsTotal()-1; i>=0; i--){
   string symbol = PositionGetSymbol(i);
   if(symbol == Symbol()){
   ulong ticket = PositionGetInteger(POSITION_TICKET);
   double prec_entrada = PositionGetDouble(POSITION_PRICE_OPEN);
   double TP = PositionGetDouble(POSITION_TP);
   double SL = PositionGetDouble(POSITION_SL);
   
   if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
   if(tick.last > prec_entrada + distancia*_Point){
      trade.Sell(fator_soma,_Symbol,tick.ask,0,0,NULL);
      }
   }
   }
   }

}

void Dobrar_Mao_Compra_Geometrica(){
   for(int i=PositionsTotal()-1; i>=0; i--){
   string symbol = PositionGetSymbol(i);
   if(symbol == Symbol()){
   ulong ticket = PositionGetInteger(POSITION_TICKET);
   double prec_entrada = PositionGetDouble(POSITION_PRICE_OPEN);
   double TP = PositionGetDouble(POSITION_TP);
   double SL = PositionGetDouble(POSITION_SL);
   
   if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
   if(tick.last < prec_entrada - distancia*_Point){
      trade.Buy(Contratos*fator_multiplicacao,_Symbol,tick.ask,0,0,NULL);
      }
   }
   }
   }

}

void Dobrar_Mao_Venda_Geometrica(){
   for(int i=PositionsTotal()-1; i>=0; i--){
   string symbol = PositionGetSymbol(i);
   if(symbol == Symbol()){
   ulong ticket = PositionGetInteger(POSITION_TICKET);
   double prec_entrada = PositionGetDouble(POSITION_PRICE_OPEN);
   double TP = PositionGetDouble(POSITION_TP);
   double SL = PositionGetDouble(POSITION_SL);
   
   if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
   if(tick.last > prec_entrada + distancia*_Point){
      trade.Sell(Contratos*fator_multiplicacao,_Symbol,tick.ask,0,0,NULL);
      }
   }
   }
   }

}

void Dobrar_Mao_Compra_Aritimetica(){
   for(int i=PositionsTotal()-1; i>=0; i--){
   string symbol = PositionGetSymbol(i);
   if(symbol == Symbol()){
   ulong ticket = PositionGetInteger(POSITION_TICKET);
   double prec_entrada = PositionGetDouble(POSITION_PRICE_OPEN);
   double TP = PositionGetDouble(POSITION_TP);
   double SL = PositionGetDouble(POSITION_SL);
   
   if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
   if(tick.last < prec_entrada - distancia*_Point){
      trade.Buy(fator_soma,_Symbol,tick.ask,0,0,NULL);
      }
   }
   }
   }

}

void FecharPosicao(){
   for(int i=PositionsTotal()-1; i>=0; i--){
   ulong ticket = PositionGetTicket(i);
   string symbol = PositionGetString(POSITION_SYMBOL);
   ulong magic = PositionGetInteger(POSITION_MAGIC);
   if(symbol == _Symbol && magic == MagicNum){
   trade.PositionClose(ticket,0);
   }
   }
}
 
HENRIQUE ARAUJO DOS SANTOS:

Eu tenho um EA que trabalha fechando e reposicionando ordens a cada X pontos. Na conta Netting ele funciona perfeitamente mas na conta Hedge ele simplesmente fica fechando as ordens antes de chegar ao alvo.


Ai vai algumas partes do codigo.

Já consultou sua corretora sobre isso?

 
Thiago Duarte:

Já consultou sua corretora sobre isso?

Não Thiago, pois imaginei que o problema seria no código. Já que posicionando a ordens pendentes ele funciona e a mercado não... 

 

Verifique o Spread para colocar saidas com valores limitados SL ou BL (gain + Spread).

Se você colocar a mercado pode sair abaixo do seu gain pelo spread.

Razão: