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

 
Aaragorn:
Kann ich das tun? Schreiben Sie einfach Pufferindizes in den Indikator und verwenden Sie das obere und untere Wort so und lassen Sie ihn die Werte der oberen und unteren Zeilen zurückgeben?

Nicht in den Indikator. In den EA. (Sie können es mit einem Indikator tun, aber nicht den gleichen Indikator in seinem eigenen Code verwenden!!!!!)

 
elihayun:
Nicht in den Indikator. In den EA. (Man kann es mit einem Indikator machen, aber nicht denselben Indikator in seinem eigenen Code verwenden!!!!!)

Ich kann also einen Pufferindex in den EA schreiben, aber wie bekommt er den Wert aus dem Indikator? Ich meinte nicht den Indikator in seinem eigenen Code zu verwenden, das wäre irgendwie dumm. verzeihen Sie meine Kommunikation Panne. es ist nicht einfach, manchmal speziell genug, was das Problem ist zu kommunizieren. Das ist das Problem, sowohl beim Programmieren als auch beim Reden über das Programmieren mit anderen.

 

Ich möchte mich bei denjenigen entschuldigen, die versuchen, mir zu helfen, aber feststellen, dass meine Beiträge eine Informationsflut darstellen. Ich habe viele Codes gepostet, weil ich dann zwei Fenster nebeneinander öffnen kann, ein Fenster ist dieser Thread und das andere ist der Metaeditor, und ich kann mir einen Teil des Codes in einem Fenster und einen anderen Teil in dem anderen Fenster ansehen, und ich mache das, um mir zu helfen, über das Problem nachzudenken, das ich betrachte. Ich bin da sehr visuell veranlagt, und das hilft mir, darüber nachzudenken, was ich tue und was ich tun will. Ich möchte niemanden mit so viel Code überfordern, dass er sich alles durchlesen muss. Manchmal habe ich versucht, Schnipsel herauszusuchen, nachdem ich den ganzen EA oder den ganzen Indikator gepostet habe, um herauszufinden, WO und WAS getan werden muss. Ich schätze jeden, der sich die Zeit nimmt, sich anzusehen, was ich tue, und konstruktiven Input zu geben. Wenn das Volumen von dem, was ich posten ist zu viel nur Filter nach unten, um für das, was ich versuche zu tun und nicht in den Rest, der nur da ist als Kontext zu dem, was ich tue verzetteln. ich bin im Grunde denken laut.

 
Aaragorn:
Ich kann also einen Pufferindex in den EA schreiben, aber wie bekommt er den Wert aus dem Indikator? Ich meinte nicht den Indikator in seinem eigenen Code zu verwenden, das wäre irgendwie dumm. verzeihen Sie meine Kommunikation Panne. es ist nicht einfach, manchmal speziell genug zu kommunizieren, was das Problem ist. Das ist das Problem sowohl beim Programmieren als auch beim Reden über das Programmieren mit anderen.

Kümmern Sie sich nicht um das WIE. Lassen Sie den Metatrader tun, dass für u. U nur den Code verwenden, um die Informationen u wie zu erhalten.

Tipp: Wenn Sie den EA ausführen, werden Sie sehen: "Trend Bands loaded succesfully", das bedeutet, dass es tut, was Sie wollen

 
elihayun:
Machen Sie sich keine Gedanken über das WIE. Lassen Sie den Metatrader das für Sie tun. Verwenden Sie einfach den Code, um die gewünschten Informationen zu erhalten. Tipp: Wenn Sie den EA ausführen, werden Sie sehen: "Trend Bands loaded succesfully", das bedeutet, dass er tut, was Sie wollen.

Ich finde es gut, den Code zu benutzen, um die gewünschten Informationen zu erhalten, und genau das will ich lernen. WIE ich den Code verwende, um die gewünschten Informationen zu erhalten.

Sie denken also, dass der beste Weg, um den Tick-Wert für die Trendbänder zu erhalten, die Verwendung von iCustome()? ist und NICHT den Code innerhalb des EAs zu schreiben, wie ich es bereits getan habe?

Für Lehrzwecke..da ich den Code bereits im EA geschrieben habe, gibt es eine Möglichkeit, die Werte von dort zu erhalten?

 
elihayun:
Das Schreiben eines Indikators ist eine Sache, das Schreiben eines EA eine andere. Vermischen Sie beides nicht. Bei Indikatoren muss man sich auch mit der Historie beschäftigen, um sie korrekt zu zeichnen. Wenn du einen EA schreibst, hast du nur den aktuellen Tick und musst die Werte jeden Tick berechnen (wenn du nicht einen Handel verlieren willst). 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.

Moment mal, es gibt tatsächlich Puffer! Wie konnte ich die nur übersehen?

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

//| Trend Bands.mq4 |

//| Dwt5 and adoleh2000 |

//| Copyright © 2005, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright © 2005, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

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

//| Custom indicator initialization function |

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

#property indicator_chart_window

#property indicator_buffers 5

#property indicator_color1 Red

#property indicator_color2 Black

#property indicator_color3 Blue

#property indicator_color4 Red

#property indicator_color5 Blue

double upper[], middle1[], middle2, lower[];

double Xup[], Xdown[];

extern int period = 34;

int init()

{

SetIndexStyle(0,DRAW_LINE,EMPTY,2);

SetIndexShift(0,0);

SetIndexDrawBegin(0,0);

SetIndexBuffer(0,upper);

SetIndexStyle(1,DRAW_LINE,EMPTY,2);

SetIndexShift(1,0);

SetIndexDrawBegin(1,0);

SetIndexBuffer(1,middle1);

SetIndexStyle(2,DRAW_LINE,EMPTY,2);

SetIndexShift(2,0);

SetIndexDrawBegin(2,0);

SetIndexBuffer(2,lower);

SetIndexStyle(3,DRAW_ARROW,EMPTY,2);

SetIndexArrow(3, 162);

SetIndexShift(3,0);

SetIndexDrawBegin(3,0);

SetIndexBuffer(3,Xdown);

SetIndexStyle(4,DRAW_ARROW,EMPTY,2);

SetIndexArrow(4, 162);

SetIndexShift(4,0);

SetIndexDrawBegin(4,0);

SetIndexBuffer(4,Xup);

//---- indicators

//----

return(0);

}

so....Ich sehe 5 Puffer...ein oberer, mittlerer, unterer und oben und unten ...

Ich nehme an, die Informationen, die ich brauche, stammen aus dem oberen und unteren Puffer ...

 
 
Aaragorn:
Ich meinte, dass dies ein neuer Beitrag sein sollte und nicht eine Bearbeitung eines früheren, die Bedienung der Website bringt mich manchmal immer noch durcheinander...

Meiner Meinung nach ist es am besten, den Indikator NICHT zu verwenden. Es ist einfach die einfachste Methode. Für den Anfang ist es gut genug.

U schauen auf die Änderungen, die ich gemacht, um den Indikator. Wenn Sie diesen Indikator verwenden möchten, stellen Sie sicher, dass Sie den richtigen Namen in Ihrem Code schreiben.

Solange Sie wissen, in welchem Puffer die gewünschten Informationen liegen, ist es egal, wie viele Indikatoren im Code vorhanden sind.

 
elihayun:
Das Schreiben eines Indikators ist eine Sache, das Schreiben eines EA eine andere. Vermischen Sie sie nicht. Bei Indikatoren müssen Sie sich auch mit der Historie befassen, um sie korrekt zu zeichnen. Wenn man einen EA schreibt, hat man nur den aktuellen Tick und muss die Werte jeden Tick neu berechnen (wenn man nicht einen Handel verlieren will). 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 dich weiter

Eli

Hey, so wird dies funktionieren, um den aktuellen Wert der oberen und unteren Zeilen in den EA zu ziehen...

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

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

Ich glaube, ich fange an, das dank der Nachhilfe zu verstehen...

also muss ich den Indikatorcode nicht innerhalb des EAs schreiben, sondern rufe ihn einfach so aus dem EA.... auf und er gibt die aktuellen Barwerte der Linien zurück, die ich dann verwenden kann... das ist perfekt! ....see Ich wusste, dass Jemand wusste, wie man das macht! (ich war es nur nicht) ...

wenn ich also die Anzahl der Perioden, die ich für den Indikator verwende, ändern möchte, würde ich folgendes tun...

extern double back = 300 //--was ich nach Belieben ändern könnte

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

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

Angenommen, ich möchte den Wert des Indikators über einen längeren Zeitraum abrufen als den, den ich im Diagramm verwende...würde ich das tun?...

extern double back = 300 //--was ich nach Belieben ändern könnte

extern double TF = 30 //--was ich nach Belieben ändern kann

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

double LowLevel = iCustome(NULL,TF, "Trend Bands", zurück, 2, 0);

wobei NULL das aktuelle Symbol verwendet,

TF verwendet die von mir angegebene Periode des Balkencharts

Trend Bands ruft den Indikator auf

back ist die benutzerdefinierte Anzahl von Balken, die für die Mittelwertbildung des Indikators verwendet werden sollen

0 oder 2 sagt ihm, auf welchen Puffer er zugreifen soll

und die letzte 0 sagt ihm, dass er den aktuellen Balken verwenden soll.

würde das funktionieren?

 
Aaragorn:
Würde das funktionieren?

Toll!!! Du hast die Idee!!!!

Es wird perfekt funktionieren. Und wenn du überprüfen willst, ob 5M und 15M gleichzeitig die Kante erreichen, kannst du die Werte von jeder TF bekommen und sie zusammen testen.

Aber lass das für letzteres....