Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 29.12.17
Angel Angel ist offline
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 126
Angel befindet sich auf einem aufstrebenden Ast
Standard

Ja, genau so habe ich mir das vorgestellt! Wie gesagt, die F1-Dokumentation wirft oft mehr Fragen auf als sie beantwortet, zudem sie in englisch ist, was auf Dauer sehr ermüdend sein kann.
Aber fange ich doch gleich mal an: Ein Code, der funktioniert, aber ich nicht weiß, warum. Vermutlich werde ich der Einzige sein, der hier schreibt, aber auch so bringe ich es mir bei :-)

ObjectCreate("Rechteck", OBJ_RECTANGLE, 0, (Time[10]),Low[40],(Time[2]),High[1]);

Ich will hier ein Rechteck in den Chart zeichnen, das seit Einstiegssignal bis zum Ausstiegssignal sichtbar ist und auch bleibt. Wie das Signal aussieht, ist erstmal gleich, es soll ein Rechteck sein. Zum Einzeichnen benötigt man den Befehl

ObjectCreate

Dieser benötigt, damit er klaglos durch den Compiler geht, eine definierte Syntax. F1-Hilfe sagt uns dazu folgendes:

bool ObjectCreate(
string object_name, // object name
ENUM_OBJECT object_type, // object type
int sub_window, // window index
datetime time1, // time of the first anchor point
double price1, // price of the first anchor point
datetime time2=0, // time of the second anchor point
double price2=0, // price of the second anchor point
);

Wow. Da waren sie wieder, meine kurzzeitig vergessenen Probleme. Los, die F1-Hilfe aufdröseln:

bool ObjectCreate (Zeigt an, dass die Funktion (Oder ist es ein Befehl? Naja..) vom Typ "bool" ist. Was "bool" ist: Googlen)

( (Die Klammer darf nicht vergessen werden, sie umschließt das alles, was auf "ObjectCreate" folgt)

string object_name (Das ist der Name des Objektes, in dem Fall wurde halt einfach "Rechteck" genannt. Der EA soll ja wissen, wie das Ding heißt, was er da einzeichnet. Ist übrigens vom Typ "String", fall man es nich tmit Klarnamen versieht, sondern mit einer Variablen)

ENUM_OBJECT object_type (F1-Hilfe sagt, es gibt verschiedene Arten von Objekt-Typen. DA wir ein Rechteck haben wollen, wählen wir OBJ_RECTANGLE aus)

int sub_window ( Ist einfach die Angabe, ob das Dingens in einem Unterfenster gezeichnet werden soll oder nicht. Wenn direkt im Chart, dann ist die Ziffer "0")

So, jetzt kommt der Kram, den ich selbst bislang nicht ganz verstehe. Ich versuche es mal.
datetime time1 (Ist die Angabe der linken X-Position des Rechtecks. Für ein Rechteck benötigen wir 2 Punkte, um es zu definieren. Hier ist es halt die linke X-Koodinate. Die Variable, sollte es eine sein, muss vom Typ datetime sein. Ist e bissl kompliziert, da "daytime" als 10-stelliger Wert ausgegeben wird. Ist glaube ich die Sekundenzahl seit 1970 bis in dem Moment, wo er abgerufen wird. Das muss ich noch eruieren bzw. wie man das zB im M1 darstellen kann (M1 nur zur Anschauung, damit man sieht, ob und wie schnell sich das Rechteck bewegt und ob es sich auch richtig bewegt...)

double price1 (Dies ist die Y-Koordinate der linken Seite des Rechtecks. Im Chart ist dies eine Preisangabe. Was sonst? Y ist der Preis, X ist die Zeit. Logisch. Ok, der Preis ist als Variable geschrieben vom Typ "double". Man kann natürlich auch einen fixen Preis angeben. Dies liegt im Geschmack des Coders).

datetime time2 (Dies ist die X-Koordinate der rechten Seite des Rechtecks. Alles weitere analog zu oben)

double price2 (Dies ist die Y-Koordinate der rechten Seite des Rechtecks. Alles weitere analog zu oben)

) (Schließen der Klammer bedeutet, die Definition des Rechtecks ist abgeschlossen.

; Semikolon - unseren geliebten Freund - nicht vergessen!!!

So als nächstes gehe ich die X-Koordinaten an und versuche, sie in Variablen zu packen, denn mit fortlaufendem Kurs muss sich das Rechteck ja bewegen...