Amibroker AFL
-
-
-
-
Erledigt:)
-
Ist mir fast schon peinlich...^^ Habe versucht mit styleownscale noch die Prev. Highs/Lows darzustellen, leider befindet sich PHigh soweit oben, dass der Kurs gestaucht wird. Wie kann man die 1,28119 soweit nach oben verschwinden lassen, dass die Preisdarstellung nicht beeinflusst wird, sondern die 1,28119 nur oben rechts als Zahl angezeigt wird?
Zusätzlich eingefügter Code:
-
Hab mal einen kleinen Pipkalkulator für den Euro mit ATR20 und Tagesranges programmiert. Weiß jemand wie man den Rand gerade macht oder wie man die Sache optisch rechts mehr einrahmen kann?
Quellcode
- Balance = Param("Account Balance",12500,1,100000,1);
- Maxrisk = Param("Max Risk %",2,0.25,50,0.25);
- SL10 = 10;
- SL15 = 15;
- SL20 = 20;
- SL25 = 25;
- SL30 = 30;
- Pipwert = 10/C;
- Maxriskeuro = Balance*Maxrisk/100;
- Units10 = Prec(((Maxriskeuro/Pipwert/SL10)*100),2);
- Units15 = Prec(((Maxriskeuro/Pipwert/SL15)*100),2);
- Units20 = Prec(((Maxriskeuro/Pipwert/SL20)*100),2);
- Units25 = Prec(((Maxriskeuro/Pipwert/SL25)*100),2);
- Units30 = Prec(((Maxriskeuro/Pipwert/SL30)*100),2);
- GfxSetBkColor(colorGrey40);
- GfxSetTextColor(colorYellow);
- GfxTextOut("SL 10 : "+Units10,5,80);
- GfxTextOut("SL 15 : "+Units15,5,100);
- GfxTextOut("SL 20 : "+Units20,5,120);
- GfxTextOut("SL 25 : "+Units25,5,140);
- GfxTextOut("SL 30 : "+Units30,5,160);
- TimeFrameSet(inDaily);
- ATR20 = ATR(20);
- TimeFrameRestore();
- HI2 = TimeFrameGetPrice( "H", inDaily, -1 );
- LW2 = TimeFrameGetPrice( "L", inDaily, -1 );
- tdyh = TimeFrameGetPrice("H", inDaily, 0);
- tdyl = TimeFrameGetPrice("L", inDaily, 0);
- TickSize = IIf(StrRight(Name(),3) =="JPY",0.01,0.0001);
- ATR20 = ATR20/TickSize;
- ATR20 = Prec(ATR20,0);
- tdy = (tdyh-tdyl)/TickSize;
- tdy2 = Prec(tdy,0);
- Calc = (HI2-LW2)/TickSize;
- Calc2 = Prec(Calc,0);
- GfxSetBkColor(colorBlue);
- GfxSetTextColor(colorWhite);
- GfxTextOut("ATR : "+TimeFrameExpand(ATR20,inDaily),5,20);
- GfxTextOut("PRE : "+Calc2,5,40);
- GfxTextOut("TDY : " +tdy2,5,60);
-
-
Timeframeset ist schon mal richtig, Timeframeexpand nicht vergessen. Loop kannst du machen, brauchst aber nur High und Low im Loop. Und du musst es bisschen anders machen. Nimm ValueWhen(EXPRESSION, ARRAY, n = 1). Da du mehrere gleiche Wochentage willst, ist n = i. Barcount brauchst du nicht. Stattdessen for( i = 2; i <(per+2); i++) per kannst du per Param schreiben, also per = Param("How many same Weekdays?", 4, 1, 10, 1);
Insgesamt hat der AFL so um die 60/70 Zeilen. Also hast noch ein Stück vor dir.
Video youtube.com/watch?v=qSqt-djjWyo&feature=youtu.be
Geh auf 480p. Beim Umwandlen haben die wohl an der Qualitätsschreibe gedreht. Im Vollbild ist es wieder zu pixelig. -
-
-
-
-
Also, roundlotsize kann in dem Fall auf 1 gestellt werden, sonst können z.B. statt 98000 units z.B. 98000.2 Units angezeigt werden. In dem Bsp unten war es zufälligerweise so, dass kein Komma entstand bei der Berechnung der Posigröße, deshalb fiel mir das nicht auf. Ich hatte diese roundlotsize = 0 von einem anderen System übernommen, wo ich auf 0 stellen mußte, weil dort statt 100000 units 1 lot angezeigt wurde. Ich muss mal kucken, wenn ich Zeit habe, wieso das dort anhand der Einstellungen so war.
-
Weil du nicht auf das beachtet hast, was ich geschrieben habe. Für Paare mit USD als "quote currency" und Verwendung von Units sowie Bestimmung über fixed fractional position sizing habe ich doch shon ein Bsp. bereits zum zweiten Mal im Thread eingefügt. Und Roundlotsize muss schon mal auf 0 gestellt werden für Units! Jetzt das dritte Mal erwähnt. Für Paare mit Jpy als "quote currency" musst du es etwas anders machen. Und 915 ist ja schon mal verkehrt, da die Yenkurse aktuell oder über den Verlauf des Testzeitraums ganz andere sind. Außerdem ist das ja eine Konstante.
Desweiteren stehst du ja noch vor dem Problem der Exits (wie IS, Target, Breakeven, Trail). Da würde ich Loop statt Applystop verwenden. Spread, Slippage, Kommission müßtest du noch einbeziehen. Slippage habe ich z.B. über den Custom Backtester Interface einbezogen. Custom Metrics als zusätzliche Spalten oder als zusätzliche Werte im Report werden auch über das CBI erstellt (kein Muss). -
-
Habe mir die 5.40 wieder aufgespielt, jetzt geht es.
Ich versuche gerade Fixed Fraction(2% von Acc. Balance) mit in die Trades berechnen zu lassen. Irgenwie hapert es noch, da ich die jeweils aktuelle Acc. Size nicht einbeziehen kann, welche ja dann wieder herangenommen werden muss um die neue Positionsgröße zu ermitteln. Auch gibt es noch Probleme mit den Contracts, da ich ja Units haben will. Kann mir jemand meinen Fehler aufzeigen? -
Vikke schrieb:
Danke Trash, leider komme ich nicht aus dem Futures Mode raus, irgendwie muss da noch eine globale Funktion an sein.
Der Spaltennamenwechsel wird höchstwahrscheinlich, da die Version 5.5 noch keine Final sondern immernoch im Entwicklungstatus ist, noch nicht im AA dort implementiert sein. In Version 5.40 klappt der Wechsel zwischen Share und Contracts, wenn man Futures Mode an-/ausschaltet. Da bei dir im Code, wie du meinst, keine Zeile SetOption vorhanden ist und in deinen AA Settings Future Mode angeklickt ist, wäre letzteres somit aktiv. Da das AA komplett überarbeitet wurde, mit dem alten AA nichts mehr zu tun hat und in der Beta noch nicht alles fertig ist, würde ich die letzte Final verwenden oder auf die nächste Final warten, die, denke ich, in ein bis zwei Monaten draußen sein wird. Ich tippe auf Weihnachten bis Neujahr. -
-
-
Vikke schrieb:
Kann mir villeicht jemand erklären wieso ich beim letzten Trade so eine übergroße Position habe?
Nein, kann ich nicht, da ich nicht weiß, wie dein Code u.S. aussieht. Aber auf jeden Fall wird nicht Futures Mode verwendet, obwohl es in den Settings angeklickt ist. Dies muss bei Forex und Futures angeklickt bzw gleich 1 oder True sein. Bedeutet also, in deinem Code muss eine Zeile vorhanden sein, die so aussieht
SetOption("FuturesMode" , False );
Diese müßtest du umändern in
SetOption("FuturesMode" , True );
oder Doppelslash davor
denn alle Backtestingsettings (erstellt über SetOption), die im Code vorhanden sind, überschreiben die Einstellungen, die in den Settings des AA eingestellt sind! "Logisch", meint Mr. Spock.Wenn es angeklickt bzw aktiv wäre, würde in der Positionsgrößenspalte nicht Shares sondern Contracts stehen. Ist aber nicht der Fall in deinem Bild. Des Weiteren, wenn du Units verwendest, musst du Roundlotsize auf 0 setzen.
Für Units Broker verwende ich in AFLs z.B. diese Zeilen
Auf jeden Fall kann ich dir nur den Tipp geben pauken, pauken, pauken, wenn du dich damit befassen und tiefer in die Materie steigen willst (z.B. auch sich mit dem grenzenlosen Custom Backtester zu befassen). Ist ein sehr umfangreiches Thema! Und falsch angewendet/falsch programmiert/falsch eingestellt kommen die lustigsten Sachen raus, nur halt nichts Gescheites. Und wie immer dran denken, die Fehler zuerst bei sich zu suchen, denn das Ding funzt einwandfrei!
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
-
Reddit 0
-
Benutzer online 1
1 Besucher