¿Cómo codificar? - página 34

 

Necesito ayuda para editar parte de EuroX2_sl EA .......

Hola a todos los programadores,

Soy nuevo en el comercio de divisas y nuevo en este foro también. La primera vez, estoy aprendiendo es 10 puntos 3 entonces, EuroX2_sl, ampliado de 10 puntos 3 EA script. Después de hacer algunas pruebas hacia adelante, para mí este EA es bastante bien a novato como yo para aprender. Cuando la prueba hacia adelante, lo hizo Posición abierta bien, pero no cerrar la posición como necesito (incluso yo ya condición) cuando el mercado inverso o cuando el cambio de tendencia. Tal vez, algo está mal con el código (porque no soy un programador) y creo que necesito ayuda de cualquiera de ustedes para resolverlo. ¿Podríais comprobar qué parte está mal?

Creo que la posición ABIERTA está bien, ya que hace beneficios, pero el problema es con la POSICIÓN DE CIERRE, ya que no se cierra (COMPRA o VENTA), incluso cuando el indicador existe y esto hace que las pérdidas flotantes bastante .......

Cualquiera que sepa de esto, por favor ayúdeme a editar este código.......

El código como lo hice es :

-------- parte de la secuencia de comandos de EuroX2_sl extendido de 10 puntos 3 como creo que es para cerrar la posición -------

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

// es importante entrar en el mercado correctamente,

// pero es más importante salir correctamente...

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // comprueba la posición abierta

OrderType()<=OP_BUY &&

OrderType()>=OP_SELL &&

OrderType()>=OP_BUY &&

OrderSymbol()==Symbol()) // comprueba el símbolo

{

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

if(OrderType()==OP_BUY) // se abre una posición larga

{

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

//+ CONDICIÓN PARA CERRAR LA POSICIÓN

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

//+--------------- CERRAR POSICIÓN DE COMPRA ----------------------------

if ( Stoch_Main_M15_Cu < Stoch_Sig_M15_Cu )

//+ estocástico principal < señal estocástica

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

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // cerrar posición

return(0); // salir

}

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

// comprobar el trailing stop

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Punto*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

//+---------------CLOSE VENDER POSICIÓN --------------------------------

else // pasar a posición corta

{ //+ NO ELIMINAR

if(OrderType()==OP_SELL) // se abre la posición corta

{

}

// ¿se debe cerrar?

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

if ( Stoch_Main_M15_Cu > Stoch_Sig_M15_Cu )

//+ estocástico principal > estocástico señal

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

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // cerrar posición

return(0); // salir

}

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

// comprobar el trailing stop

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Punto*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

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

Gracias,

fxgroup

 

¿Cuáles son los mejores indicadores de plazo semanal/diario?

Esta pregunta podría dirigirse a los traders experimentados.

Cuáles son los indicadores fiables (ya probados) que podrían darnos una idea sobre el movimiento de la tendencia principal durante:

1- La semana futura

2- El día futuro (o el próximo día)

Sabiendo que no estoy pidiendo niveles de entrada B/S.

Nota: Creo que una vez que definimos la dirección del movimiento para la próxima semana, podemos construir una base para cuando entrar.

Gracias

 

Pregunta sobre mql

Código:

// si tenemos posiciones abiertas nos ocupamos de ellas

//con la modificación del stoploss

cnt=Total de órdenes();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket ",OrderTicket()," modificado.");// ¿por qué se escribe aquí antes de modificar los pedidos (según tengo entendido)?

if (OrderType()==OP_SELL)

{

si (TrailingStop>0)

{

if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

if (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

return(0);

Hola a todos, alguien podría explicarme por qué :Print("Ticket ",OrderTicket()," modificado."); se escribe antes de modificar la orden. Según entiendo, imprimirá" ticket de pedido modificado" aunque no haya sido modificado. Es un trozo de código terminador.

Gracias.

 
Flytox:
Código:

// si tenemos posiciones abiertas nos ocupamos de ellas

//con la modificación del stoploss

cnt=Total de órdenes();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket ",OrderTicket()," modificado.");// ¿por qué se escribe aquí antes de modificar los pedidos (según tengo entendido)?

if (OrderType()==OP_SELL)

{

si (TrailingStop>0)

{

if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

if (OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple);

return(0);

Hola a todos, alguien podría explicarme por qué :Print("Ticket ",OrderTicket()," modificado."); se escribe antes de modificar la orden. Según entiendo, imprimirá "ticket de pedido modificado" aunque no haya sido modificado. Es un trozo de código terminador.

Gracias.

Tienes razón, debería escribirse después de la modificación o el mensaje debería ser : "Intentando modificar el pedido : ",OrderTicket()

 

Gracias Kalenzo, estoy aprendiendo mql y tus artículos y respuestas son muy útiles, gracias de nuevo.

 

Puede ser suficiente si hace las siguientes cuatro ediciones:

1. Comentar la línea 102, que será

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. 2. Añade la variable "GAP" (extern int), que es el número fijo de pips donde debe entrar la "cobertura".

Aunque, alguien señaló antes en algún lugar de este foro, que realmente no se puede "cubrir" en el mismo símbolo; es casi lo mismo que tomar la pérdida. Tal vez es mejor tomar la pérdida y luego volver cuando el precio se invierte de nuevo....

 
ralph.ronnquist:
Podría ser suficiente si hace las siguientes cuatro ediciones:

1. Comentar la línea 102, que será

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4. Añade la variable "GAP" (extern int), que es el número de pips establecido donde debe entrar la "cobertura".

Aunque, alguien señaló antes en algún lugar de este foro, que realmente no se puede "cubrir" en el mismo símbolo; es casi lo mismo que tomar la pérdida. Tal vez es mejor tomar la pérdida y luego volver cuando el precio se invierte de nuevo....

No ha servido de nada. Y, para ser más específico, lo que realmente estoy queriendo que mi EA haga es lo siguiente:

El EA entrará en un comercio de compra / venta basado en cierta condición. Una vez que el comercio inicial se introduce, a veces puede tomar de tres a cinco días antes de que finalmente se cierra a tomar ganancias. Mientras tanto, durante ese período de tres a cinco días, puede haber varias oportunidades de comercio en la dirección opuesta. Quiero que el AE aproveche esas oportunidades mientras deja la operación original abierta porque finalmente se cerrará con beneficios. Estas oportunidades comerciales adicionales en la dirección opuesta a la operación original serán técnicamente una cobertura contra la operación original, a pesar de que eventualmente también se cerrarán con ganancias. Para ser claro, sin embargo, sólo quiero que el EA tenga sólo una operación abierta en la misma dirección. Por lo tanto, el máximo de operaciones abiertas al mismo tiempo sería una compra y una venta.

Espero que esto ayude.

Gracias por tu respuesta

 

Hmm; no he probado su EA, pero leyendo la lógica, me parece que lo único que impide una venta posterior después de una compra es que "IsTrade" sea verdadero. (Excepto que no abrirá una venta al mismo tiempo que abre una compra)

Así que si usted quiere que la lógica de la venta se aplique incondicionalmente, yo habría pensado que mi edición (1) sólo - olvidar 2-4 - haría el truco. O eliminar la lógica "IsTrade".

Aunque, existe la lógica subordinada con "TickCheck" y "BarCount", que detiene otra operación en el mismo tick o en la misma barra, pero asumo que quieres que se aplique todavía.

Por supuesto, no puedo decir mucho sobre la parte de la señalización, que has omitido. Por ejemplo, si al levantar una "Señal_de_Venta" se tienen en cuenta las "Órdenes_de_Compra", entonces hay que hacer algo más.

 

Haz que la codificación sea interesante

Antes de pulsar BACK, ¿podría ayudarme?

Soy nuevo en los indicadores de codificación, pero sé cómo codificar EA, sin embargo. No al 100%, pero lo suficientemente bueno.

De todos modos, me preguntaba si alguien amable me ayudaría.

Podría explicarme cada línea y darme un ejemplo.

p.d. Es una parte de un código para MACD:

int start()

{

int limit;//what does Limit equal,0?

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

for(int i=0; i<limit; i++)//i<0?

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line counted in the 2-nd buffer

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- done

return(0);

}

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

Estaría muy contento si alguien o más personas me ayudaran, y me dieran pistas para codificar indicadores, o algo así.

Gracias,

Dan.

 

¿Cómo ejecutar un script dentro de un EA?

Hola,

Me gustaría saber cómo ejecutar un script en el directorio de scripts dentro de un EA.

Si (condición verdadera)

{

Ejecutar Script;

}

Gracias de antemano

Saludos

Jimmy

Razón de la queja: