Ayuda a la codificación - página 18

 

Obteniendo error en el EA Se necesita ayuda

Obtención de 1 comercio sólo

Necesito todo el comercio que se genera en icustom ARROW

pero

extern string Symbol_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

return(0);

}

datetime newbar;

int inicio()

{

if(newbar==Time[0])return(0); //

si no, newbar=Time[0];

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1);//PERIOD_M5

if (ArrowDown >0 && ArrowDown!=2147483647 && OrdersTotal()==0)//!= EMPTY_VALUE )

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

}

if (ArrowUp >0 && ArrowUp!=2147483647 && OrdersTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL,LimeGreen );

}

return(0);

}

Archivos adjuntos:
ea.png  22 kb
 
 
En su EA esta condición

OrdersTotal()==0

Si quiere abrir más de una orden, elimine esa condición, pero tendrá que añadir código para evitar la apertura de múltiples órdenes en la misma barra (de lo contrario, acabará con un millón de órdenes abiertas). Puedes usar una función que se parezca a esta:

int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

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

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

y entonces su condición completa (para comprar) sería así :

[
PHP]if (ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)

Esto evitaría la apertura de múltiples órdenes en una misma barra (este código no comprueba el tipo de orden ya abierta en una barra actual, si desea comprobar eso también, tiene que añadir algunas condiciones más

vegadigitalco:
Obtención de 1 operación solamente

Necesito todas las operaciones que se generan en icustom ARROW

pero

extern string Symbol_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

return(0);

}

datetime newbar;

int inicio()

{

if(newbar==Time[0])return(0); //

si no, newbar=Time[0];

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1);//PERIOD_M5

if (ArrowDown >0 && ArrowDown!=2147483647 && OrdersTotal()==0)//!= EMPTY_VALUE )

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

}

if (ArrowUp >0 && ArrowUp!=2147483647 && OrdersTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL,LimeGreen );

}

return(0);

}
 

Muy Muy Gracias por HELPPPPPPPPP

Muy Muy ThanX para HELPPPPPPPPP

Muy Muy ThanX para HELPPPPPPPPP

Muy Muy ThanX para HELPPPPPPPPP

Muy Muy ThanX para HELPPPPPPPPP

mladen:
En su EA esta condición

OrdersTotal()==0

Si quiere abrir más de 1 orden, elimine esta condición, pero deberá añadir código para evitar la apertura de múltiples órdenes en la misma barra (de lo contrario, acabará con un millón de órdenes abiertas). Puedes usar una función que sería algo así:
int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

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

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

y entonces su condición completa (para la compra) sería así:

[PHP]if (ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)
Evitaría la apertura de múltiples órdenes en una misma barra (este código no comprueba el tipo de orden ya abierta en una barra actual, si desea comprobar eso también, tiene que añadir algunas condiciones más
Archivos adjuntos:
 

el balance es back-test, live-demo-testing o real-money-trading-balance

EA nunca cruzó mi mente como entradas semi-automáticas es bueno y lo suficientemente fresco (semi significa obstáculo adicional cuando usted pone una orden, como fly-by-wire, la computadora puede gobernar sus entradas no válidas)

pero el ticks-ease es como un anillo de fuego en un videojuego, sólo hay unos pocos puntos en el anillo en un momento dado, que usted puede poner a ti mismo en, otros se queman con bastante facilidad --- esta no es la condición del mercado durante los últimos 5 a 10 meses, sin embargo, las cosas cada vez más fácil

quiero leer el código en el EA arriba - pero los códigos están más allá de mi límite de comprensión

 

necesito una alerta en la operación codificada arriba

Hola mladen,

gracias por su apoyo único para mí

1más cosa, ¿cómo puedo añadir el código de alerta en la compra o venta generada en el código anterior u han sugerido.

En el mercado en vivo no se cierra la compra o la venta, sólo se crea una nueva operación.

Gracias por adelantado

 

...

Intente algo como esto (este es un ejemplo para la compra solamente)
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

vegadigitalco:
Hola mladen,

gracias por su apoyo único para mí

1more cosa, ¿cómo puedo añadir el código de alerta en la compra o la venta generada en el código anterior u han sugerido.

en el mercado en vivo que dosnt cerrar la compra o la venta, es sólo la creación de un nuevo comercio.

ThanX de antemano
 

Me gusta mucho como el ea toma el comercio.

 

Hola, mLaden,

Gracias de nuevo por su gran ayuda:)

solo queda 1 problema

en el mercado en vivo no se cierra la posición de compra o venta anterior, sólo se crea una nueva operación. ???

Gracias en ADV

mladen:
Pruebe algo como esto (esto es un ejemplo para comprar sólo)
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

 

...

vegadigitalco

Tienes que añadir una lógica de cierre en tu EA para ello. O bien utilizar take profit y stop loss, o utilizar explícitamente OrderClose() basado en algunas reglas de salida para eso.

vegadigitalco:
Hola, mLaden,

Gracias de nuevo por su gran ayuda:)

solo queda un problema

en el mercado en vivo no se cierra la posición de compra o venta anterior, sólo se crea una nueva operación. ???

Gracias en ADV