Im Folgenden finden Sie ein einfaches Beispiel, das ich beim Herumspielen zusammengestellt habe.
Wenn es falsch ist, korrigieren Sie mich bitte und ich werde es ändern.
Was ich seltsam finde, ist, dass die Werte nicht mit einem einfachen gleitenden Durchschnitt im Diagramm übereinstimmen.
################### In einem Skript
int period = 21; // Der gleitende Durchschnitt von 21 Balken int sampleSize = 100; //Das ist die Anzahl der Balken der Daten, die Sie abrufen möchten int handle = iCustom(Symbol(),0, "Examples\\Custom Moving Average", Periode,// Zeitraum 0, // Versatz MODE_SMA, // Berechnungsmethode PRICE_CLOSE // Berechnung auf Basis der Schlusskurse );
void OnTick() {
// Dies ist das Array, in das Ihre gleitenden Durchschnitte kopiert werden. // Jedes Element hier ist ein gleitender Durchschnittswert // Das erste Element in diesem Array (Element an Position 0) ist das aktuellste // Das letzte Element ist das letzte Element im Array ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
################################# In einem EA (HINWEIS: die OnInit und OnTick)
int OnInit(){
int period = 21; // Der gleitende Durchschnitt von 21 Balken
int sampleSize = 100; //Das ist die Anzahl der Balken der Daten, die Sie abrufen möchten int handle = iCustom(Symbol(),0, "Examples\\Custom Moving Average", period, // Zeitraum 0, // Versatz MODE_SMA, // Berechnungsmethode PRICE_CLOSE // Berechnung auf Schlusskursen );
}
OnTick() {
// Dies ist das Array, in das Ihre gleitenden Durchschnitte kopiert werden. // Jedes Element hier ist ein gleitender Durchschnittswert // Das erste Element in diesem Array (Element an Position 0) ist das aktuellste // Das letzte Element ist das letzte Element im Array ArraySize() - 1 double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true); if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
Ja... es ist einfacher, Ihren eigenen Indikator zu erfinden und ihn in den Robotercode einzubauen, als diese Griffe jedes Mal zu programmieren... Langeweile
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Bei mir lässt es mich die Datei nicht kompilieren.
Ich weiß nicht, ob es eine Idee gibt, was los ist.
Danke!
Jordi
Danke!
Im Folgenden finden Sie ein einfaches Beispiel, das ich beim Herumspielen zusammengestellt habe.
Wenn es falsch ist, korrigieren Sie mich bitte und ich werde es ändern.
Was ich seltsam finde, ist, dass die Werte nicht mit einem einfachen gleitenden Durchschnitt im Diagramm übereinstimmen.
################### In einem Skript
int period = 21; // Der gleitende Durchschnitt von 21 Balken
int sampleSize = 100; //Das ist die Anzahl der Balken der Daten, die Sie abrufen möchten
int handle = iCustom(Symbol(),0, "Examples\\Custom Moving Average",
Periode,// Zeitraum
0, // Versatz
MODE_SMA, // Berechnungsmethode
PRICE_CLOSE // Berechnung auf Basis der Schlusskurse
);
void OnTick()
{
// Dies ist das Array, in das Ihre gleitenden Durchschnitte kopiert werden.
// Jedes Element hier ist ein gleitender Durchschnittswert
// Das erste Element in diesem Array (Element an Position 0) ist das aktuellste
// Das letzte Element ist das letzte Element im Array ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
################################# In einem EA (HINWEIS: die OnInit und OnTick)
int OnInit(){
int period = 21; // Der gleitende Durchschnitt von 21 Balken
int sampleSize = 100; //Das ist die Anzahl der Balken der Daten, die Sie abrufen möchten
int handle = iCustom(Symbol(),0, "Examples\\Custom Moving Average",
period, // Zeitraum
0, // Versatz
MODE_SMA, // Berechnungsmethode
PRICE_CLOSE // Berechnung auf Schlusskursen
);
}
OnTick()
{
// Dies ist das Array, in das Ihre gleitenden Durchschnitte kopiert werden.
// Jedes Element hier ist ein gleitender Durchschnittswert
// Das erste Element in diesem Array (Element an Position 0) ist das aktuellste
// Das letzte Element ist das letzte Element im Array ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
}
Großartiger Artikel