Ayuda a la codificación - página 16

 
nontan:
Hola, genio codificador y gente amable:D

Ahora estoy desarrollando un simple EA, pero no puedo entender las siguientes condiciones.

Si la posición anterior se cierra por Take Profit, hacer una nueva entrada que establece 20 pips por s / l y t / p en el próximo precio de apertura. (en el gráfico de 5M)

Traté de escribir uno.

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//La última posición fue una orden instantánea OP_BUY o OP_SELL

{

if(

OrderClosePrice() == OrderTakeProfit())

// Si el precio de cierre es el mismo que el precio

de toma de beneficios

{

if(

OrderType() == OP

_BUY) /El

tipo de orden es de compra

{

OrderSend

(OP_BUY,Lots,Ask,Slippage,

SLpips

,

Ask+20*Point

,

"",

MAGIC

);// Los lotes y otras variables son definidas por mi mismo

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

He probado muchas veces con el probador de estrategias, pero no puedo actuar como espero.

Alguien me puede ayudar con esta pregunta.

[lang=pl]Hola,

¿Puedes adjuntar el código completo del EA?

Saludos,

Grzesiek[/lang]

 

...

Trate de usar esto en comparación

if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

tal vez eso ayuda

nontan:
Hola, genio codificador y gente amable:D

Ahora estoy desarrollando un simple EA pero no puedo entender las condiciones de abajo.

Si la posición anterior se cierra por Take Profit, hacer una nueva entrada que establece 20 pips por s / l y t / p en el próximo precio de apertura. (en el gráfico de 5M)

Traté de escribir uno.

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//La última posición fue una orden instantánea OP_BUY o OP_SELL

{

if(

OrderClosePrice() == OrderTakeProfit())

// Si el precio de cierre es el mismo que el precio

de toma de beneficios

{

if(

OrderType() == OP

_BUY) /El

tipo de orden es de compra

{

OrderSend

(OP_BUY,Lots,Ask,Slippage,

SLpips

,

Ask+20*Point

,

"",

MAGIC

);// Los lotes y otras variables son definidas por mi mismo

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

He probado muchas veces con el probador de estrategias, pero no puedo actuar como espero.

Alguien me puede ayudar con esta pregunta.

 

Gracias chicos.

Intenté insertar NormarizeDouble pero no funcionó..

¿Podríais enseñarme por qué no funciona?

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

#include

#define MAGIC 20120101

#define COMENTARIO "Riding9"

extern double Lotes = 0.1

extern int Deslizamiento = 3;

extern int SLpips = 20

extern int TPpips = 50;

extern int StartTime = 1;

extern int FinishTime = 23

extern int MAPeriod = 48;

int SeñalDeEntrada(int magia)

{

double pos = MyCurrentOrders(MY_OPENPOS, magic);

double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

int ret = 0;

if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9)) ret = 1;

else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9)) ret = 1;

if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1;//

else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9)) ret = -1;

return(ret);

}

bool MiOrdenEnviarSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic)

{

int mult=1;

if(Dígitos == 3 | Dígitos == 5) mult=10;

slippage *= mult;

if(type==OP_SELL || type==OP_SELLLIMIT | type==OP_SELLSTOP) mult *= -1;

double sl=0, tp=0;

if(slpips > 0) sl = price-slpips*Point*mult;

if(tppips > 0) tp = precio+tppips*Punto*mult;

return(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic));

}

int inicio()

{

if(Hour() >= StartTime && Hour() < FinishTime)

{

int sig_entry = SeñalDeEntrada(MAGIC);

if(sig_entry > 0)

{

MyOrderClose(Slippage, MAGIC);

MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC);

}

if(sig_entry < 0)

{

MyOrderClose(Slippage, MAGIC);

MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips,TPpips, COMMENT, MAGIC);

}

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

{

if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

{

if(OrderType() == OP_BUY)

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

}

return(0);

}

return(0);

}

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

Por favor, enséñame mi error si lo descubres.

Saludos.

 

...

nontan,

Esta línea
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

[/PHP]

No selecciona la última orden cerrada, sino la primera (después del saldo inicial) de la cola de órdenes cerradas. Por lo tanto, siempre está comprobando una orden fija en lugar de comprobar cuál fue la última orden y luego acomodarse a ella. Si desea comprobar la última orden cerrada (la última en la cola de órdenes cerradas, pero tenga en cuenta que metatrader no garantiza que sea la última cuando se ordena por fecha-hora de cierre) debe utilizar esta forma de comprobación
[PHP]if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
 

Gracias, mladen

No he utilizado todavía la función OrderHistoryTotal, que es la adecuada para este código.

Por fin, tengo un código de deseo después de modified.As resultado EA trabaja para hacer la nueva entrada después de conseguir TakeProfit.

Gracias por su empresa y todo.

 

Necesito su ayuda maestros codificadores

hola, por favor necesito que alguien me ayude a codificar mi estrategia

 
johnray:
hola, por favor necesito que alguien me ayude a codificar mi estrategia

[lang=pl]Sólo dame un detalle

Saludos[/lang]

 

He mandado un pm

g.pociejewski:
[lang=pl]Sólo dame un detalle Saludos[/lang]

gracias maestro te envié un pm.. es un poco complicado

 

Código para la actualización automática

Estoy usando un indicador que necesita refrescarse constantemente. Estoy usando un gráfico de 15 minutos por lo que no necesita refrescarse cada tick, aunque eso estaría bien si no hay un gran consumo de energía. Al menos debería tener una opción para el intervalo de tiempo entre cada actualización. Ahora mismo actualizo manualmente cada minuto más o menos usando la pestaña desplegable 'Charts' y seleccionando 'Refresh'.

¿Existe algún código o forma de refrescar el indi y/o el gráfico automáticamente, ya sea a través de un código adicional en el indi o en un EA?

Gracias, el bee

 

[langtitle=fr]Indicador original Parabolic Sar de Wilder[/langtitle]

[lang=fr]
¡Hola!

Estoy buscando el ORIGINAL parabólica SAR, quiproquo por Wilder. He hecho el código de este indicador para la plataforma PRT, pero no sé la codificación en MT4.

Si alguien tiene conocimientos de codificación en MT4, puedo dar el código por mensaje privado, para adaptar esto en la codificación de MT4.

Gracias
[/lang]