Preguntas básicas ... - página 9

 
Zen_Leow:
matrixebiz, ¿has considerado la posibilidad de que una operación se abra y se cierre en la misma vela antes de que la vela se haya cerrado? probablemente deberías comprobar también la lista del historial.

Siempre he portado esta pequeña función que escribí a todos mis EAs, tal vez la encuentres útil también.

bool DecideToOpenTrade()

{

int total = OrdersTotal();

if (total > 0)

{

for(int cnt=0;cnt<total;cnt++)

{

if(OrderSelect(cnt,SELECT_BY_POS))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)

{

return (false);

}

}

}

}

// in case trades has already opened and closed within the candle

int histotal = OrdersHistoryTotal();

if (histotal > 0)

{

for(cnt=0;cnt<histotal;cnt++)

{

if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber() == EA_MAGIC_NUM)

{

if (Time[0] <= OrderOpenTime()) // don't open a new position if we're still on the same candle

{

return (false);

}

}

}

}

}

return (true);

}

int start()

{

// some time check codes first.. blah blah

// ...

// ...

// ...

// check signals

if (Should_Buy())

{

if (DecideToOpenTrade())

{

//... trade opening codes here

}

}

if (Should_Sell())

{

if (DecideToOpenTrade())

{

//... trade opening codes here

}

}

}

nota: esta función asume que has establecido un valor único para EA_MAGIC_NUM. De esta manera la comprobación no mirará las operaciones abiertas por otros EAs.

Should_Buy() y Should_Sell() son funciones que creo en todos mis EAs para determinar si se ha producido una señal de compra o de venta.

Espero que esto ayude. Si necesita más aclaraciones, póngase en contacto conmigo.

Saludos,

Zen

Gracias Zen Creo que esto me va a hacer bien probablemente sólo tiene que hacer algunos cambios porque mi EA es un EA de comercio de divisas múltiples por lo que no era capaz de comprobar para una moneda específica sin saber qué par de divisas la EA había negociado con, por lo tanto la razón por la que el código que tengo que cambiar para buscar un OrderComment() específica en lugar de lo que tiene OrderSymbol(). Estaba usando este código de abajo para comprobar si las operaciones ya existían actualmente pero estaba teniendo problemas con la comprobación de si las operaciones ya estaban cerradas en la misma barra.

for(int i=totalorders-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if (OrderComment() == EA_Name + MagicNumber) GoOrders = false; }

if (GoOrders){orders();}

 

1 operación por señal

Hola a todos los que puedan ayudar

soy muy nuevo en el mundo de la codificación y tengo un problema con un EA en el que estoy trabajando, me gustaría mucho que este EA colocara una operación y luego esperara otra señal antes de entrar en otra operación.

Ahora mismo coloca una operación y tan pronto como esa operación se cierra vuelve a entrar en otra operación sin esperar a la siguiente señal, ahora me gustaría saber si alguien sabe el código que utilizo para esperar a la siguiente señal antes de entrar de nuevo.

gracias por cualquier ayuda de antemano

 

El problema es que no se puede hacer nada para evitarlo.

A continuación se muestra el error;

2009.01.07 08:46:58 2008.05.28 04:20 USDJPY,H1: ticket 197 desconocido para la función OrderClose

2009.01.07 08:46:58 2008.05.28 04:20 USDJPY,H1: OrderClose error 4108

gracias de antemano.

int inicio()

{

if( iMA(NULL,0,5, 0,MODE_EMA, PRICE_CLOSE, 0) <iMA(NULL,0,30, 0,MODE_EMA, PRICE_CLOSE, 0)

)

{

OrderSend(Symbol( ),OP_SELL, Lots,Bid, 0,Bid+StopLoss* Point,Bid- TakeProfit* Point,"", SystemMagicNumbe r,0,Red);

return(0);

}

if( iMA(NULL,0,5, 0,MODE_EMA, PRICE_CLOSE, 0)>iMA(NULL,0,30, 0,MODE_EMA, PRICE_CLOSE, 0)

)

{

OrderSend(Symbol( ),OP_BUY, Lots,Ask, 0,Ask-StopLoss* Point,Ask+ TakeProfit* Point,"", SystemMagicNumbe r,0,Blue) ;

return(0);

}

if (OrderType() ==OP_SELL)

{

if (iMA(NULL,0, 5,0,MODE_ EMA, PRICE_CLOSE, 0)>iMA(NULL,0,30, 0,MODE_EMA, PRICE_CLOSE, 0))

{

OrderClose(SystemMa gicNumber, Lots,OrderCloseP rice(),0) ;

return(0);

}

}

if (OrderType() ==OP_BUY)

{

if (iMA(NULL,0, 5,0,MODE_ EMA, PRICE_CLOSE, 0)<iMA(NULL,0,30, 0,MODE_EMA, PRICE_CLOSE, 0))

{

OrderClose(SystemMa gicNumber, Lots,OrderCloseP rice(),0) ;

return(0);

}

}

 

Cómo crear un objeto de línea finita

Es posible crear trendline_object que es infinito. Pero, ¿cómo puedo dibujar una línea finita de un punto a otro? Gracias por cualquier respuesta.

 
MetaMaster:
Es posible crear trendline_object que es infinito. ¿Pero cómo puedo dibujar una línea finita de un punto a otro? Gracias por cualquier respuesta.

establecer OBJPROP_RAY a false

 

El EA envía la orden cada tick después de la señal. AYUDA.

ahora mismo estoy estudiando para hacer el EA.

como hacer que el EA entienda, que solo quiero enviar una orden en cada señal que aparezca.

la logica es

antes de dar la señal, se mantiene la calma,

inmediatamente después de que la señal aparezca, envía la orden, una vez.

y esperar otra señal.

el problema es

este Ea debe ser capaz de enviar la orden sin importar si la orden anterior fue liquidada o no.

por lo tanto, no puedo codificarlo para enviar la orden sólo después de que la orden anterior se cerró.

Gracias.

 

ayuda para ea base en el indicador

--------------------------------------------------------------------------------

Queridos todos

tengo un indicador (3ma cross con señal) necesito cambiarlo a ea, ¿puedo copiar ind init() a expert init() y ind start() a expert start() y luego poner la función de vender y comprar cuando la flecha me da señal?

lo hago pero no funciona

Archivos adjuntos:
 

ayuda con un problema de codificación

Hola

Estoy tratando de escribir un EA muy simple que abre un número de órdenes pendientes a intervalos fijos. En el uso abre las órdenes pero luego sigue abriéndolas sin parar. ¿Cómo puedo codificarla para que las órdenes sólo se abran una vez, y también si una orden se convierte en real y alcanza el TP o el SL, entonces se sustituye por una nueva orden pendiente de la lista original?

Muchas gracias por la ayuda ofrecida,

Dan

 

¿Una operación por número mágico?

Estoy programando un EA que abrirá automáticamente una operación basándose en decisiones manuales de trading. Por ejemplo, miraré el gráfico y determinaré a qué precio quiero que se abra la orden, cuál es el stop y la toma, etc... Entonces configuro el EA y cuando se alcanza el precio se abre la operación.

Necesito hacer que el EA sólo abra una operación por número mágico. El número mágico lo configuraré manualmente y cada número será único. De esta manera, si la operación se abre y luego se detiene, el AE no intentará abrir otra operación si el precio de la operación se alcanza de nuevo.

¿Alguna idea sobre la mejor manera de lograr esto? Algunos ejemplos de código serían útiles también

 

...

jerzzhere:
Estoy programando un EA que abrirá automáticamente un comercio basado en las decisiones comerciales manuales. Por ejemplo, voy a mirar el gráfico y determinar qué precio quiero que la orden que se abrió en, lo que la parada y tomar es, etc ... Luego configuraré el EA y cuando se alcance el precio abrirá la operación.

Necesito hacer que el EA sólo abra una operación por número mágico. Voy a establecer manualmente el número mágico y cada número será único. De esta manera, si el comercio se abre y luego se detuvo a cabo la EA no tratará de abrir otro comercio si el precio del comercio se alcanza de nuevo.

¿Alguna idea sobre la mejor manera de lograr esto? Algunos ejemplos de código sería útil también

Tuve un tema en este foro que tenía una solución de número mágico ... por desgracia davidke y walander odiaba mis ideas innovadoras y levantó el hedor en todo el tablero ... en consecuencia, mi tema fue eliminado ...