¿Cómo codificar? - página 15

 

¡Se necesita un codificador!

A todos los programadores otros allí, necesito ayuda para el código o hacer para mí EA para mi comercio. No tengo ninguna experiencia en hacer EA así que necesito que ustedes.

El EA :

LWMA - 5 (cierre)

SMA - 8 (cierre)

Comprar - cuando ambas líneas se cruzan entonces esperar a la siguiente barra y automáticamente comenzar a disparar. Lo mismo para ir en corto.

Stoploss - 30

Takeprofit - 30

Trailstop - 15

Por favor, necesito ayuda.

Gracias.

 
Sinar FX:
A todos los programadores que hay, necesito ayuda para codificar o hacer para mí EA para mi comercio. No tengo ninguna experiencia en hacer EA por lo que necesito chicos.

El EA :

LWMA - 5 (cierre)

SMA - 8 (cierre)

Comprar - cuando ambas líneas se cruzan entonces esperar a la siguiente barra y automáticamente iniciar el disparo. Lo mismo para ir en corto.

Stoploss - 30

Takeprofit - 30

Trailstop - 15

Por favor, necesito ayuda.

Gracias.

¿Qué marco de tiempo?

 

Por favor, ayúdenme a entender el código del indicador personalizado

Hola, soy un novato en MQL4. Me he dado cuenta de que muchos indicadores personalizados contienen las siguientes líneas para preparar el bucle de conteo de barras:

int counted_bars = IndicatorCounted();

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

if( counted_bars > 0 ) counted_bars--;

int limit = Bares - counted_bars;

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

Según el tutorial de metatrader.info, counted_bars = IndicatorCounted() calculará counted_bars como 0 en el primer lanzamiento del indicador. "Después de eso será el recuento de barras totales en el gráfico menos uno". ¿Después de qué? ¿Después del primer lanzamiento? ¿Tengo que lanzar el indicador dos veces para que funcione? El manual de referencia de MQL4 tampoco es mucho más claro: "IndicatorCounted() devuelve el recuento de barras que no ha cambiado después del último lanzamiento del indicador. En la mayoría de los casos el mismo conteo de valores de índice no necesita ser recalculado. Se utiliza para optimizar los cálculos".

Luego está Bars, que es "el número de barras en el gráfico". ¿Por qué no simpky utilizar el siguiente bucle de conteo de barras:

for(int i=1;i<=Barras;i++)

Entendería que alguien me explicara en lenguaje llano qué es lo que ocurre exactamente en

int barras_contadas = IndicadorContado();

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

if( counted_bars > 0 ) counted_bars--;

int limit = Bars - counted_bars;

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

¿y en qué dirección se cuentan las barras: hacia adelante (de la barra más antigua a la más nueva) o hacia atrás? ¡Gracias en avdance!

 

Mira si este artículo te ayuda.

https://www.mql5.com/en/articles/1497

buena suerte.

 

Gracias, Maji. Me ha servido de ayuda. Corrígeme si me equivoco:

1. IndicatorCounted es útil en gráficos cuyas barras se actualizan en tiempo real. Así, en lugar de recalcular los valores de los indicadores para todas las barras cuando aparece una nueva barra, sólo se calcula el valor del indicador para esta nueva barra.

2. "límite" es simplemente el número de barras nuevas, para las que hay que calcular el indicador.

3. El índice del indicador cuenta las barras hacia atrás, con i=0 indicando la nueva barra (actual).

Supongo que mi confusión se basó en mi experiencia anterior con Wealth-Lab, donde un código de indicador se escribe de tal manera que los valores del indicador se calculan para todas las barras, incluso si sólo las nuevas barras deben ser calculadas. Sin embargo, Wealth-Lab tiene cierta inteligencia incorporada y es posible que los indicadores se recalculen automáticamente sólo para las nuevas barras. Tengo la sensación de que MQL4 no quiere tomar esas decisiones por ti y te las deja a ti obligándote a hacer pasos de programación extra. En realidad me gusta eso porque siempre odio cuando un software toma decisiones por ti y estas decisiones no son las mismas que las tuyas. Mi único problema con MQL4 es que me gustaría que tuviera una mejor documentación.

 

fiqe,

Creo que tus suposiciones son correctas. Creo que MT4 tiene razón en sólo calcular los indicadores una vez y los recursos de WL hogs hacerlo de la otra manera.

Tal vez me equivoque y espero que otros más entendidos puedan corregirnos a ambos.

 
 

Nick,

Revisa tu correo electrónico. Te he enviado un ejemplo allí.

Avísame.

Maji

 

OK, creo que puedes hacerlo así:

Primero tienes que señalar qué hora estás buscando - si tu broker es GMT+3 entonces para contar los Pivots en hora GMT tienes que decerar la hora del broker por 3. Así que si buscas la hora 00.00 buscarás las 21.00 en la hora de tu broker.

Ahora, un día son 24 horas y empezamos a buscar desde la parte derecha de la pantalla. Tu hora de broker es +3 por lo que estaremos sumando ese numbet al valor de desplazamiento.

for(int i = 3 ; i <= 27 ; i++)

{

if(TimeHour(Time)==21)

{

//This should be your GMT midnight so u can take OHLC values from here

double open = iOpen(Symbol(),60,i);

double high = iHigh(Symbol(),60,i);

double low = iLow(Symbol(),60,i);

double close = iClose(Symbol(),60,i);

}

}

No sé si esta es una forma simple, pero funciona.

 

Hola,

En la última versión de SimpleDailyRangeBreakoutExpert puedes encontrar el código para hacer de vela(OHLC) para cualquier zona horaria.