¿Cómo codificar? - página 144

 

esto es incorrecto : if(totalOrders==0 && Magic==OrderMagicNumber() &&

OrderSelect(i-1 , SELECT_BY_POS,MODE_HISTORY)==true)

porque está llamando a OrderMagicNumber() antes de OrderSelect(), por lo que probablemente se refiera a la llamada anterior.

 
EBK:
Oh, lo siento, he expresado mal mi opinión.

Quiero codificar (pero no soy capaz de hacerlo) algo que detenga el comercio del EA (o parte del comercio del EA) si la equidad está por debajo de un valor.

Gracias por tu ayuda Roger09, pero no necesito mostrar la equidad rhe en el gráfico

Pruebe este EA

CloseAllBuySell - MQL4 Code Base

Utilice su idea y haga un código con algo como

if (AccountEquity()<YourValue) closeallorders();

 

¿Podría alguien añadir el trailing stop de la EMA al ejemplo de EA de media móvil?

EMA trailing establecida en 1

Entonces cambie la entrada a

Comprar=Abrir[1]>ma && Cerrar[1]>ma;

Sell=Open[1]<ma && Close[1]<ma;

Esto debería hacer un muy buen scalper simple.

Saludos

Beno

Archivos adjuntos:
 
 

Añadir al principio del programa

extern int pips=2;//(o su número de pips)

luego reemplazar

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() ;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() ;[/CODE]

to

[CODE]if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;
 

¿Puede alguien ayudarme a poner una alerta en este indicador para cuando dibuje una nueva flecha?

Gracias.

Archivos adjuntos:
hilow3.mq4  2 kb
 

No, arréglalo

extern int pips=2;

//+------------------------------------------------------------------+

//| función de inicio del programa de scripting ||.

//+------------------------------------------------------------------+

int inicio()

{

//----

string curr = Símbolo();

int ot = OrdersTotal();

int ords[200], ordType[200], ordTicket[200]; double ordLots[200];

string ordComments[200];

int ix=0;

for (int i=0; i<ot; i++)

{

int o = OrderSelect(i, SELECT_BY_POS);

if (OrderSymbol() == Symbol())

si ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

double sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

si ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;

si (sl != 0+10)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

 

OK, el código ahora se ve así

extern int pips=10;//

//+------------------------------------------------------------------+

//| función de inicio del programa de scripting ||

//+------------------------------------------------------------------+

int inicio()

{

//----

string curr = Símbolo();

int ot = OrdersTotal();

int ords[200], ordType[200], ordTicket[200]; double ordLots[200];

string ordComments[200];

int ix=0;

for (int i=0; i<ot; i++)

{

int o = OrderSelect(i, SELECT_BY_POS);

if (OrderSymbol() == Symbol())

si ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

double sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

si ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;

si (sl != 0)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

}

//+------------------------------------------------------------------+

 

Hola Roger09,

Muchas gracias por tu ayuda con este código. El código de mi script ahora se ve así (agregué los cambios en rojo sólo para esta respuesta, el código en MQ4 se ve igual que el resto que había):

//+------------------------------------------------------------------+

//| función de inicio del programa de script

//+------------------------------------------------------------------+

int inicio()

{

//----

extern int pips=2;//

string curr = Symbol();

int ot = OrdersTotal();

int ords[200], ordType[200], ordTicket[200]; double ordLots[200];

string ordComments[200];

int ix=0;

for (int i=0; i<ot; i++)

{

int o = OrderSelect(i, SELECT_BY_POS);

if (OrderSymbol() == Symbol())

si ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

double sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

si ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;

si (sl != 0)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

¿Puedes decirme si lo he entendido bien? Estoy volando a ciegas aquí así que tened paciencia conmigo.

 

En realidad estará funcionando, pero este código no es bueno. Lamentablemente no conozco tus objetivos principales y no puedo recomendarte otra cosa.

Razón de la queja: