Indikatoren: Didi Index - Seite 3

 
collisr350 #:
dieser Indikator ist großartig, EXCPEPT es funktioniert nicht richtig in Echtzeit. Es reagiert nicht richtig für die Bereitstellung von Echtzeit-Signal.
Bei mir funktioniert er in Echtzeit einwandfrei. Mit welchem Problem sind Sie konfrontiert?
 

Einige Dinge sind schlecht.

Wenn ich den originalen SMA03 + SMA20 verwende, sind die Kreuzungen anders als bei diesem Indikator.
Gibt es einen geheimen Algo???
Die Berechnungspuffer werden nicht verwendet. Ich weiß es nicht ..

 
Petr Michalica #:

Manche Dinge sind schlecht.

Wenn ich den originalen SMA03 + SMA20 verwende, sind die Kreuzungen anders als bei diesem Indikator.
Gibt es einen geheimen Algo???
Die Berechnungspuffer werden nicht verwendet. Ich weiß es nicht ..

Es ist der veröffentlichte Quellcode - kein Geheimnis.

Hier ist die Berechnung:

   short_handle   = iMA(Symbol(), Timeframe, FastPeriod, Shift, Method, AppliedPrice);
   average_handle = iMA(Symbol(), Timeframe, MeanPeriod, Shift, Method, AppliedPrice);
   long_handle    = iMA(Symbol(), Timeframe, SlowPeriod, Shift, Method, AppliedPrice);

// und dann...

   void CalculateDidiIndex(const int shift=0)
  {
//---
   double fast[1],mean[1],slow[1];

   if(CopyBuffer(short_handle, 0, shift, 1, fast)<=0) return;
   if(CopyBuffer(average_handle, 0, shift, 1, mean)<=0) return;
   if(CopyBuffer(long_handle, 0, shift, 1, slow)<=0) return;

   FastBuffer[shift] = fast[0]/mean[0];
   MeanBuffer[shift] = 1;
   SlowBuffer[shift] = slow[0]/mean[0];
//---
  }
 

Ja, ich habe die Quelle gelesen,

Aber das Problem ist die Abweichung.
Die Schnitte der ursprünglichen sma03+sma20 sind nicht an der gleichen Stelle.

 
Petr Michalica #:
sma03+sma20

Sie lassen den average_handle weg, der von der Eingabe gesteuert wird:

input int                MeanPeriod   =8;               // Mittlerer MA-Zeitraum
 

AHA.
OK. Ja, alles ist richtig.
Das tut mir leid.
Qualität messen ist einfacher. Schön.
Ich denke,d der Durchschnitt ist 20. Ich weiß, es sind 3smas.

 
Matheus de Oliveira #:
Glauben Sie, dass es ein Problem wäre, die Leitungen zu entfernen und die Reparatur durchzuführen?

Es sollte kein Problem sein. Gelegentlich schreiben Leute Code für ihr spezifisches Symbol/Instrument, das ist alles.

Dieser Zifferncode ist ein ziemlicher Standard in Indikatoren und nichts weiter:

IndicatorSetInteger(INDICATOR_DIGITS, _Digits);

Sie könnten die Funktion ganz löschen und der Indikator würde immer noch funktionieren, aber er würde immer standardmäßig 6 Ziffern anzeigen.

 
trade_addicted #:
[W]o kann ich die SlowBuffer-Werte lesen

Siehe die Pufferdeklarationen:

   SetIndexBuffer(0,FastBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,MeanBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,SlowBuffer,INDICATOR_DATA);

Den schnellen Puffer #0 haben Sie bereits gefunden. Ebenso ist der langsame Puffer der Puffer Nr. 2.

Mir persönlich bereitet der mittlere Puffer Nr. 1, dem ein statischer Wert von 1 zugewiesen wird, Kopfzerbrechen. Es wäre einfacher und sauberer, einfach die ganze Zahl zu verwenden... 1.🤔
 
Ryan L Johnson # Der mittlere Puffer Nr. 1, dem ein statischer Wert von 1 zugewiesen wird, bereitet mir persönlich Kopfzerbrechen. Es wäre einfacher und sauberer, einfach die ganze Zahl zu verwenden... 1.🤔

Sie haben Recht, wenn Sie sich über den mittleren Puffer wundern. In dieser Implementierung wird ihm immer ein statischer Wert von 1 zugewiesen(MeanBuffer[shift] = 1), so dass er sich nie über mehrere Takte hinweg ändert.

Das bedeutet, dass der Puffer selbst überflüssig ist: Sie brauchen ihn nicht zu speichern oder durch SetIndexBuffer freizugeben.

Der Indikator könnte einfach die Konstante 1 direkt in der Berechnung der beiden anderen Reihen verwenden, und das würde den Code kürzer und klarer machen und weniger Speicherplatz verbrauchen. Die Puffer Fast und Slow sind die einzigen, die echte Daten enthalten.

 
Ja, es ist gut, eine hohe Präzision zu haben.