¿Cómo codificar? - página 166

 

Gracias por su respuesta.

pero esto no funciona si hubo deslizamiento cuando se cerró la posición, ¿verdad?

 
codersview:
Hola a todos,

Tengo un problema con el EA de RSI y MA...

Tengo el indicador funcionando correctamente... Todo lo que quiero es convertirlo en EA...

He probado un par de cosas. IndicatorCounted() no está funcionando en la EA, así que traté de hard-code los valores del bucle for (bar=0; bar<15; bar++), estaba recibiendo RSI correcto, pero SMA no está dando valores correctos...

Adjunto el código de la SMA que cruza el RSI...

El problema es que no se puede hacer un seguimiento de la evolución de la situación.

***************************************************************************************************************************************

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 LawnGreen

#property indicador_color2 AzulOscuro

double ExtMapBuffer1[];

double ExtMapBuffer2[];

int init()

{

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);

SetIndexBuffer(1,ExtMapBuffer2);

return(0);

}

int deinit()

{

return(0);

}

int inicio()

{

int barra, límite;

int barras_contadas=IndicadorContado();

if(counted_bars<0) return(-1);

if(barras_contadas>0) barras_contadas--;

limit=Barras-IndicadorContadas();

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

ExtMapBuffer1 = iRSI(NULL,0,14,PRICE_TYPICAL,bar);

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

ExtMapBuffer2=iMAOnArray(ExtMapBuffer1,Bars,14,0,MODE_SMA,bar);

return(0);

}

***************************************************************************************************************************************

Gracias y saludos,

Ganesh

Ganesh,

Intenta hacer las barras en orden de tiempo.

En lugar de for(bar=0; bar<limit; bar++)

Utilice for(bar=limit-1; bar>=0; bar--)

Chazzmoney

 

Hola

Gracias por la rápida respuesta... Lo he probado, pero no hace ninguna diferencia...

También si usamos Bares en el bucle, tiene que calcular los valores enteros (para todas las barras) para cada tick... y podría haber retraso... También el valor de la SMA sería cero.

En el Indicador estaríamos calculando el RSI y la EMA sólo para la nueva barra usando IndicatorCounted(), pero no podemos usarlo en el EA..

El punto exacto del problema es el segundo bucle for y los valores para el iMAOnArray..

El primer bucle for funciona perfectamente incluso cuando lo codificamos...

 
jan100:
gracias por su respuesta. pero esto no funciona si hubo deslizamiento cuando se cerró la posición, ¿verdad?

Algunos corredores escriben [sl] y [tp] en el campo de comentarios. Usted puede utilizarlo también.

 

Gracias, lo intentaré.

¿cómo es posible seleccionar la última orden cerrada con el número mágico correcto?

 
jan100:
gracias. lo intentaré. ¿cómo es posible seleccionar la última orden cerrada con el número mágico correcto?

Si se encuentra en la lista del historial, se trata de una orden cerrada, si en la lista total - abierta todavía.

 

Solicitud de código Ea: Cerrar la orden anterior al abrir una nueva posición

Hola, me gustaría solicitar un código para que cuando se abra una nueva posición, se cierre automáticamente la orden anterior.

Ejemplo:

Cuando la orden de compra se abre, la orden anterior de venta se cierra

Cuando la orden de venta está abierta, la orden anterior de compra se cerrará

Encontré el código OrderCloseBy() pero no sé exactamente donde poner este código

gracias

 
darkkiller:
Hola, me gustaría solicitar un código para que cuando se abra la nueva posición, automáticamente se cierre la orden anterior.

Ejemplo:

Cuando la orden de compra está abierta, la orden de venta anterior se cerrará

Cuando la orden de venta está abierta, la orden anterior de compra se cerrará

Encontré el código OrderCloseBy() pero no sé exactamente dónde poner este código

gracias

Problema resuelto

poner después de OrderSend BUY

{

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

}

poner después de OrderSend SELL

{

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

}

Otro código que obtuve de ForexFactory gracias a (Fulltime247,magnumfreak)

extern int MAGICTerminal=101;

extern double LOTSize=0.10;

extern string ORDERComment="Texto del comentario de la orden";

//Cuento del TOTAL..

int btotal=0; int stotal=0; int ticket=0; double closelots=0; bool xbool;

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

{

xbool=OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){btotal++; ticket=OrderTicket(); closelots=OrderLots();}

if(OrderType()==OP_SELL && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){stotal++; ticket=OrderTicket(); closelots=OrderLots();}

}// FINALIZA LA CUENTA TOTAL..

if(CUALQUIERA QUE SEA SU CONDICIÓN DE COMPRA)

{

if(btotal>0){OrderClose(ticket,closelots,Bid,3,CLR_NONE);}

ticket=OrderSend(Symbol(),OP_BUY,LOTSize,Ask,3,0,0,ORDERComment,MAGICTerminal,0,Magenta);

}

if(CUALQUIERA QUE SEA SU CONDICIÓN DE VENTA)

{

if(stotal>0){OrderClose(ticket,closelots,Ask,3,CLR_NONE);}

ticket=OrderSend(Symbol(),OP_SELL,LOTSize,Bid,3,0,0,ORDERComment,MAGICTerminal,0,Lime);

}
 
 

Soy nuevo en MT4.

Quiero calcular el número de barras después de que shortMA haya cruzado longMA, ¿alguien sabe cómo codificar esta función?

Gracias de antemano.