Indicatori multi timeframe - pagina 108

 

pendenza mtf

guarda qui alpha24seven

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

 

Grazie Lodol2

Mi dispiace di essermeli persi. Grazie per averli portati alla mia attenzione.

Ho avuto alcuni problemi di compilazione. Non ho mai visto questo errore prima. Qualche idea?

Vedere il grafico

Grazie.

File:
 

Sono d'accordo con tutto quello che hai detto, ma non credo di essere stato abbastanza chiaro.

la formula di keris non appare così in tempo reale (senza aggiornare i grafici!), appare più come quella linea gialla; se si aggiornano i grafici, sì, tutto sembra a posto - ma allora perché non usiamo semplicemente un secondo grafico con il timeframe più alto... e confermiamo che l'indicatore si muove solo sul timeframe più alto?

dal momento in cui tracciate un indicatore mtf su un timeframe inferiore, avete un altro modo di fare la media di alcuni dati su quel timeframe (e non su un tf superiore). non sarà mai come l'originale - ma può essere approssimato. quindi la domanda è, come trovare la formula migliore per l'approssimazione più vicina? e penso che questo risponda alla vostra domanda... giusto?

mladen:
La linea rossa è l'approssimazione della MA che stai proponendo

Magenta è il modo Keris di MTF MA

La linea dorata sono i valori reali di una MA di un time frame superiore su un time frame inferiore

Come potete vedere, non c'è quasi un solo valore corretto dell'approssimato in un periodo di tempo, mentre la formula di Keris dà almeno un valore corretto per periodo. Comunque, la formula per l'approssimazione in Metatrader sarebbe:

MAperiod=MAperiod*TimeFrame/Period()

Se provate ad applicare questa approssimazione agli indicatori derivati dalla media mobile (MACD per esempio), vi ritroverete con grandi, e dico grandi differenze (ho visto una differenza del 7-8% di un MACD 4H su un time frame 1H)

Una contro-domanda: cosa ne pensi di quante persone hanno provato diversi approcci agli indicatori multi time frame?
 

Errore nel codice

L'ho capito. Questo codice extra è stato lasciato nel file -- alla fine. Basta cancellarlo, compilare e voilà.

Eccellente indicatore BTW.

---

/*

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

{

ObjectDelete(nome);

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

ObjectSet(nome, OBJPROP_STYLE, STYLE_DOT);

ObjectSet(nome, OBJPROP_COLOR, Col);

ObjectSet(name,OBJPROP_WIDTH,1);

}

---

 

...

La linea gialla è la media mobile"reale MTF

Non c'è bisogno di "aggiornare" nessuno degli indicatori sull'immagine

Per quanto riguarda il resto, si prega di rileggere il post

saluti

mladen

Scrat:
sono d'accordo con tutto quello che hai detto, ma non credo di essere stato abbastanza chiaro.

la formula di keris non appare così in tempo reale (senza aggiornare i grafici!), appare più come quella linea gialla; se si aggiornano i grafici, sì, tutto sembra a posto - ma allora perché non usare semplicemente un secondo grafico con il timeframe superiore... e confermare che l'indicatore si muove solo sul timeframe superiore?

dal momento in cui tracci un indicatore mtf su un timeframe inferiore, hai un altro modo di fare la media di alcuni dati su quel timeframe (e non su un tf superiore). non sarà mai come l'originale - ma può essere approssimato. quindi la domanda è, come trovare la formula migliore per l'approssimazione più vicina? e penso che questo risponda alla tua domanda... giusto?
 

Ho bisogno di Mtf per questo Indi

Ciao a tutti,

Ho voluto avere la possibilità di tracciare indicatori da diversi timeframe sul mio grafico

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

//| Fisher_m11.mq4

//| Copyright ฉ forexjr

//| Indice di /cam06/fisher |

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

#proprietà copyright "Copyright ฉ 23.07.2006 MartinG "

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

#proprietà indicator_separate_window

//#proprietà indicator_minimum -1

//#proprietà indicator_maximum 1

#proprietà indicator_buffers 3

#proprietà indicator_color2 RoyalBlue

#proprietà indicator_color3 Red

#property indicator_width2 0.5

#proprietà indicator_width3 0.5

int LeftNum1=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;

//---- buffer

double ExtMapBuffer1[]

double ExtMapBuffer2[]

double ExtMapBuffer3[]

double ExtMapBuffer4[];

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

//|Funzione di inizializzazione personalizzata dell'indicatore |

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

int init()

{

//---- indicatori

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=ThisName;

Text=Text+" (rPeriods "+RangePeriods;

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

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

Text=Text+") ";

IndicatoreNomeCorto(Testo);

SetIndexLabel(1,NULL);

SetIndexLabel(2,NULL);

DrawStart=2*RangePeriods+4; // DrawStart= BarNumber calcolato da sinistra a destra

SetIndexDrawBegin(1,DrawStart);

SetIndexDrawBegin(2,DrawStart);

se (PriceSmoothing>=1.0)

{

PriceSmoothing=0.9999;

Alert("Fish61: PriceSmothing factor has to be smaller 1!");

}

se (PriceSmoothing<0)

{

PriceSmoothing=0;

Alert("Fish61: PriceSmothing factor mustn''t be negative!");

}

se (IndexSmoothing>=1.0)

{

IndexSmoothing=0.9999;

Alert("Fish61: Il fattore PriceSmothing deve essere minore di 1!)

}

se (IndexSmoothing<0)

{

IndexSmoothing=0;

Alert("Fish61: PriceSmothing factor mustn''t be negative!");

}

//----

return(0);

}

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

//| Funzione di deinizializzazione dell'indicatore personalizzato |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Funzione di iterazione dell'indicatore personalizzato |

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

int start()

{

se (Bars<DrawStart)

{

Alert("Fish84: Non sono state caricate abbastanza barre per calcolare il FisherIndicator con RangePeriods=",RangePeriods);

return(-1);

}

//----

int counted_bars=IndicatorCounted();

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

if (counted_bars>0) counted_bars--;

//----

int Position=Bars-counted_bars; // Position = BarPosition calcolata da destra a sinistra

int LeftNum1=Bars-Position; // quando vengono caricate più barre la posizione di una barra cambia ma non il suo LeftNum

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

while(Position>=0)

{

CalculateCurrentBar(Position);

Posizione--;

}

//----

return(0);

}

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

//| Funzione di calcolo della barra singola |

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

int CalcolaCorrenteBarra(int pos)

{

double LowestLow, HighestHigh, GreatestRange, MidPrice;

double PriceLocation, SmoothedLocation, FishIndex, SmoothedFish;

//----

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

HighestHigh = High;

se (HighestHigh-LowestLow<0.1*Point)HighestHigh=LowestLow+0.1*Point;

GreatestRange=HighestHigh-LowestLow;

MidPrice = (High[pos]+Low[pos])/2;

// Posizione del prezzo nel range corrente

se (GreatestRange!=0)

{

PriceLocation=(MidPrice-LowestLow)/GreatestRange;

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

}

// Smussamento di PriceLocation

ExtMapBuffer4[pos]=PriceSmoothing*ExtMapBuffer4[pos+1]+(1.0-PriceSmoothing)*PriceLocation;

SmoothedLocation=ExtMapBuffer4[pos];

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

if (SmoothedLocation<-0.99) SmoothedLocation=-0.99; // verhindert, dass MathLog minuns unendlich wird

// FisherIndex

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

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

// Smussamento di FisherIndex

ExtMapBuffer1[pos]=IndexSmoothing*ExtMapBuffer1[pos+1]+(1.0-IndexSmoothing)*FishIndex;

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

SmoothedFish=ExtMapBuffer1[pos];

if (SmoothedFish>0) // tendenza al rialzo

{

ExtMapBuffer2[pos]=SmoothedFish;

ExtMapBuffer3[pos]=0;

}

else // altrimenti tendenza al ribasso

{

ExtMapBuffer2[pos]=0;

ExtMapBuffer3[pos]=SmoothedFish;

}

//----

return(0);

}

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

ringraziare

 
mladen:
Gente, facciamo sul serio

Sono serio mladen...

Sono un principiante e non un programmatore, forse il modo di scrat non è perfetto, ma forse posso usarlo. Lo proverò. Se è utile, lo userò. Se non lo è, cercherò di nuovo un altro grande modo o un altro indicatore.

Ho chiesto a Codersguru una cosa simile.

La mia domanda a lui era se uso 1 EMA in 30M TF, allora in 1M TF deve essere 30 EMA.

E lui ha detto che non è così. Ma non ero soddisfatto, forse c'è un altro modo, così l'ho trovato qui. Ma se non è utile, per me va bene... . Almeno so che il risultato è.

BTW, grazie per l'ultimo RSIOMA mladen, mi piace molto, e grazie a fxbs e Kalenzo anche, per questo grande indicatore.

Saluti,

IIN

 

Il problema è questo:

Quell'idea con le MA è probabilmente l'idea più vecchia dell'analisi tecnica

Sono d'accordo che posti come TSD sono posti per condividere idee e conoscenze

Ma per favore nessuno dovrebbe provare a farlo in questo modo:

Mi stavo solo chiedendo se qualcuno di voi ha mai pensato di fare una corrispondenza tra lo stesso indicatore su un tf più alto e su un tf più piccolo allo stesso tempo....

Ma dai, cosa diavolo stiamo cercando di fare qui?

Spero che ora mi sono spiegato

saluti

mladen

iinzall:
Sono serio mladen...

Sono un principiante e non un programmatore, forse il modo di scrat non è perfetto, ma forse posso usarlo. Lo proverò. Se è utile, lo userò. Se non lo è, cercherò di nuovo un altro grande modo o un altro indicatore.

Ho chiesto a Codersguru una cosa simile.

La mia domanda a lui era se uso 1 EMA in 30M TF, allora in 1M TF deve essere 30 EMA.

E lui ha detto che non è così. Ma non ero soddisfatto, forse c'è un altro modo, così l'ho trovato qui. Ma se non è utile, per me va bene... . Almeno so che il risultato è.

BTW, grazie per l'ultimo RSIOMA mladen, mi piace molto, e grazie a fxbs e Kalenzo anche, per questo grande indicatore.

Saluti,

IIN
 

Va bene, sono ufficialmente stupido e ho appena offeso tutti in questo thread. Ho fatto bene questa volta?

le mie scuse.

mladen:
Il problema è questo:

Quell'idea con le MA è probabilmente l'idea più vecchia dell'analisi tecnica

Sono d'accordo che posti come TSD sono posti per condividere idee e conoscenze.

Ma per favore nessuno dovrebbe cercare di farlo in questo modo:

Ma dai, che diavolo stiamo cercando di fare qui?

Spero che ora sono stato chiaro

saluti

mladen
 

Qualcuno sa dove sono questi indis MTF?

Ho cercato dappertutto le versioni MTF di questi. Qualcuno lo sa o l'ha visto?

Grazie.

File:
Motivazione: