¿Cómo codificar? - página 60

 

Gracias Kalenzo,

He probado con OP_BUYLIMIT pero no funciona.

Voy a probar con OP_BUYSTOP.

 

pregunta rápida de codificación

¿Cómo se pone una línea horizontal en la pantalla en el valor medio (de todos los precios de cierre)? ¿Existe un código específico para ello?

 

simple breakout EA

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

//| SimpleBreakoutEA.mq4 |

//| |

//| |

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

#property copyright "jjk2"

#property link ""

//---- input parameters

extern int ____TIME_RANGE____;

extern int TimeRange = 1; // # of Hours to look back from TimeEnd. ex) if breakout is @ 22:00 GMT to 23:00 GMT. Total TimeRange to lookback is 8 hrs.

extern int TimeBegin = 22;

extern int TimeEnd = 23;

extern int CancelTime = 20; // ALL REMAINING ORDERS WILL BE CANCELED AT THIS INDICATED TIME.

extern int ______FILTERS______;

extern int TriggerFilter = 0;

extern bool AllowBreakEven = True;

extern int ______ORDERS______;

extern double Lots = 0.1;

extern int StopLoss = 50;

extern int TakeProfit = 100;

extern int Slippage = 2;

extern int MagicNumber = 23423;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

// OPEN ORDERS @ HIGH/LOW from TIMEBEGIN to TimeEND

if (Hour() >= TimeBegin-1 && Hour() >= TimeEnd)

{

int HH = iHighest(NULL, 0, MODE_HIGH,TimeRange,0);

int LL = iLowest(NULL, 0, MODE_LOW,TimeRange,0);

}

double SL_High = Ask - (StopLoss * Point);

double SL_Low = Bid + (StopLoss*Point);

double TP_High = Ask + (TakeProfit*Point);

double TP_Low = Bid - (TakeProfit*Point);

if ( Ask > HH + TriggerFilter) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL_High, TP_High, "Breakout Buy", MagicNumber, NULL, Blue);

if ( Bid < LL + TriggerFilter) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL_Low, TP_Low, "Breakout Sell", MagicNumber, NULL, Red);

// MOVE SL @ BreakEven if allowed. MarketPrice distance Open Price > stop*point, then stop must equal to MarketPrice - Stop*point as new stoploss.

int total = 0;

if ( AllowBreakEven == True )

{

for(total = OrdersTotal() - 1; total >= 0; total--)

{

OrderSelect(total, SELECT_BY_POS);

if ( Bid - OrderOpenPrice() > SL_High*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - SL_High*Point, OrderTakeProfit(),0, CLR_NONE);

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

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + SL_Low*Point , OrderTakeProfit(),0, CLR_NONE);

}

}

return(0);

}

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

por alguna razón no funciona .... ¿alguien sabe por qué?

 
 

¿Cómo convertir un indicador en EA?

Hola, ¿puedo saber cómo convertir un indicador en EA?

Muchos indicadores tienen el signo de la flecha cuando se trata de ciertas condiciones y me gustaría probarlos con EA.

Me gustaría que el EA tomara la operación de acuerdo a la flecha formada.

¿Puede alguien ayudarme? Gracias.

 

Este es según el signo de la flecha

https://www.mql5.com/en/forum/173249/page51

 

¿Qué hay de convertir el indicador adjunto en EA?

¿Puede alguien ayudar? Gracias.

 
Archivos adjuntos:
envelopes.mq4  3 kb
 

Estructura del código

Hola,

Soy nuevo en Metatrader pero tengo mucha experiencia en programación. He creado algunos Asesores Expertos de ejemplo y algunos Indicadores un poco complicados en MT. Lo que no está claro es cómo estructurar un EA bastante complicado. Quiero que el EA llame a algunas funciones de "señal" para comprobar diferentes condiciones de configuración.

¿Cómo debo codificar estas funciones?

1. Como funciones "inline" en el EA

2. Como indicadores "separados" que devuelven un valor en lugar de escribir en la pantalla?

3. alguna otra función "separada" para llamar como llamar a iMA

Si elijo la alternativa 1, ¿puede la función "inline" en el EA recorrer las últimas 200 barras utilizando Close y llamar a iMA?

¿Está bien la alternativa 2? Al codificar un indicador se procesan todas las barras "disponibles", lo que por supuesto no es necesario para el EA.

La alternativa 3 me parece la opción lógica, pero no estoy seguro de cómo estructurarla para que funcione en el backtesting y qué necesito pasarle y a qué tiene acceso la función por defecto, como por ejemplo Close

Como ejemplo de lo que necesito establecer en la función "señal" es cuál es la tendencia actual y cuándo comenzó. Lo he codificado en un indicador para saber cómo hacer el código actual.

Agradezco cualquier consejo.

Ingvar

 
ingvar_e:
Hola,

Soy nuevo en Metatrader pero tengo mucha experiencia en programación. He creado algunos Asesores Expertos de muestra y algunos Indicadores un poco complicados en MT. Lo que no está claro es cómo estructurar un EA bastante complicado. Quiero que el EA llame a algunas funciones de "señal" para comprobar diferentes condiciones de configuración.

¿Cómo debo codificar estas funciones?

1. Como funciones "inline" en el EA

2. Como indicadores "separados" que devuelven un valor en lugar de escribir en la pantalla?

3. alguna otra función "separada" para llamar como llamar a iMA

Si elijo la alternativa 1, ¿puede la función "inline" en el EA recorrer las últimas 200 barras utilizando Close y llamar a iMA?

¿Está bien la alternativa 2? Al codificar un indicador se procesan todas las barras "disponibles", lo que por supuesto no es necesario para el EA.

La alternativa 3 me parece la opción lógica, pero no estoy seguro de cómo estructurarla para que funcione en el backtesting y qué necesito pasarle y a qué tiene acceso la función por defecto, como por ejemplo Close

Como ejemplo de lo que necesito establecer en la función "señal" es cuál es la tendencia actual y cuándo comenzó. Lo he codificado en un indicador para saber cómo hacer el código actual.

Agradezco cualquier consejo.

Ingvar

Probablemente ya sepas cómo hacer esto, así que disculpa si lo sabes.

Media móvil de la barra actual:

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

Media móvil de hace 200 barras.

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE, 200);

Puedes llamar a la media móvil desde la barra que quieras desde la actual hasta cualquier barra del pasado.