Wie bekomme ich den Indikator dazu, zu filtern, anstatt zu alarmieren?

 

Dadurch wird ein Alarm ausgelöst, wenn der Preis eine obere oder untere Linie erreicht.

Ich möchte die Ausführung von Geschäften erlauben, bis sie in die Nähe dieser Linien kommen. Wenn der Preis zu nahe kommt, sollen die Geschäfte nicht geöffnet werden.

Wie erreiche ich, dass die Logik auf dem aktuellen Bar Closing (s) passieren, wenn alle, die hier sind Arrays sind?

for(int x=0; x<limit; x++) {

Xdown[x] = 0; Xup[x] = 0;

middle1[x] = iMA(NULL, 0, period, 0, MODE_EMA, PRICE_TYPICAL, x);// drawn line

middle2= iMA(NULL, 0, period, 0, MODE_SMA, PRICE_TYPICAL, x);// only used to calculate outer bands

avg = findAvg(period, x);

upper[x] = middle2 + (3.5*avg);

lower[x] = middle2 - (3.5*avg);

if (MathAbs(upper[x] - High[x]) < 2*Point)

{

Xdown[x] = upper[x];

if (NewBar() && x == 0)

Alert(Symbol()," ",Period()," reach upper edge");

}

if (MathAbs(lower[x] - Low[x]) < 2*Point)

{

Xup[x] = lower[x];

if (NewBar() && x == 0)

Alert(Symbol()," ",Period()," reach lower edge");

}

}

return(0);

}
 

Ich sehe, Sie geben sich Mühe, gut gemacht! In diesem Stadium denke ich, dass Sie vor allem wissen müssen, wie Sie sich selbst helfen können, daher würde ich Ihnen raten, die Funktion "NAvigator->Search" von MQL _ausführlich_ zu nutzen, dort finden Sie Antworten auf viele Ihrer Fragen (das Einzige, was man von einem Indikator aus aufrufen kann, sind die Puffer, und das geschieht über iCustom(); Objekte sind keine Arrays usw. und vieles mehr). Eine Suche nach "Array" ergibt zum Beispiel, dass der Array-Index des aktuellen Bar 0 ist, der Array-Index des letzten Bar 1 und so weiter.

Wenn die Einträge in der Suchfunktion alle überwältigend sind, versuchen Sie wahrscheinlich, etwas zu tun, was für Sie in diesem Stadium zu schwierig ist. Ich glaube, die meisten der obigen Beispiele werden im Codersguru-Anfängerkurs behandelt, daher würde ich eine zweite Lektüre empfehlen.

Du könntest auch einen einfachen EA nehmen und versuchen, ihn leicht zu vereinfachen/zu modifizieren, damit du lernst, wie er funktioniert. Sobald es getan ist, können Sie versuchen, es zu komplexisieren.

Tut mir leid, wenn ich daneben liege.

Nun, im Allgemeinen, um auf den Close-Preis zu arbeiten, testen Sie auf die Eröffnung eines neuen Balkens und schreiben Sie dann Ihre Bedingungen auf den Index 1 des Arrays. Ein möglicher Code, um die Eröffnung eines neuen Balkens zu erkennen:

bool NewBar()

{

static datetime dt = 0;

if (Zeit[0] != dt)

{

dt = Time[0];

return(true);

}

return(false);

}

Ich hoffe, das hilft, viel Glück.

 

Ja, Sie sind auf dem richtigen Weg.

Ich würde alles stoppen und noch einmal C++ Programmierung lesen.

Leider ist objektorientiert nicht so toll für mq4, also musst du das mit den Grundlagen kompensieren.

Mach weiter so Kumpel, du wirst es schaffen.

 
Aaragorn:
Dies produziert eine Warnung, wenn der Preis erreicht eine obere oder untere Linie.

Ich möchte die Ausführung von Geschäften erlauben, bis sie in die Nähe dieser Linien kommen. Wenn der Preis zu nahe kommt nicht zulassen, dass Trades zu öffnen.

wie bekomme ich, dass die Logik auf aktuelle bar Schließung (en) passieren, wenn alle, die hier sind Arrays sind?

Sie können dies als ein Beispiel haben. Es in der Nähe, was u erhalten möchten. Soweit ich sehen kann, ist es der gleiche Indikator, dass u verwenden.

 
pipeline:
Ich sehe, Sie geben sich Mühe, gut gemacht! In diesem Stadium denke ich, dass Sie vor allem wissen müssen, wie Sie sich selbst helfen können, daher würde ich Ihnen raten, die Funktion "NAvigator->Search" von MQL _ausführlich_ zu nutzen, dort finden Sie Antworten auf viele Ihrer Fragen (das Einzige, was man von einem Indikator aus aufrufen kann, sind die Puffer, und das geschieht über iCustom(); Objekte sind keine Arrays usw. und vieles mehr). Wenn Sie beispielsweise nach "Array" suchen, erfahren Sie, dass der Array-Index des aktuellen Bar 0 ist, der Array-Index des letzten Bar 1 und so weiter.

Wenn die Einträge in der Suchfunktion alle überwältigend sind, versuchen Sie wahrscheinlich, Dinge zu tun, die in diesem Stadium zu schwierig für Sie sind. Ich glaube, die meisten der oben genannten Beispiele werden im Codersguru-Anfängerkurs behandelt, daher würde ich eine zweite Lektüre empfehlen.

Du könntest auch einen einfachen EA nehmen und versuchen, ihn leicht zu vereinfachen/zu modifizieren, damit du lernst, wie er funktioniert. Sobald es getan ist, können Sie versuchen, es zu komplexisieren.

Tut mir leid, wenn ich daneben liege.

Nun, im Allgemeinen, um auf den Close-Preis zu arbeiten, testen Sie auf die Eröffnung eines neuen Balkens und schreiben Sie dann Ihre Bedingungen auf den Index 1 des Arrays. Ein möglicher Code, um die Eröffnung eines neuen Balkens zu erkennen:

bool NewBar()

{

static datetime dt = 0;

if (Zeit[0] != dt)

{

dt = Time[0];

return(true);

}

return(false);

}

Ich hoffe, das hilft, viel Glück.

ok über diese Suchfunktion... sie gibt nichts zurück. Ich habe mehrmals versucht, sie im Meta-Editor zu verwenden. Ich gebe ein, was ich suche, und drücke die Eingabetaste, aber nichts passiert, oder ich klicke auf das kleine Kästchen neben dem Suchbegriff und nichts passiert. Ich habe gerade bemerkt, wie lahm die Suche ist, weil sie überhaupt nicht funktioniert. Ich beziehe mich auf die Suchfunktion im Metaeditor-Navigatorfenster... gibt es ein Protokoll, das ich nicht kenne, damit es funktioniert?

 
fx-programmer:
Ja, Sie sind auf dem richtigen Weg.

Ich würde alles stoppen und noch einmal C++-Programmierung lesen.

Leider ist objektorientiert nicht so toll für mq4, also musst du das mit den Grundlagen kompensieren.

Mach weiter so, Kumpel, du wirst es schaffen.

Danke für die Ermutigung, moralische Unterstützung zählt. Verstehen Sie, was mein theoretisches Ziel hier ist? Könnten Sie eine bessere Methode (die Grundlagen, wie Sie es nennen) vorschlagen, um dieses Ziel zu erreichen?

 
pipeline:

Um mit dem Schlusskurs zu arbeiten, testen Sie im Allgemeinen die Eröffnung eines neuen Balkens und schreiben dann Ihre Bedingungen auf den Index 1 des Arrays. Ein möglicher Code zur Erkennung der Eröffnung eines neuen Balkens:

bool NewBar()

{

static datetime dt = 0;

if (Zeit[0] != dt)

{

dt = Time[0];

return(true);

}

return(false);

}

Ich hoffe, das hilft, viel Glück.

es hilft fast, wenn Sie wissen, was ich meine... angenommen, es gibt true zurück, dann was, wie erhalten Sie den Wert des Indikators aus dem Array zum aktuellen Abschluss jetzt, dass es erkannt wurde, dass es einen neuen Balken gibt?

 
 
Aaragorn:

Gestern Abend habe ich herumgegoogelt und dies gefunden...

http://www.gordago.com/?act=download

Hat jemand Erfahrung damit? Ist es echt?

Gordago kann keine benutzerdefinierten Indikatoren verarbeiten oder ist noch nicht in der Lage dazu. Das ist ein großes Manko.

Der einzige Weg, das Programmieren zu lernen, ist, sich abzumühen, wie Sie es jetzt tun... von Beispielen lernen. Das Material von Coders' Guru ist großartig zum Lernen.

Viel Glück!

Maji

 
Ich denke heute darüber nach, die Indikatoren zur Hölle zu schicken und einfach zu sehen, ob ich etwas erstellen kann, das mich auf das höchste Hoch und das niedrigste Tief der vorherigen (x) Balken verweisen lässt.

Je mehr ich mich mit Indikatoren beschäftige, desto attraktiver scheint dies....

Ok, ich sehe das high() in den vordefinierten Variablen. Wie kann ich es verwenden, um zum Beispiel das höchste Hoch der letzten 30 Stunden zu erhalten?

 

Das Schreiben eines Indikators ist eine Sache, das Schreiben eines EA eine andere. Vermischen Sie beides nicht. In Indikatoren müssen Sie mit der Geschichte zu behandeln, um es richtig zu zeichnen. Wenn Sie einen EA schreiben, haben Sie nur den aktuellen Tick und müssen die Werte für jeden Tick berechnen (wenn Sie nicht einen Handel verlieren wollen). Um also die Werte der oberen und unteren Kante des aktuellen Ticks zu erhalten, können Sie 2 Dinge tun

  1. Verwenden Sie den ursprünglichen Indikator als Kundenindikator
  2. Schreiben Sie die Logik des Indikators in Ihren EA

Die 1. Option ist nicht schwer. Sie müssen zuerst herausfinden, was der Pufferindex ist, der für die obere und untere Linie verwendet wird.

Um das herauszufinden, müssen Sie im Code des Indikators nachsehen

SetIndexPuffer(0,obere);

SetIndexBuffer(1,middle1);

SetIndexBuffer(2,unten);

Wie Sie sehen können, ist die obere Zeile Index 0, die mittlere ist Index 1 und die untere ist Index 2.

Nun, da wir diese Informationen haben, müssen wir wissen, wie viele Parameter der Indikator hat. Um diese Information zu erhalten, müssen wir nach Zeilen suchen, die mit dem Wort external beginnen

Ich habe nur 1 Zeile gefunden

extern int Periode = 34;

Jetzt können wir den Indikator als Kundenindikator verwenden

double upLevel = iCustome(NULL,0, "Trend Bands", 34, 0, 0);

double LowLevel = iCustome(NULL,0, "Trend Bands", 34, 2, 0);

34 ist der Parameter für den Indikator

0 ist der Pufferindex (2 für den unteren)

die letzte 0 ist der Bar Shift (in EA brauchen wir den aktuellen, also verwenden wir 0)

Nun, da Sie die oberen und unteren Werte haben, können Sie sie mit dem Preis vergleichen.

Ich hoffe es bringt Sie weiter

Eli

Grund der Beschwerde: