Jetzt ist Zeit für den ersten neuen Script..
es öffnet sich der Notepad++ Editor mit „Strategy Template“ mit folgenden Inhalt….
// Strategy template /////////////////////// function run() { set(LOGFILE); BarPeriod = 60; asset("EUR/USD"); vars Prices = series(price()); //... }
aber ich will es doch langsam angehen, deswegen lösche ich erstmal fasst alles aus dem Script b.z.w der run() Funktion..
// Mein erster Zorro Script function run() //Das ist die "run" Funktion, in Gegensatz zur "main" Funktion wird "run" Funktion bei jedem Bar ausgeführt // das bedeutet alles in den Block zwischen den beiden { } wird normal nach jedem Bar ausgeführt. { vars Prices = series(price()); // mit "vars" wird eine Variable mit dem Namen Prices angelegt, und bei jedem //run () Aufruf wird die Prices Variable der price aus der serie zugewiesen.. }
so, jetzt erstmal das Script im NotePad++ abspeichern , File > Save As oder STRG+ALT+s an der Tastatur.
Ich das Skript 001de.c
Die .c Erweiterung signalisiert dem Zorro Compiler das es in Sprache C (Lite) geschriebener Skript ist.
Nach dem abspeichern ist das 001de Skript in dem Script Menu direkt in der GUI finden.
Jetzt aber Moment , was passiert den wenn ich das 001 ausführe ??
Na mal sehen, ein klick auf „Test“ und im Statusfenster kommen folgende Zeilen zum schein..
001de compiling.......... Test: 001de EUR/USD 2015..2020
Die erste Zeile informiert über Kompilation vom Skript , d.h.es wird in eine Maschinen Sprache übersetzt , und es wurden KEINE Fehler im Skript entdeckt. WOW
In der 2 (zweiten) Zeile , wird ein Test auf ausgeführt. Und ja , es werden 5 Jahre Daten in die Variable Prices geladen. Aber warum 5 Jahre? Weil das ein Standard- Wert ist ,wenn es nicht extra im Skript definiert wird.
Zugegeben , in dieser Form ist das Skript langweilig, deswegen geben ich als nächstes ein paar die Daten aus .
Dazu muss ich den Schalter für das darstellen von Plots (Parzelle) setzen set(PLOTNOW);
alle Flags (Schalter) sollten im ideal Fall am Anfang einer Funktion gesetzt werden.
// Das ist mein Erster Script , und ja es lohnt sich immer das Script zu kommentieren ... function run() //Das ist die run Funktion, dient zu Initialisierung und alles in den Block zwischen //den beiden { } wird normal nach jedem Bar aufgerufen. { set(PLOTNOW); // PLOTNOW (Schalter) Flag wird gesetzt um sofort bei test ein Plot mit Daten zu zeichnen ohne Result zu klicken vars Prices = series(price()); // mit "vars" wird eine Variable mit dem Namen Prices angelegt, und bei jedem // run () Aufruf wird der Prices Variable der price aus der serie zugewiesen.. }
Jetzt das Script 001de im NotePad++ speichern, im Menu File > Save , oder einfach mit Tastenkombination STRG+s, oder durch klick auf die Diskette im Menu.
Nach dem klick auf TEST , wird wieder das Script Kompiliert , ausgeführt und diesmal gezeichnet . Je nach dem wie die Periode eingestellt ist, und welches Instrument und dessen Daten vorhanden sind sollte das Ergebnis so aussehen.
Aber Moment , vielleicht kommt es zum Fehler bei übersetzen ? Ich reproduziere das mal, und vergesse einfach mal den Semikolon „;“ am ende der Zeile wo das Flag zum PLOTNOW gesetzt wird.
Der Compiler spuckt im Terminal folgendes aus
001de compiling....... Error in 'line 9: syntax error < vars Prices = series(price()); // mit "vars" wird eine Variable mit dem Namen Prices angelegt, und bei jedem >.
Aha, ein Syntax Fehler soll sich in Zeile 9 befinden ? Hee? der Syntax Fehler wurde doch in Zeile 6 eingebaut. Folgendes ist passiert , das Semikolon dient dazu, eine Anweisung abzuschließen , und ohne diesen , wird eine Anweisung sozusagen ab der Zeile 6-9 definiert, die der Compiler nicht versteht. Solche Syntax Fehler sind einfach zu finden , in dem ich nach dem Anfang der Anweisung suche und Syntax analysiere . Schlimmer sind die Logischen Fehler.
Nun korrigiere ich den Fehler und setzte „;“ am ende der Anweisung in Zeile 6.
Jetzt baue ich ein Syntax Fehler in Zeile 6 indem ich falschen Flag rein schreibe set(NIXDA);
.
001de compiling....... Error in 'line 7: 'NIXDA' undeclared identifier < set(NIXDA); // PLOTNOW (Schalter) Flag wird gesetzt um sofort bei test ein Plot mit daten zu zeichnen >.
Hier kommt direkt der Hinweis dass , NIXDA undeklariert ist, und somit unbekannt für den Compiler.
Das wars erstmal, mit dem ersten Programm, gerade mit den 2 Anweisungen sollte ich mich etwas befassen und vielleicht das Manual dazu lesen und ausprobieren.
Da das Instrument sowie die Perioden Intervall nicht statisch festgelegt wurden , lohnt sich das Verhalten von Zorro Trader zu erforschen.
set(PLOTNOW);
https://zorro-project.com/manual/en/mode.htmvars Prices = series(price());
https://zorro-project.com/manual/en/series.htmfunction run() {}
https://zorro-project.com/manual/en/run.htm
Auch der CHART hat einige Buttons … https://zorro-project.com/manual/en/chart.htm
Da in Zukunft wahrscheinlich mehrere Versionen , Abwandlungen(forks) des Skripts entstehen, ist dies an der Zeit sich Gedanken um die Versionsverwaltung zu machen.
Ich schau mir Git an https://git-scm.com/book/de/v2/Erste-Schritte-Was-ist-Versionsverwaltung