Er basiert auf dem Custom Moving Average aus dem Ordner mit den Indikatorbeispielen.
Die SMA-Berechnungsfunktion wurde nicht geändert. Der GMA wird in einer separaten Funktion berechnet. Am Ende berechnen wir ihre Differenz.
Ich danke Ihnen! Aus der obigen Grafik können Sie ersehen, dass der Indikator seine Funktion erfüllt. Oder ist es nicht so? Ich muss noch viel daran arbeiten, um es besser zu verstehen.
Yuriy Asaulenko: Ich sehe nichts, außer dem, was man ohne Indikatoren sehen kann.
Weil Sie das nicht sehen wollen. Ich sehe, dass der Indikator eindeutig einen Rückgang vorausgesagt hat, und zwar sogar früher (nach oben) als der Kurs tatsächlich gesunken ist.
Yousufkhodja Sultonov: Ich danke Ihnen! Anhand des obigen Diagramms können Sie sehen, dass der Indikator seine Funktion erfüllt. Oder doch?
Der Indikator zeigt an, was er in der Formel angegeben ist. Aber die Interpretation der Ergebnisse und die Entwicklung von TS auf ihrer Grundlage ist eine viel schwierigere Aufgabe. Übrigens, überprüfen Sie bitte, ob der GMA richtig zählt?
void CalculateGeometricalMA(int rates_total,int prev_calculated,int begin,const double &price[]) { int i,limit; //--- first calculation or number of bars was changed double powr=1/(double)InpMAPeriod; if(prev_calculated==0)// first calculation { limit=InpMAPeriod+begin; //--- set empty value for first limit bars for(i=0;i<limit-1;i++) gma[i]=1.0; //--- calculate first visible value double firstValue=1;
Yousufkhodja Sultonov: Weil Sie das nicht sehen wollen. Ich sehe, dass der Indikator eindeutig einen Rückgang vorausgesagt hat, und zwar sogar früher (nach oben) als der Kurs tatsächlich gesunken ist.
Ist es das?
Ich habe es mir sogar noch einmal angesehen.
Zy Ein Derivat von MA hätte dasselbe Ergebnis gebracht. Auch die Richtung wurde noch vorhergesagt).
elibrarius: Der Indikator zählt, was in der Formel angegeben ist. Die Interpretation der Ergebnisse ist jedoch eine weitaus schwierigere Aufgabe. Übrigens, überprüfen Sie bitte, ob die GMA korrekt ist?
void CalculateGeometricalMA(int rates_total,int prev_calculated,int begin,const double &price[]) { int i,limit; //--- first calculation or number of bars was changed double powr=1/(double)InpMAPeriod; if(prev_calculated==0)// first calculation { limit=InpMAPeriod+begin; //--- set empty value for first limit bars for(i=0;i<limit-1;i++) gma[i]=1.0; //--- calculate first visible value double firstValue=1;
Leider weiß ich nicht viel über den Code, lassen Sie jemanden, der sich damit auskennt, dies überprüfen, indem Sie mit den gegebenen Formeln vergleichen oder die Preise aus dem gegebenen Test in die ursprüngliche Tabelle eingeben. Ich habe den Eindruck, dass die Reihenfolge der Zahlen richtig ist.
Ich füge den gewünschten Indikator bei.
Es basiert auf dem Custom Moving Average aus dem Ordner mit Beispielen von Indikatoren.
SMA-Berechnungsfunktion ohne Änderungen.
Die GMA wird in einer separaten Funktion berechnet.
Am Ende berechnen wir ihre Differenz.
Ich füge den gewünschten Indikator bei.
Es basiert auf dem Custom Moving Average aus dem Ordner mit Beispielen von Indikatoren.
SMA-Berechnungsfunktion ohne Änderungen.
Die GMA wird in einer separaten Funktion berechnet.
Am Ende berechnen wir ihre Differenz.
Ich füge den gewünschten Indikator bei.
Er basiert auf dem Custom Moving Average aus dem Ordner mit den Indikatorbeispielen.
Die SMA-Berechnungsfunktion wurde nicht geändert.
Der GMA wird in einer separaten Funktion berechnet.
Am Ende berechnen wir ihre Differenz.
Ich danke Ihnen! Aus der obigen Grafik können Sie ersehen, dass der Indikator seine Funktion erfüllt. Oder ist es nicht so? Ich muss noch viel daran arbeiten, um es besser zu verstehen.
Frage: Welcher Zeitraum wird verwendet?
Man kann nichts sehen, außer dem, was man ohne Indikatoren sehen kann.
M1-Zeitraum. Es steht in der linken Ecke).
Ich sehe nichts, außer dem, was man ohne Indikatoren sehen kann.
Ich danke Ihnen! Anhand des obigen Diagramms können Sie sehen, dass der Indikator seine Funktion erfüllt. Oder doch?
Übrigens, überprüfen Sie bitte, ob der GMA richtig zählt?
void CalculateGeometricalMA(int rates_total,int prev_calculated,int begin,const double &price[])
{
int i,limit;
//--- first calculation or number of bars was changed
double powr=1/(double)InpMAPeriod;
if(prev_calculated==0)// first calculation
{
limit=InpMAPeriod+begin;
//--- set empty value for first limit bars
for(i=0;i<limit-1;i++) gma[i]=1.0;
//--- calculate first visible value
double firstValue=1;
for(i=begin;i<limit;i++)
firstValue*=price[i];
firstValue=MathPow(firstValue, powr);
gma[limit-1]=firstValue;
}
else limit=prev_calculated-1;
//--- main loop
for(i=limit;i<rates_total && !IsStopped();i++){
gma[i]=gma[i-1] * (MathPow(price[i], powr) / MathPow(price[i-InpMAPeriod], powr));
}
//---
}
Man kann nichts sehen, außer dem, was man ohne Indikatoren sehen kann.
M1-Zeitraum. Es steht in der linken Ecke).
Weil Sie das nicht sehen wollen. Ich sehe, dass der Indikator eindeutig einen Rückgang vorausgesagt hat, und zwar sogar früher (nach oben) als der Kurs tatsächlich gesunken ist.
Ist es das?
Ich habe es mir sogar noch einmal angesehen.
Zy Ein Derivat von MA hätte dasselbe Ergebnis gebracht. Auch die Richtung wurde noch vorhergesagt).
Der Indikator zählt, was in der Formel angegeben ist. Die Interpretation der Ergebnisse ist jedoch eine weitaus schwierigere Aufgabe.
Übrigens, überprüfen Sie bitte, ob die GMA korrekt ist?
void CalculateGeometricalMA(int rates_total,int prev_calculated,int begin,const double &price[])
{
int i,limit;
//--- first calculation or number of bars was changed
double powr=1/(double)InpMAPeriod;
if(prev_calculated==0)// first calculation
{
limit=InpMAPeriod+begin;
//--- set empty value for first limit bars
for(i=0;i<limit-1;i++) gma[i]=1.0;
//--- calculate first visible value
double firstValue=1;
for(i=begin;i<limit;i++)
firstValue*=price[i];
firstValue=MathPow(firstValue, powr);
gma[limit-1]=firstValue;
}
else limit=prev_calculated-1;
//--- main loop
for(i=limit;i<rates_total && !IsStopped();i++){
gma[i]=gma[i-1] * (MathPow(price[i], powr) / MathPow(price[i-InpMAPeriod], powr));
}
//---
}