PDA

Ver la versión completa : EA MT4 Forex EA Generator 5 - Añadir Indicadores



tivag
19-10-2022 04:52,
hola gracias todas vuestras explicaciones.

Estoy intentado importar un indicador externo en generator 4.
el problema es que no encuentro los imput, para confirgurar e indicador en la estrategia .
no se si estoy importando mal , o no es posible.
gracias

Hola compi, para importarlo tienes que tener el archivo mq4 sino no podras importarlo, y ademas no todos los importa bien, de todas formas puedes llamarlo usando un Technical Analysis con la funcion icustom por ejemplo iCustom(NULL,0,"Nombre indicador",13,1,0)>"el valor que tu quieras"

iCustom - Technical Indicators - MQL4 Reference (https://docs.mql4.com/indicators/icustom)

saludos

cesardefez
19-10-2022 08:35,
hola gracias todas vuestras explicaciones.

Estoy intentado importar un indicador externo en generator 4.
el problema es que no encuentro los imput, para confirgurar e indicador en la estrategia .
no se si estoy importando mal , o no es posible.
gracias

Andrest
23-05-2024 00:52,
Por ejemplo, pero hay varios de la familia de este

Vinisius
23-05-2024 01:09,
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


¿ No será el famoso semáforo ?


Saludos.


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

Andrest
23-05-2024 01:26,
Bueno almenos en mi generador no me deja elegir mas buffers de los que tiene, hay un desplegable donde seleccionas el buffer que quieras. Si por error o lo que sea agregas otro buffer mas que no exista imagino que no pasara nada, simplemente no ejecutara ninguna orden, pero no creo que te salga ningún error en el diario de mt4 ni nada

Si, si o si necesitamos los buffers si no los tiene yo personalmente no sabría agregarlos (si sabría pasaría de los generadores jaja) pero la mayoría de los indicadores que nos interesan traen buffers, por ejemplo del zigzag hay una versión que no es de mt4 y si que trae buffers.

Vinisius
23-05-2024 04:46,
-------------------------------------------------------------------------------------------------------------------------------------


Gracias Andrest por la explicación.

Según el ejemplo que pones este indicador solo dispondría de 3 buffers en total (0,1 y 2)

Por lo que a la hora de fabricarlo con el Generator si se le pusiera un numero diferente a estos 3 (0,1 y 2) y pusiera por ejemplo un 4 o un 5 me saldría error o simplemente no obtendría ningún valor.

Entonces si un indicador externo no es apto para utilizarlo para el Generator se le tendría que modificar el código al indicador para imprementarle algunos buffers que devolvieran valores aptos para utilizar.

¿ Es correcto lo que digo Andrest ?.

Saludos.

Costos
23-05-2024 06:47,
Con respecto a los indicadores personalizados debemos saber reconocer las partes principales que un EA necesita para que este funcione. Generalmente los EAs generators las reconocen fácilmente y de manera automática, al menos con el que yo utilizo nunca tuve que agregar un indicador manualmente (si he tenido que agregar los buffers que no me reconocía)

Pondré un ejemplo con un indicador muy conocido que es el trend

26325
26326

Entradas:
Por un lado tenemos la parte de las entradas que en este caso son tres, para configurar el periodo, metod y precio. y podemos encontrarlas de varios tipos que se identifican según el icono
26324

Los mas utilizados seran Int para numeros, bool para verdadero o falso o string para texto.


BUFFERS o salidas:

Esto es muy importante, si el indicador no tiene buffers no sirve para crear un EA (por ejemplo el zigzag por defecto de mt4). Pues bien en esta imagen podemos ver que el indicador tiene tres buffers. Los buffer nos darán el valor que tiene el indicador y esto lo veremos en la ventana de datos (a la izquierda) si cargamos un indicador en el grafico y vemos que en la ventana de datos no no sale nada ya podemos descartarlo.
Estos buffers como se ve en la imagen se identifican como buffer 0, buffer 1, buffer 2.... independientemente del nombre que le demos el ea los identifica numéricamente...
Podemos identificar por los colores que el buffer 0 corresponde a la parte color "acua" o alcista y el buffer 1 corresponde a la parte roja o bajista y tenemos el tercer buffer que hace referencia a la media en si.
Pues bien si quisiéramos hacer que venda cuando la linea se pone roja (perdón que lo explico a como se hace en mi programa pero es similar en todos):
Seleccionaríamos un bloque de condición (o análisis técnico se suele llamar también), elegimos el indicador personalizado que ya abremos cargado al programa con sus salidas y entradas y hacemos la condición
Buffer 1 > 0 o bien Buffer 1 > Buffer 0 o incluso me ha funcionado Buffer 1 =! 0 (diferente a 0)

Configuramos las entradas (periodo, precio, metodo, etc) y elegimos la vela que queremos que se de la condición por ejemplo Shifft 1 para que la condición se de en la vela anterior.

Luego solemos tener diferentes opciones como Symbol para definir en que par se dará la condicion o timeframe para condicionarla solo a un time frame especifico (current para el actual).

Espero que sea de ayuda Un saludo :)

Muy buena explicación. Muchas gracias andrest.

Andrest
23-05-2024 07:33,
Con respecto a los indicadores personalizados debemos saber reconocer las partes principales que un EA necesita para que este funcione. Generalmente los EAs generators las reconocen fácilmente y de manera automática, al menos con el que yo utilizo nunca tuve que agregar un indicador manualmente (si he tenido que agregar los buffers que no me reconocía)

Pondré un ejemplo con un indicador muy conocido que es el trend

26325
26326

Entradas:
Por un lado tenemos la parte de las entradas que en este caso son tres, para configurar el periodo, metod y precio. y podemos encontrarlas de varios tipos que se identifican según el icono
26324

Los mas utilizados seran Int para numeros, bool para verdadero o falso o string para texto.


BUFFERS o salidas:

Esto es muy importante, si el indicador no tiene buffers no sirve para crear un EA (por ejemplo el zigzag por defecto de mt4). Pues bien en esta imagen podemos ver que el indicador tiene tres buffers. Los buffer nos darán el valor que tiene el indicador y esto lo veremos en la ventana de datos (a la izquierda) si cargamos un indicador en el grafico y vemos que en la ventana de datos no no sale nada ya podemos descartarlo.
Estos buffers como se ve en la imagen se identifican como buffer 0, buffer 1, buffer 2.... independientemente del nombre que le demos el ea los identifica numéricamente...
Podemos identificar por los colores que el buffer 0 corresponde a la parte color "acua" o alcista y el buffer 1 corresponde a la parte roja o bajista y tenemos el tercer buffer que hace referencia a la media en si.
Pues bien si quisiéramos hacer que venda cuando la linea se pone roja (perdón que lo explico a como se hace en mi programa pero es similar en todos):
Seleccionaríamos un bloque de condición (o análisis técnico se suele llamar también), elegimos el indicador personalizado que ya abremos cargado al programa con sus salidas y entradas y hacemos la condición
Buffer 1 > 0 o bien Buffer 1 > Buffer 0 o incluso me ha funcionado Buffer 1 =! 0 (diferente a 0)

Configuramos las entradas (periodo, precio, metodo, etc) y elegimos la vela que queremos que se de la condición por ejemplo Shifft 1 para que la condición se de en la vela anterior.

Luego solemos tener diferentes opciones como Symbol para definir en que par se dará la condicion o timeframe para condicionarla solo a un time frame especifico (current para el actual).

Espero que sea de ayuda Un saludo :)

rocodino
23-05-2024 19:59,
Hola te seria mas facil de programar con time de 1h pues cogiendo la apertura de 1hora es lo mismo que pretendes, si quieres pasame tu skype y te lo explico mejor por hay.Te adjunto el ea y su foto creo que hace lo que tu quieres,eso si para que haga exactamente lo que querias ponlo en el time de 1 hora el robot.

26295

Lo he estado probando y es casi lo que quiero, lo único que le falta es que si la orden se ejecuta dentro del marco de la hora y no llega al tp ni al sl, se cierren automáticamente.

Por ejemplo: se abre el ea a las 00:00 pero la orden no se ejecuta hasta que llegue a los pips que quiero 00:10 y esta asi hasta la 00:59 pues en ese momento como no ha llegado al tp ni al sl, pues se cierra la operación.

Otra cosa ¿en el EA GENERATOR a mi no me aparece CLOSE ALL?

rocodino
23-05-2024 20:08,
Mejor por privado pero creo que tienes que tener 10 mensajes para poder enviar mensajes privados

Todavía no tengo acceso a los privados, y el caso es que creo que ya he escrito más de 10 post.

tivag
23-05-2024 21:01,
te lo paso por aquí o por privado?
Mejor por privado pero creo que tienes que tener 10 mensajes para poder enviar mensajes privados

rocodino
23-05-2024 21:08,
Hola te seria mas facil de programar con time de 1h pues cogiendo la apertura de 1hora es lo mismo que pretendes, si quieres pasame tu skype y te lo explico mejor por hay

te lo paso por aquí o por privado?

tivag
23-05-2024 21:17,
El time frame que quiero utilizar es el de 1m, y la apertura seria al minuto 0 de cada hora durante todo el dia.

En otro post que he visto tuyo vi un Word con el esquema de un EA en del EA generator, ¿lo podrias poner para verlo y asi hacerlo yo al mismo tiempo?


Hola te seria mas facil de programar con time de 1h pues cogiendo la apertura de 1hora es lo mismo que pretendes, si quieres pasame tu skype y te lo explico mejor por hay.Te adjunto el ea y su foto creo que hace lo que tu quieres,eso si para que haga exactamente lo que querias ponlo en el time de 1 hora el robot.

26295

rocodino
23-05-2024 21:27,
hola en funcion de que quieres las aperturas? al open de la vela actual del time 1 h? o referente a que?

El time frame que quiero utilizar es el de 1m, y la apertura seria al minuto 0 de cada hora durante todo el dia.

En otro post que he visto tuyo vi un Word con el esquema de un EA en del EA generator, ¿lo podrias poner para verlo y asi hacerlo yo al mismo tiempo?

tivag
23-05-2024 21:55,
Quierohacer un EA con estas condiciones:
1º Quearranque solo al principio de cada hora.
2º Quese active una compra o una venta cuando llegue a unos pips por arriba (compra)o por abajo (venta).
3º Queuna vez activada la compra o venta tenga su TP y su SL y elimine automáticamentela otra orden que no ha sido activada.
4º Quesi la compra o venta no llega al TP o SL durante la hora que se cierre.
Yo hellegado a hacer el 1º,2º y parte del 3º, pero no soy capaz de hacerlo completo,agradezco tu interés.


hola en funcion de que quieres las aperturas? al open de la vela actual del time 1 h? o referente a que?

rocodino
23-05-2024 23:12,
hola ultimamente estoy algo liado pero sin problemas te podria ayudar , si se hacer lo que no consigues no te preocupes que te ayudo. ¿Cual es tu problema?

Quierohacer un EA con estas condiciones:
1º Quearranque solo al principio de cada hora.
2º Quese active una compra o una venta cuando llegue a unos pips por arriba (compra)o por abajo (venta).
3º Queuna vez activada la compra o venta tenga su TP y su SL y elimine automáticamentela otra orden que no ha sido activada.
4º Quesi la compra o venta no llega al TP o SL durante la hora que se cierre.
Yo hellegado a hacer el 1º,2º y parte del 3º, pero no soy capaz de hacerlo completo,agradezco tu interés.

tivag
23-05-2024 23:18,
Hola tivag llevo una semana intentando hacer un ea con el ea generator 4.4 y no lo consigo ¿me puedes ayudar?

Gracias.

hola ultimamente estoy algo liado pero sin problemas te podria ayudar , si se hacer lo que no consigues no te preocupes que te ayudo. ¿Cual es tu problema?

rocodino
24-05-2024 04:31,
hola no es necesario importar nada si solo lo quieres para los niveles y te sirve el indicador por defecto, con que pongas el indicador por defecto te sobra , haces un Technical Analysis , en el 1º parametro eliges el indicador con sus parametros , luego pones mayor o menor segun que prefieras y en second function eliges el valor que quieras para que entre el analisis en tu caso 70 o 30 y listo deberia hacertelo

saludos

Hola tivag llevo una semana intentando hacer un ea con el ea generator 4.4 y no lo consigo ¿me puedes ayudar?

Gracias.

tivag
24-05-2024 18:43,
-------------------------------------------------------------------------------------------------------------------------------------------------

Si , gracias tivag.

Ya lo había descubierto por mi mismo pero gracias igualmente.

Pero eso de importar indicadores externos no lo entiendo muy bién ... mode - line index de 0 a 7 y lo de poner el print... a ver que valores devuelve no lo pillo y eso que he leído el manual.

Cuando me encuentre que debo importar un indicador externo tendré problemas ... lo veo venir.

¿ Podrías explicármelo detalladamente como se hace ?

Muchas gracias.

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

Hola al menos hasta donde yo se, el tema de importar es asi, habra veces (me imagino pq el codigo sera mejor pillado por el programa) que te lo importara perfect y podras definir todas los parametros perfectamente y otras te pasara eso mismo , pero si te pasa eso no necesariamente no quiere decir que no vaya , pues yo he probado con indicadores y cuando me sale eso para definir por ejemplo si esta verde o rojo, por ejemplo flecha arriba flecha abajo...etc segun el indicador es cuestion de ponerle en ese valor 0 o 1 para definirlo de una forma u otra, eso ya es cuestion de ir probando para averiguar que hace con cada valor.

saludos

Vinisius
25-05-2024 01:53,
-------------------------------------------------------------------------------------------------------------------------------------------------

Si , gracias tivag.

Ya lo había descubierto por mi mismo pero gracias igualmente.

Pero eso de importar indicadores externos no lo entiendo muy bién ... mode - line index de 0 a 7 y lo de poner el print... a ver que valores devuelve no lo pillo y eso que he leído el manual.

Cuando me encuentre que debo importar un indicador externo tendré problemas ... lo veo venir.

¿ Podrías explicármelo detalladamente como se hace ?

Muchas gracias.

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

tivag
25-05-2024 02:03,
hola no es necesario importar nada si solo lo quieres para los niveles y te sirve el indicador por defecto, con que pongas el indicador por defecto te sobra , haces un Technical Analysis , en el 1º parametro eliges el indicador con sus parametros , luego pones mayor o menor segun que prefieras y en second function eliges el valor que quieras para que entre el analisis en tu caso 70 o 30 y listo deberia hacertelo

saludos

Vinisius
25-05-2024 05:55,
---------------------------------------------------------------------------------------------------------------------------------------------------------------------


Me he hecho con el Forex EA Generator versión 5.


La cuestión es que quiero crear un EA en base al indicador RSI y operar por sobrecompra o sobreventa en sus respectivos niveles 70 y 30.

La cuestión es que el indicador RSI que viene por defecto en el programa no marca los niveles de sobrecompra ni sobreventa (30/70) y lo que he hecho es importar el RSI del nuevo Metatrader 600+ que si los lleva.

Me sale la pantalla de configuración con lo siguiente;

mode - Line index. Can be from 0 to 7.

Y aquí me quedé. ¿ Que debo mirar en el codigo del indicador para saber que cifra poner de 0 a 7 para sobreventa y sobrecompra (30/70) ?.

Os adjunto el codigo del indicador RSI a ver si lo veis , porque yo no tengo ni puñetera idea que numeros poner de 0 a 7. Además si pongo los dos que correspondan que hago con los seis restantes , para que sirven ?.



//+------------------------------------------------------------------+
//| RSI.mq4 |
//| Copyright 2005-2014, MetaQuotes Software Corp. |
//| MQL4: automated forex trading, strategy tester and custom indicators with MetaTrader (http://www.mql4.com) |
//+------------------------------------------------------------------+
#property copyright "2005-2014, MetaQuotes Software Corp."
#property link "MQL4: automated forex trading, strategy tester and custom indicators with MetaTrader (http://www.mql4.com)"
#property description "Relative Strength Index"
#property strict
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_level1 30.0
#property indicator_level2 70.0
#property indicator_levelcolor clrSilver
#property indicator_levelstyle STYLE_DOT
//--- input parameters
input int InpRSIPeriod=14; // RSI Period
//--- buffers
double ExtRSIBuffer[];
double ExtPosBuffer[];
double ExtNegBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit(void)
{
string short_name;
//--- 2 additional buffers are used for counting.
IndicatorBuffers(3);
SetIndexBuffer(0,ExtRSIBuffer);
SetIndexBuffer(1,ExtPosBuffer);
SetIndexBuffer(2,ExtNegBuffer);
//--- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtRSIBuffer);
//--- name for DataWindow and indicator subwindow label
short_name="RSI("+string(InpRSIPeriod)+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//--- check for input
if(InpRSIPeriod<2)
{
Print("Incorrect value for input variable InpRSIPeriod = ",InpRSIPeriod);
return(INIT_FAILED);
}
//---
SetIndexDrawBegin(0,InpRSIPeriod);
//--- initialization done
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int i,pos;
double diff;
//---
if(Bars<=InpRSIPeriod || InpRSIPeriod<2)
return(0);
//--- counting from 0 to rates_total
ArraySetAsSeries(ExtRSIBuffer,false);
ArraySetAsSeries(ExtPosBuffer,false);
ArraySetAsSeries(ExtNegBuffer,false);
ArraySetAsSeries(close,false);
//--- preliminary calculations
pos=prev_calculated-1;
if(pos<=InpRSIPeriod)
{
//--- first RSIPeriod values of the indicator are not calculated
ExtRSIBuffer[0]=0.0;
ExtPosBuffer[0]=0.0;
ExtNegBuffer[0]=0.0;
double sump=0.0;
double sumn=0.0;
for(i=1; i<=InpRSIPeriod; i++)
{
ExtRSIBuffer[i]=0.0;
ExtPosBuffer[i]=0.0;
ExtNegBuffer[i]=0.0;
diff=close[i]-close[i-1];
if(diff>0)
sump+=diff;
else
sumn-=diff;
}
//--- calculate first visible value
ExtPosBuffer[InpRSIPeriod]=sump/InpRSIPeriod;
ExtNegBuffer[InpRSIPeriod]=sumn/InpRSIPeriod;
if(ExtNegBuffer[InpRSIPeriod]!=0.0)
ExtRSIBuffer[InpRSIPeriod]=100.0-(100.0/(1.0+ExtPosBuffer[InpRSIPeriod]/ExtNegBuffer[InpRSIPeriod]));
else
{
if(ExtPosBuffer[InpRSIPeriod]!=0.0)
ExtRSIBuffer[InpRSIPeriod]=100.0;
else
ExtRSIBuffer[InpRSIPeriod]=50.0;
}
//--- prepare the position value for main calculation
pos=InpRSIPeriod+1;
}
//--- the main loop of calculations
for(i=pos; i<rates_total && !IsStopped(); i++)
{
diff=close[i]-close[i-1];
ExtPosBuffer[i]=(ExtPosBuffer[i-1]*(InpRSIPeriod-1)+(diff>0.0?diff:0.0))/InpRSIPeriod;
ExtNegBuffer[i]=(ExtNegBuffer[i-1]*(InpRSIPeriod-1)+(diff<0.0?-diff:0.0))/InpRSIPeriod;
if(ExtNegBuffer[i]!=0.0)
ExtRSIBuffer[i]=100.0-100.0/(1+ExtPosBuffer[i]/ExtNegBuffer[i]);
else
{
if(ExtPosBuffer[i]!=0.0)
ExtRSIBuffer[i]=100.0;
else
ExtRSIBuffer[i]=50.0;
}
}
//---
return(rates_total);
}
//+------------------------------------------------------------------+