Indicadores Multi Timeframe - página 108

 

pendiente mtf

mira aquí alpha24seven

https://www.mql5.com/en/forum/173574

 

Gracias Lodol2

Perdona que se me hayan pasado. Gracias por llamarme la atención.

Tuve algunos problemas de compilación. Nunca había visto este error. ¿Alguna idea?

Ver gráfico

Gracias.

Archivos adjuntos:
 

estoy de acuerdo con todo lo que has dicho, pero creo que no me he explicado lo suficientemente bien.

la fórmula de keris no se ve así en tiempo real (¡sin refrescar los gráficos!), se parece más a esa línea amarilla; si refrescas los gráficos, sí, todo se ve bien - pero entonces, ¿por qué no usar simplemente un segundo gráfico con el marco temporal más alto... y confirmar que el indicador se mueve sólo en el marco temporal más alto?

desde el momento en que se traza un indicador mtf en un timeframe inferior, se tiene otra forma de promediar algunos datos en ese timeframe (y no en un tf superior). nunca se va a parecer al original - pero se puede aproximar. entonces la pregunta es, ¿cómo encontrar la mejor fórmula para la aproximación más cercana? y creo que esto responde a tu pregunta... ¿no?

mladen:
La línea roja es la aproximación de la MA que propones

Magenta es la forma Keris de MTF MA

La línea dorada son los valores reales de un MA de un marco de tiempo superior en un marco de tiempo inferior

Como puedes ver, apenas hay un solo valor correcto de la aproximación en un periodo de tiempo, mientras que la fórmula de Keris da al menos un valor correcto por periodo. De todas formas, la fórmula para la aproximación en Metatrader sería :

MAperiod=MAperiod*TimeFrame/Period()

Si intentas aplicar esta aproximación a los indicadores derivados de las medias móviles (MACD por ejemplo), acabarás con grandes, y digo GRANDES diferencias (he visto un 7-8% de diferencia de un MACD de 4H en un marco temporal de 1H)

Una contra-pregunta: ¿cuánta gente cree que ha probado diferentes enfoques para los indicadores multitemporales?
 

Error en el código

Lo he descubierto. Este código extra fue dejado en el archivo -- al final. Solo hay que borrarlo, compilar y voila'.

Excelente indicador BTW.

---

/*

void drawLine(double lvl,string name, color Col )

{

ObjectDelete(nombre);

ObjectCreate(nombre, OBJ_HLINE, WindowFind(nombre), Time[0], lvl,Time[0], lvl);

ObjectSet(nombre, OBJPROP_STYLE, STYLE_DOT);

ObjectSet(name, OBJPROP_COLOR, Col);

ObjectSet(name,OBJPROP_WIDTH,1);

}

---

 

...

La línea amarilla es la media móvil"real MTF

No es necesario "refrescar" ninguno de los indicadores de la imagen

En cuanto al resto, por favor, vuelve a leer ese post

saludos

mladen

Scrat:
estoy de acuerdo con todo lo que has dicho, pero creo que no me he explicado lo suficientemente bien.

la fórmula de keris no se ve así en tiempo real (¡sin refrescar los gráficos!), se parece más a esa línea amarilla; si refrescas los gráficos, sí, todo se ve bien - pero entonces, ¿por qué no usamos simplemente un segundo gráfico con el marco temporal más alto... y confirmamos que el indicador se mueve sólo en el marco temporal más alto?

desde el momento en que se traza un indicador mtf en un timeframe inferior, se tiene otra forma de promediar algunos datos en ese timeframe (y no en un tf superior). nunca se va a parecer al original - pero se puede aproximar. entonces la pregunta es, ¿cómo encontrar la mejor fórmula para la aproximación más cercana? y creo que esto responde a tu pregunta... ¿no?
 

Necesito Mtf Para Este Indi

Hola a todos,

He estado queriendo tener la capacidad de trazar indicadores de diferentes marcos de tiempo en mi gráfico

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

//| Fisher_m11.mq4 ||||||||||||||

//| Copyright ฉ forexjr

//| Índice de /cam06/fisher

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

#property copyright "Copyright ฉ 23.07.2006 MartinG "

#property link "http://home.arcor.de/cam06/fisher"

#property indicador_separar_ventana

//#property indicador_mínimo -1

//#property indicador_máximo 1

#propiedad indicator_buffers 3

#property indicator_color2 RoyalBlue

#property indicator_color3 Red

#property indicator_width2 0.5

#propiedad indicador_ancho3 0.5

int NúmeroIzquierdo1=56;

int LeftNum2=56;

extern int RangePeriods=35;

extern double PriceSmoothing=0.3; // =0.67 bei Fisher_m10

extern double IndexSmoothing=0.3; // =0.50 bei Fisher_m10

string ThisName="Fisher_kuskus";

int DrawStart;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtMapBuffer3[];

double ExtMapBuffer4[];

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

//| Función de inicialización de los indicadores personalizados ||.

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

int init()

{

//---- indicadores

IndicatorBuffers(4);

SetIndexLabel(0, "Star");

SetIndexStyle(0,DRAW_NONE);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(2,DRAW_HISTOGRAM);

SetIndexBuffer(2,ExtMapBuffer3);

SetIndexStyle(3,DRAW_NONE);

SetIndexBuffer(3,ExtMapBuffer4);

string Text=EsteNombre;

Text=Text+" (rPeriods "+RangePeriods;

Text=Text+", pSmooth "+DoubleToStr(PriceSmoothing,2);

Text=Text+", iSmooth "+DoubleToStr(IndexSmoothing,2);

Text=Text+") ";

IndicatorShortName(Text);

SetIndexLabel(1,NULL);

SetIndexLabel(2,NULL);

DrawStart=2*RangePeriods+4; // DrawStart= BarNumber calculado de izquierda a derecha

SetIndexDrawBegin(1,DrawStart);

SetIndexDrawBegin(2,DrawStart);

if (PriceSmoothing>=1.0)

{

PriceSmoothing=0.9999;

Alert("Fish61: ¡El factor PriceSmothing tiene que ser menor que 1!");

}

if (PriceSmoothing<0)

{

PriceSmoothing=0;

Alert("Fish61: ¡El factor PriceSmothing no debe ser negativo!");

}

if (IndexSmoothing>=1.0)

{

IndexSmoothing=0.9999;

Alert("Fish61: ¡El factor PriceSmothing tiene que ser menor que 1!");

}

if (IndexSmoothing<0)

{

IndexSmoothing=0;

Alert("Fish61: ¡El factor PriceSmothing no debe ser negativo!");

}

//----

return(0);

}

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

//| Función de desinicialización del indicador personalizada ||

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

int deinit()

{

//----

//----

return(0);

}

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

//| Función de iteración del indicador personalizada ||

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

int inicio()

{

if (Bars<DrawStart)

{

Alert("Fish84: No hay suficientes barras cargadas para calcular FisherIndicator con RangePeriods=",RangePeriods);

return(-1);

}

//----

int counted_bars=IndicadorContado();

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

if (counted_bars>0) counted_bars--;

//----

int Posición=Barras_contadas; // Posición = Posición de la barra calculada de derecha a izquierda

int LeftNum1=Bars-Position; // cuando se cargan más barras la Posición de una barra cambia pero no su LeftNum

if (LeftNum1<RangePeriods+1)Position=Bars-RangePeriods-1;

while(Posición>=0)

{

CalculateCurrentBar(Position);

Posición--;

}

//----

return(0);

}

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

//| Función de cálculo de una barra ||

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

int CalcularBarraActual(int pos)

{

double LowestLow, HighestHigh, GreatestRange, MidPrice;

double PrecioLocalización, SuavizadoLocalización, ÍndicePescado, SuavizadoPescado;

//----

LowestLow = Low[Lowest(NULL,0,MODE_LOW,RangePeriods,pos)];

HighestHigh = High;

si (MáximoAlto-MínimoBajo<0,1*Punto)MáximoAlto=MínimoBajo+0,1*Punto;

RangoMayor=MayorAlto-MayorBajo;

Precio Medio = (Alto[pos]+Bajo[pos])/2;

// Ubicación del precio en el rango actual

if (GreatestRange!=0)

{

PriceLocation=(MidPrice-LowestLow)/GreatestRange;

PriceLocation= 2.0*PriceLocation - 1.0; // -> -1 < PriceLocation < +1

}

// Suavizado de PriceLocation

ExtMapBuffer4[pos]=AlisadoDePrecios*ExtMapBuffer4[pos+1]+(1,0-AlisadoDePrecios)*UbicaciónDePrecios;

SmoothedLocation=ExtMapBuffer4[pos];

if (SmoothedLocation> 0.99) SmoothedLocation= 0.99; // verhindert, dass MathLog unendlich wird

if (SmoothedLocation<-0.99) SmoothedLocation=-0.99; // no se ha tenido en cuenta que el registro matemático no es suficiente

// FisherIndex

if(1-SmoothedLocation!=0) FishIndex=MathLog((1+SmoothedLocation)/(1-SmoothedLocation));

else Alert("Fisher129: Unerlaubter Zustand bei Bar Nummer ",Bars-pos);

// Suavizado de FisherIndex

ExtMapBuffer1[pos]=Suavizado del Índice*ExtMapBuffer1[pos+1]+(1.0-Suavizado del Índice)*FishIndex;

si (Bars-pos<DrawStart)ExtMapBuffer1[pos]=0;

SmoothedFish=ExtMapBuffer1[pos];

if (SmoothedFish>0) // tendencia al alza

{

ExtMapBuffer2[pos]=SmoothedFish;

ExtMapBuffer3[pos]=0;

}

else // tendencia a la baja

{

ExtMapBuffer2[pos]=0;

ExtMapBuffer3[pos]=Pez Suave;

}

//----

return(0);

}

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

gracias

 
mladen:
Gente, pongámonos serios

Soy serio mladen...

Soy un novato y no un programador, puede ser la manera de scrat no es perfecto, pero tal vez puedo usarlo. Lo probaré. Si es útil, lo usaré. Si no lo es, voy a buscar de nuevo otra gran manera u otro indicador.

Alguna vez he preguntado a Codersguru sobre algo similar.

Mi pregunta fue si uso 1 EMA en 30M TF, entonces en 1M TF debe ser 30 EMA.

Y él dijo que no era así. Pero no estaba satisfecho, tal vez hay otra manera, así que lo encuentro aquí. Pero si no es útil, Está bien para mí ... . Al menos sé que el resultado es.

BTW, gracias por el último RSIOMA mladen, me gusta mucho, y gracias a fxbs y Kalenzo también, para este gran indicador.

Saludos,

IIN

 

El problema es el siguiente:

Esa idea con las MA's es probablemente la más antigua del análisis técnico

Estoy de acuerdo en que sitios como TSD son lugares para compartir ideas, y conocimientos

Pero por favor nadie debe intentar hacerlo de esta manera :

Sólo me preguntaba si alguno de vosotros ha pensado alguna vez en hacer una correspondencia entre el mismo indicador en un tf mayor y en uno menor al mismo tiempo....

Vamos, ¿qué diablos estamos tratando de hacer aquí, de todos modos?

Espero que ahora me haya explicado bien

saludos

mladen

iinzall:
Lo digo en serio mladen...

Soy un novato y no un programador, puede ser la manera de scrat no es perfecto, pero tal vez puedo usarlo. Lo probaré. Si es útil, lo usaré. Si no lo es, voy a buscar de nuevo otra gran manera u otro indicador.

Alguna vez he preguntado a Codersguru sobre algo similar.

Mi pregunta fue si uso 1 EMA en 30M TF, entonces en 1M TF debe ser 30 EMA.

Y él dijo que no era así. Pero no estaba satisfecho, tal vez hay otra manera, así que lo encuentro aquí. Pero si no es útil, Está bien para mí ... . Al menos sé que el resultado es.

BTW, gracias por el último RSIOMA mladen, me gusta mucho, y gracias a fxbs y Kalenzo también, para este gran indicador.

Saludos,

IIN
 

de acuerdo, soy oficialmente tonto y acabo de ofender a todo el mundo en este hilo. ¿he acertado esta vez?

mis disculpas.

mladen:
El problema es este:

Esa idea con MA's es probablemente la idea más antigua en el análisis técnico

Estoy de acuerdo en que sitios como TSD son lugares para compartir ideas, y conocimientos

Pero por favor que nadie intente hacerlo de esta manera :

Vamos, ¿qué diablos estamos tratando de hacer aquí, de todos modos?

Espero que ahora me haya explicado bien

saludos

mladen
 

¿Alguien sabe dónde están estos indis MTF?

He buscado por todas partes las versiones MTF de estos. ¿Alguien sabe o las ha visto?

Gracias.

Archivos adjuntos:
Razón de la queja: