Mein Erster C-Lite SCRIPT im Zorro Trader (001de)

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 wir wollen es doch langsam angehen, deswegen löschen wir 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 nen das Skript 001detut.c
Die .c Erweiterung signalisiert dem Zorro Compiler das es in Programmier Sprache C (Lite) geschriebener Script ist.

Nach dem abspeichern ist das 001de Script in dem Script Menu zu 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 Kompilation vom Script , d.h. in eine Maschinen Sprache übersetzt , und es wurden KEINE Fehler im Script entdeckt.
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 Script definiert wird.
Zugegeben , in dieser Form ist das Skript langweilig,deswegen geben wir als nächstes die Daten aus .

Dazu müssen wir 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  
	
	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 gezechten . Je nach dem wie die Periode eingestellt ist, und welches Instrument und dessen Daten vorhanden sind sollte das Ergebnis so aussehn.

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 man nach dem Anfang der Anweisung sucht und Syntax analisiert . 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 umbenannt für den Compiler.


Das wars erstmal, mit dem ersten Programm, gerade mit den 2 Anweisungen sollte man sich etwas befassen und vielleicht das Manual dazu lesen und ausprobieren.
Da das Instrument sowie die Perioden Intervall nicht Statisch festgelegt wurde , lohnt sich das Verhalten von Zorro Trader zu erforschen.

set(PLOTNOW); https://zorro-project.com/manual/en/mode.htm
vars Prices = series(price()); https://zorro-project.com/manual/en/series.htm
function run() {} https://zorro-project.com/manual/en/run.htm

Auch das CHART hat einige Buttons … https://zorro-project.com/manual/en/chart.htm

Da in Zukunft wahrscheinlich mehrere Versionen , Abwandlungen(forks) des Skripts enstehen, ist dies an der Zeit sich Gedanken um die Versionsverwaltung zu machen.
Ich empfehle Git https://git-scm.com/book/de/v2/Erste-Schritte-Was-ist-Versionsverwaltung

Print Friendly, PDF & Email

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.