Ayuda a la codificación - página 471

 
systemfault:
Hola a todos,

Necesito una ayuda... tengo un ea simple, pero programado para 4 dígitos. (Por ejemplo: EUR/USD: 1,1234)

¿Cómo puedo utilizar mi ea 5 dígitos? (Por ejemplo: EUR/USD: 1,12345)

Gracias:)

simpleea.mq4

Usted puede agregar esto :

*MathPow(10,_Digits%2)

donde sea que uses _Punto y entonces funcionará en pips igualmente en brokers de 4 y 5 dígitos

____________________

 

Hola mladen,

Gracias por el post.

Yo lo hago así

int CheckForOpen()

{

double L = Low;

double H = High;

double Lots = MathRound(AccountBalance()/100)/1000;

if((H-Oferta>Límite*Punto))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int i=1; i<5; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lotes,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,",MAGICMA,0,CLR_NONE);}

}

if((Oferta-L>Límite*Punto))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int j=1; j<5; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lotes,Oferta+j*Grid*Punto*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

}

¿es cierto?

 
systemfault:
Hola mladen,

Gracias por publicar.

Lo hago así.

int CheckForOpen()

{

double L = Low;

double H = High;

double Lots = MathRound(AccountBalance()/100)/1000;

if((H-Oferta>Límite*Punto))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int i=1; i<5; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lotes,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,",MAGICMA,0,CLR_NONE);}

}

if((Oferta-L>Límite*Punto))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int j=1; j<5; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lotes,Oferta+j*Grid*Punto*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

}

¿Es cierto?

Pero entonces cambia también el parámetro Grid de 1500 a 150 o de lo contrario intentará fijar el precio a 1500 pips de distancia del Bid o Ask

 

Estoy usando esta configuración;

extern int PeriodX = 60;

extern int Limit = 50;

extern int Grid = 14;

extern int Amount = 1;

extern int LockDown = 20;

¿Cómo es esa configuración?

 
systemfault:
Estoy usando esa configuración;

extern int PeriodX = 60;

extern int Limit = 50;

extern int Rejilla = 14;

extern int Cantidad = 1;

extern int LockDown = 20;

¿Cómo es esa configuración?

Abrirá límites de compra y venta a 14 pips de distancia de la oferta y la demanda

Pruébalo

 
mladen:
Abrirá los límites de compra y venta a 14 pips de distancia de la oferta y la demanda Pruébelo

Lo he intentado... parece que esto...

Archivos adjuntos:
adsz.png  35 kb
 
systemfault:
lo intento... parece que esto...

Por lo que veo está haciendo lo que debe hacer

 
mladen:
Por lo que veo está haciendo lo que tiene que hacer

Si mladen..

Pero no quiero cerrar las órdenes sin beneficio y stoploss 14 pips

 
systemfault:
Si mladen.. Pero no quiero cerrar las órdenes sin beneficio y stoploss 14 pips

Entonces añade el take profit y el stop loss también

 
mladen:
Entonces añada take profit y stop loss también

he añadido este código;

int CheckForClose()

{

if(getProfit()>=Amount){CloseAll();}

if(LockDown>0)

{

for(int NúmeroDeOperaciones = TotalDeOrdenes(); NúmeroDeOperaciones >= 0; NúmeroDeOperaciones--)

{

if (OrderSelect(TradeNumber, SELECT_BY_POS, MODE_TRADES)&&(LockDown>0))

{ int Pos=Tipo de orden();

if((Pos==OP_BUY)&&(Bid-OrderOpenPrice()>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() == 0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+Point,OrderTakeProfit(),0,CLR_NONE);}

if((Pos==OP_SELL)&&(OrderOpenPrice()-Ask>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() == 0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point,OrderTakeProfit(),0,CLR_NONE);}

}

}

}

}

Por ejemplo; EUR/USD precio de la orden 1.12345 sl/tp 1.12346

quiero sl/tp 1.12355

no entiendo qué es lo que está mal?