Ayuda a la codificación - página 333

 

Sólo una observación :

Código como este :

DayLow = iff(dayofmonth != dayofmonth[1], low, min(low, nz(DayLow[1]))

Significa : DayLow es un mínimo de un día actual o de un día anterior más bajo )lo mismo para los máximos). Ahora bien, parece inofensivo cuando se describe, pero si se piensa en lo que significa "mínimo del día anterior más bajo", pronto se entenderá que está teniendo en cuenta todas las barras del gráfico. Ese es el mismo error que tenían algunos indicadores de paso, que cometió Mark Jurik en su cálculo de uno de los estocásticos (entonces lo llamé "estocástico de longitud infinita") y que tienen algunos otros indicadores... y lleva a dos cosas : deformación de los datos calculados (los mínimos y los máximos son siempre sólo más bajos o sólo más altos, nunca al revés) y, finalmente, repintado (cuando se cambia de marco temporal o de símbolo, se pierden algunas barras que antes eran las más antiguas, y eso puede influir en el resultado final)

 

Lo he intentado. No tengo mucho tiempo ahora, así que siéntase libre de corregirlo.

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

//| Magarto |

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 DimGray

double all4[];

double ma[];

double maslopeB[];

double candleOver[];

double bothElder[];

int init()

{

IndicatorBuffers(5);

SetIndexBuffer(0,all4);

SetIndexBuffer(1,ma);

SetIndexBuffer(2,maslopeB);

SetIndexBuffer(3,candleOver);

SetIndexBuffer(4,bothElder);

IndicatorShortName("Magarto");

return(0);

}

int deinit()

{

return(0);

}

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

//| |

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

int start()

{

int counted_bars = IndicatorCounted();

int i,limit;

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

if(counted_bars>0) counted_bars--;

limit = MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--)

{

ma = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,i);

double maslope = ma - ma;

if(maslope < 0) maslopeB = -1;

else if(maslope > 0) maslopeB = 1;

else maslopeB = 0;

if(((Open + Close + High + Low) / 4) > ma) candleOver = 1; else candleOver = -1;

double xMA = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,i);

double DayLow = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayLow = iLow(NULL,PERIOD_D1,i);

else DayLow = MathMin(iLow(NULL,PERIOD_D1,i),iLow(NULL,PERIOD_D1,i+1));

double bearpower = DayLow - xMA;

double DayHigh = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayHigh = iHigh(NULL,PERIOD_D1,i);

else DayHigh = MathMax(iHigh(NULL,PERIOD_D1,i),iHigh(NULL,PERIOD_D1,i+1));

double bullpower = DayHigh - xMA;

if (bearpower > 0 && bullpower > 0) bothElder = 1;

else if(bearpower < 0 && bullpower < 0) bothElder = -1;

else bothElder = 0;

all4 = maslopeB + candleOver + bothElder;

}

return(0);

}

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

//| |

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

 

Hola, sólo quería preguntar una cosa que está en mi mente desde hace mucho tiempo acerca de los indicadores de múltiples marcos de tiempo.

Miren la imagen: Este es un gráfico de barras de rango de 6 pips de dow jones con el indicador blau ergodic, he resaltado el momento de esa señal de venta. Se produce al final de esa vela. Esta vela abre en 14,43 y cierra en 14,57.

He trazado el indicador en el gráfico de barras de rango 2 pip, con la misma configuración, señalándolo en el gráfico de barras de rango 6 pip.

Muestra el inicio de la señal de venta cuando la vela del gráfico de 6 pips aún no está cerrada. Sé que este es el comportamiento NORMAL del indicador mtf, no podía ser de otra manera.

Mi objetivo es solo crear 2 colores más, el rosa claro para las señales de venta y el verde claro para las señales de compra cuando la vela de 6 pips del gráfico no está cerrada todavía.

Por lo tanto, debería ser así:

Mi pregunta es: ¿es posible hacerlo? ¿Cómo debo enfocar la cosa?

gracias

Archivos adjuntos:
my.jpg  114 kb
2_pip.jpg  102 kb
6_pip.jpg  87 kb
 
thefxpros:
Hola, sólo quería preguntar una cosa que está en mi mente desde hace mucho tiempo acerca de los indicadores de múltiples marcos de tiempo.

Mira la imagen: Este es un gráfico de barras de rango de 6 pips de dow jones con indicador ergódico blau, he resaltado el momento de esa señal de venta. Se produce al final de esa vela. Esta vela abre en 14,43 y cierra en 14,57.

He trazado el indicador en el gráfico de barras de rango 2 pip, con la misma configuración, señalándolo en el gráfico de barras de rango 6 pip.

Muestra el inicio de la señal de venta cuando la vela del gráfico de 6 pips aún no está cerrada. Sé que este es el comportamiento NORMAL del indicador mtf, no podía ser de otra manera.

Mi objetivo es solo crear 2 colores más, el rosa claro para las señales de venta y el verde claro para las señales de compra cuando la vela de 6 pips del gráfico no está cerrada todavía.

Por lo tanto, debería ser así:

Mi pregunta es: ¿es posible hacerlo? ¿Cómo debo enfocar la cosa?

gracias

Se puede hacer - solo hay que añadir 2 buffers más para la barra actual

 
assassin:
Me enviaron el primer enlace para esto

si usted fue a la función con el cursor, usted verá lo que es

como esto

mladen:
Sólo una observación :

Código como este :

DayLow = iff(dayofmonth != dayofmonth[1], low, min(low, nz(DayLow[1]))

Significa : DayLow es un mínimo del día actual o del mínimo del día anterior )lo mismo para los máximos). Ahora bien, parece inofensivo cuando se describe, pero si se piensa en lo que significa "mínimo del día anterior", pronto se entenderá que está teniendo en cuenta todas las barras del gráfico. Ese es el mismo error que tenían algunos indicadores de paso, que cometió Mark Jurik en su cálculo de uno de los estocásticos (entonces lo llamé "estocástico de longitud infinita") y que tienen algunos otros indicadores... y lleva a dos cosas : deformación de los datos calculados (los mínimos y los máximos son siempre sólo más bajos o sólo más altos, nunca al revés) y finalmente repintado (cuando cambias de marco temporal o de símbolo, se pierden algunas barras que antes eran las más antiguas, y eso puede influir en el resultado final)
airquest:
Lo he probado. No tengo mucho tiempo ahora, así que no dudes en corregirlo.

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

//| Magarto |

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 DimGray

double all4[];

double ma[];

double maslopeB[];

double candleOver[];

double bothElder[];

int init()

{

IndicatorBuffers(5);

SetIndexBuffer(0,all4);

SetIndexBuffer(1,ma);

SetIndexBuffer(2,maslopeB);

SetIndexBuffer(3,candleOver);

SetIndexBuffer(4,bothElder);

IndicatorShortName("Magarto");

return(0);

}

int deinit()

{

return(0);

}

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

//| |

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

int start()

{

int counted_bars = IndicatorCounted();

int i,limit;

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

if(counted_bars>0) counted_bars--;

limit = MathMin(Bars-counted_bars,Bars-1);

for(i=limit; i>=0; i--)

{

ma = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,i);

double maslope = ma - ma;

if(maslope < 0) maslopeB = -1;

else if(maslope > 0) maslopeB = 1;

else maslopeB = 0;

if(((Open + Close + High + Low) / 4) > ma) candleOver = 1; else candleOver = -1;

double xMA = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,i);

double DayLow = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayLow = iLow(NULL,PERIOD_D1,i);

else DayLow = MathMin(iLow(NULL,PERIOD_D1,i),iLow(NULL,PERIOD_D1,i+1));

double bearpower = DayLow - xMA;

double DayHigh = 0;

if(iTime(NULL,PERIOD_D1,i) != iTime(NULL,PERIOD_D1,i+1)) DayHigh = iHigh(NULL,PERIOD_D1,i);

else DayHigh = MathMax(iHigh(NULL,PERIOD_D1,i),iHigh(NULL,PERIOD_D1,i+1));

double bullpower = DayHigh - xMA;

if (bearpower > 0 && bullpower > 0) bothElder = 1;

else if(bearpower < 0 && bullpower < 0) bothElder = -1;

else bothElder = 0;

all4 = maslopeB + candleOver + bothElder;

}

return(0);

}

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

//| |

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

Buenos días a todos

Primero quiero pedir disculpas, por no estar atento a su trabajo, mia es una petición y no he estado pendiente de sus preguntas

Magarto es un usuario español como bien dices mladen

La plataforma de trabajo utilizando y has visto

Estoy tratando de traducir su estrategia a MQL4

Pero mi nivel de programación es demasiado básico

Quiero agradecer este desarrollo mucho

Puedo pedir, por favor, si usted puede incluir los puntos cuando el indicador llega a los extremos

Visualizar algo así

De nuevo, muchas gracias.

Un abrazo a todos fuerte

Hermo

Archivos adjuntos:
 
Hermo:
Buenos días a todos

Primero quiero disculparme, por no estar atento a su trabajo, mia es una petición y no he estado pendiente de sus preguntas

Magarto es un usuario español como has dicho mladen

La plataforma de trabajo utilizando y has visto

Estoy tratando de traducir su estrategia a MQL4

Pero mi nivel de programación es demasiado básico

Quiero agradecer este desarrollo mucho

Puedo pedir, por favor, si usted puede incluir los puntos cuando el indicador llega a los extremos

Visualizar algo así

De nuevo, muchas gracias.

Un abrazo a todos fuerte

Hermo

Ya está, he corregido algunas cosas. El código se ve igual que el original, pero en otro timeframe que no sea el diario, los valores del resultado parecen diferentes que en tradingview. No estoy seguro si esto se debe a las diferencias entre tradingview y MT4 o a un error. Como utiliza los máximos y mínimos de las velas, yo diría que se debe a las diferencias, porque las velas no son iguales de una plataforma a otra. En fin, no creo que pueda hacerlo mejor.

Archivos adjuntos:
magarto.mq4  4 kb
 
airquest:
Ya está, he corregido algunas cosas. El código se ve igual que el original, pero en otro timeframe que no sea el diario, los valores del resultado parecen diferentes que en tradingview. No estoy seguro si esto se debe a las diferencias entre tradingview y MT4 o a un error. Como utiliza los máximos y mínimos de las velas, yo diría que se debe a las diferencias, porque las velas no son iguales de una plataforma a otra. De todas formas, no creo que pueda hacerlo mejor.

buenos días

Muchas gracias por tu trabajo y dedicación

El indicador funciona perfectamente ahora

De nuevo, muchas gracias

gran trabajo

Con tu permiso, te pediré que incluyas un aviso en el apartado correspondiente.

Saludos cordiales.

Hermo.

 

por favor ayudenme......

spikebars_v3.ex4spikebars_v3.mq4Hola a todos, espero que alguien pueda ayudarme a configurar mi asesor experto mt4.No soy bueno en habilidades de computación.Pero me gustaría hacer y asesor experto

pero me gustaría hacer un asesor experto con un indicador de barra de pico que mide el tamaño del cuerpo de la vela.

Me gustaría que el ea abriera una posición de compra o venta basada en el tamaño del cuerpo de la vela.

Por ejemplo, comprar cuando= aparece una vela de toro con el tamaño de 30 pips (a ser ajustable).

con stoploss y take profit ajustables y tamaño de posición ajustable.

vender cuando= aparece una vela de oso con un tamaño de 30 pips (ajustable)

con stoploss y take profit ajustables y tamaño de posición ajustable.

Así que soy capaz de ajustar el comercio de acuerdo con el análisis actual y dejar que el comercio ea para mí.

Espero que cualquiera que sea amable pueda ayudarme porque soy un principiante.

Muchas gracias.

Archivos adjuntos:
 

Hola a todos, espero que alguien pueda ayudarme a configurar mi mt4 expert advisor.no soy bueno en habilidades de computación.pero me gustaría hacer y expert advisor

con un indicador de barra de pico que mide el tamaño del cuerpo de la vela.

Me gustaría que el ea abriera una posición de compra o venta basada en el tamaño del cuerpo de la vela.

Por ejemplo, comprar cuando= aparece una vela de toro con el tamaño de 30 pips (a ser ajustable).

con stoploss y take profit ajustables y tamaño de posición ajustable.

vender cuando= aparece una vela de oso con un tamaño de 30 pips (ajustable)

con stoploss y take profit ajustables y tamaño de posición ajustable.

Así que soy capaz de ajustar el comercio de acuerdo con el análisis actual y dejar que el comercio ea para mí.

Espero que cualquiera que sea amable pueda ayudarme porque soy un principiante.

Muchas gracias.

 
faremie:
Hola a todos, espero que alguien pueda ayudarme a configurar mi mt4 expert advisor.no soy bueno en habilidades de computación.pero me gustaría hacer y expert advisor

con un indicador de barra de pico que mide el tamaño del cuerpo de la vela.

Me gustaría que el ea abriera una posición de compra o venta basada en el tamaño del cuerpo de la vela.

Por ejemplo: comprar cuando= aparece una vela de toro con el tamaño de 30 pips (a ser ajustable).

con stoploss y take profit ajustables y tamaño de posición ajustable.

vender cuando= aparece una vela de oso con un tamaño de 30 pips (ajustable)

con stoploss y take profit ajustables y tamaño de posición ajustable.

Así que soy capaz de ajustar el comercio de acuerdo con el análisis actual y dejar que el comercio ea para mí.

Espero que cualquiera que sea amable pueda ayudarme porque soy un principiante.

¡Muchas gracias!

faremie

Parece que el indicador del que hablas no se adjunta. ¿Te importaría adjuntarlo?