¿Cómo codificar? - página 69

 

Hola Wolfe

wolfe:
Sé que esto se ha cubierto antes, pero ¿puede alguien mostrarme algún código para permitir sólo 1 comercio por barra? Gracias.

Esto me funciona

datetime LastOpenTime=0;

//////////////////////////////////////////

int Pedido;

for(int t=0;t<OrdersTotal();t++)

{

if(OrderSelect(t, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumbers && OrderType() == OP_SELL)

{

if(OrderOpenTime()>LastOpenTime)LastOpenTime=OrderOpenTime();

}

}

}

Entonces lo meto en mi código

if(LastOpenTime0)

{ OrderSend(blah blah

Tiempo[0] siendo el inicio de la vela de su marco de tiempo así que asegúrese de elegir el marco de tiempo correcto

 
waltini:
Esto funciona para mí

datetime LastOpenTime=0;

//////////////////////////////////////////

....................

Time[0] es el inicio de la vela de su marco de tiempo, así que asegúrese de elegir el marco de tiempo correcto

Esto es un poco más simple:

datetime LastOpenTime; //Global var

[/CODE]

[CODE]

int init()

{

LastOpenTime=Time[0];

}

int start()

{

................

if(LastOpenTime!=Time[0])

{

// do your trade code

LastOpenTime=Time[0];

}

..............

return(0);

}

Su "código de comercio" se ejecutará una sola vez en cualquier vela. No habrá más operaciones en esa vela incluso si cierra su MT4 y lo vuelve a activar. Pero por favor note, digamos que usted activa el EA en una vela de 5pm, no habrá ningún comercio también en esa vela, usted tiene que esperar a la siguiente vela.

 
wolfe:
Sé que esto ya se ha tratado antes, pero ¿alguien puede mostrarme algún código para permitir sólo 1 operación por barra? Gracias.

Global, poner esto antes de init()

datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}
 

Ayuda en la programación

Hola,

He estado haciendo mi mejor esfuerzo para tratar de programar algunas cosas, pero he golpeado una pared de ladrillo. Así que he intentado algo muy simple. Si descomento "Print("Five");" y pruebo el programa sólo imprime "Yahooooo". (Bueno, también imprime "Uno"). Ahora con "Print("Five");" comentado, incluso el "Yahooooo" no se imprime. ¿Qué me estoy perdiendo?

Archivos adjuntos:
trial.mq4  2 kb
 

Cerrar todas las órdenes pendientes y abiertas cuando 1 operación alcanza el TP

Hola,

Estoy tratando de escribir un código en mi EA que cerrará todas las órdenes pendientes y abiertas una vez que hay 1 comercio que golpeó TP. A continuación se muestran los códigos que he utilizado, parece que no funciona. Alguien puede echar un vistazo y aconsejar lo que falta. Gracias.

if( PreviousOpenOrders > OpenOrders )

{

for( cnt = OrdersTotal()-1; cnt >= 0; cnt-- )

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

mode = OrderType();

if( OrderSymbol() == Symbol() &&

OrderMagicNumber()==Magic)

{

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);

si (modo == OP_SELLLIMIT) OrderDelete(OrderTicket());

si (mode == OP_BUYLIMIT) OrderDelete(OrderTicket());

}

}

}

}

 

Utilizar Bid y Ask respectivamente en lugar de OrderClosePrice()...

 
ralph.ronnquist:
Utilice Bid y Ask respectivamente en lugar de OrderClosePrice()...

Hola Ralph,

puedes ayudar a dar un ejemplo. Gracias por la ayuda.

 
timebandit:
Hola, he estado haciendo mis pinitos para intentar programar algunas cosas, pero me he topado con un muro. Así que he intentado algo muy sencillo. Si descomento "Print("Five");" y pruebo el programa sólo imprimirá "Yahooooo". (Bueno, también imprime "Uno"). Ahora con "Print("Five");" comentado, incluso el "Yahooooo" no se imprime. ¿Qué me estoy perdiendo?

Si no utilizas paréntesis, sólo se ejecuta una línea. Depende de lo que quieras hacer, pero deberías hacerlo así:

if(d>5)

{

Print("Five");

Print("Yahoooooooooooooooooooooooo");

}
 

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);

 

Mover el Stop una vez

Aquí está mi pedazo de código para mover el stoploss a breakeven después de un cierto beneficio. ¿Hay algo malo en ello?

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() == Point * MoveStopWhenPrice) {

OrderModify(OrderTicket(),OrderOpenPrice(), Bid - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}