You are not logged in.

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

448

Wednesday, January 25th 2012, 5:27pm

Von Tickquest (u.a. Neoticker) gibt es ja das kostenlose Monte Carlo Simulationstool "Equity Monaco". http://www.tickquest.com/?page_id=70
Dokumentation http://www.tickquest.com/downloads/equitymonaco.pdf

Mit Amibroker kann man dank des flexibel anwendbaren Custom Backtester Interfaces (in der AB Hilfe "Porfolio Backtester Interface") eine Textdatei exportieren lassen, die eine P/L Liste im Equity Monaco Format enthält. Eine Bsp.liste eines Simpelsystems habe ich mit hochgeladen.

Den (bereits von mir abgeänderten) CBI Code unten hatte ich in einem Forum entdeckt, aber der ursprüngliche enthielt die Einschränkung, dass P/L Werte ohne Nachkommastellen exportiert wurden. Equity Monaco kommt mit Werten, die am Ende eine Null enthalten, seltsamerweise nicht zurecht. Deshalb habe ich den Code so abgeändert, dass nun auch zwei Nachkommastellen exportiert werden können und Werte mit 0 am Ende eines Wertes nicht mehr existieren und Equity Monaco somit nicht mehr blöd herummeckert. Es spuckt nämlich im Negativfall (eine "0" am Ende selbst eines einzigen Falles in der Liste) eine unlogische Botschaft aus, die lautet "Data source positions list is empty". Komischerweise meckert es bei z.B. nur 0 nicht, nur bei 0.0 oder 0.00. Betrifft also nur Nullen an letzter Nachkommastelle eines Wertes.

Die exportierte Datei im Textformat enthält, wie erwähnt, nichts anderes als die P/L Werte, die der Backtester u.a. ausspuckt, bspw.

-735
54.6
-357.55
-237.51
-454.13
78.62
-536
-68.47
-395.86
-296.91
24.26
-247.54
-198.5
.
.
.

Im Amibrokerverzeichnis wird automatisch ein neuer Order mit dem Namen "Equity Monaco" erstellt. Dort hinein werden diese Textdatteien exportiert, die man dann mit Equity Monaco aufrufen kann (unter der Option "Data Source" > "Text File" > "..."). Um diesen CBI Code während des Backtestes mit auszuführen zu lassen, müßt ihr diesen einfach am Ende eures Systemcodes zusätzlich einfügen, oder ihr speichert diesen Code als z.B. EquityMonaco.afl im Custom-Ordner ab und fügt dann am Anfang oder Ende eures Systemcodes diese zwei Zeilen ein.

Source code

1
2
SetOption("UseCustomBacktestProc", True);
SetCustomBacktestProc("C:\\Programme\\AmiBroker\\Formulas\\Custom\\EquityMonaco.afl");


SetcustomBacktesteProc muss also den Pfad zu dem EquityMonaco.afl enthalten. Das kann jeder beliebige sein. Nur muss sich halt der Afl dort befinden. Klaro.

Das Custom Backtester Interface richtet sich ansonsten eher an fortgeschrittene User. Man kann damit so ziemlich alles anstellen, was das Herz begehrt. Eine ausführlichere Einführung mit Bsp. findet man u.a. im UKB von Amibroker.org
trash has attached the following image:
  • EquityMonacoExportList.png
trash has attached the following file:

3 registered users thanked already.

Users who thanked for this post:

cavobi (25.01.2012), Perfect Trader (25.01.2012), Vikke (25.01.2012)

Posts: 3,041

Thanks: 3678

  • Send private message

447

Tuesday, January 10th 2012, 7:01pm

@ trash

Genau das hatte ich ja im Post #436 auch vermutet.
Wer nichts weiß, muß alles glauben.

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

446

Tuesday, January 10th 2012, 5:13pm

@Trash

Kannst Du bitte den Link nochmal posten?


Findest du in der Files Section von Amibroker Yahoogroups. http://finance.groups.yahoo.com/group/amibroker/files/
Ist kein offizielles Plugin von AB. Wurde von einem Japaner erstellt.

2 registered users thanked already.

Users who thanked for this post:

Perfect Trader (10.01.2012), Vikke (10.01.2012)

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

445

Tuesday, January 10th 2012, 5:10pm

Hat jemand ähnliches schon gelöst?


Es gibt einen möglichen Hauptgrund der unterschiedlichen Candles in kleinen Timeframes wie M1 und M5. Keine Zeitsynchronität zwischen Serverzeit und PC-Zeit. Ich stelle dazu eventuell später (nicht unbedingt heute) ein kurzes Video ein. MT4 hat eine andere Serverzeit als meine PC zeit (damit meine ich nicht den Unterschied von bspw 6 Stunden zwischen CET und EST Zeitzone). AB zeichnet z.B.bei 16:00:00 PC-Zeit schon eine neue M1 Kerze (16:00:00 bis 16:00:59), während die selben Kurse im MT4 für eine paar Sekunden (1-2 sec.) noch für die M1 Kerze 15:59:00-15:59:59 bzw 6 Stunden zurück 09:59:00 bis 09:59:59 gezeichnet werden. MT4 ist also noch nicht bei der 16:00 M1 Kerze bzw der 10:00 M1 Ortszeitkerze aufgrund unterschiedlicher Zeit angekommen. MT4 lagt also meiner PC-Zeit minimal "hinterher", obwohl ich die PC Zeit mit der Internetzeit synchronisiert habe (auch bei Auswahl eines US Zeit Server). Die Kurse sind ansonsten schon gleichen. Da ich eh nicht auf Candleformationen achte, wäre mir das wurscht. Und wenn du Mt4 Kerzen von unterschiedlichen FX Brokern vergleichst, dann findest du im M1, M5, ... Intradaybereich eh Unterschiede in Sachen Candleaussehen vor, was dann an unterschiedlichen Kursen der Broker liegt.

Aber du kannst ja mal deine PC-zeit synchronisieren. Vielleicht beträgt bei dir der Unterschied zwischen PC-Zeit und Internetzeit zweistellige Sekunden oder noch mehr.

EDIT: http://shtools.de/programme/netclocksync/index.php

2 registered users thanked already.

Users who thanked for this post:

Perfect Trader (10.01.2012), Vikke (10.01.2012)

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

444

Tuesday, January 10th 2012, 3:23pm

Ideal wäre ja eine frei bewegliche Horizontale, die auf dem aktuellem Close mir die Size ausrechnet.

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

443

Tuesday, January 10th 2012, 3:19pm

Ja klar, war auch nur für den Euro gedacht, so auf die Schnelle^^ Hab hier erstmals nbissi mit Round und Prec gespielt:) Versuche das aber noch mit 2Bar Range und SwingHigh/Low zu kombinieren zwecks schnellerem Possizing.

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?

Source code

1
2
3
4
5
6
7
8
9
10
11
12
.
.
.
.
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);
.
.
.


Um Units zu erhalten, sollte es doch eher /Ticksize statt *100 sein, oder nicht?

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

442

Tuesday, January 10th 2012, 3:11pm


1 registered user thanked already.

Users who thanked for this post:

Cerberus24 (10.01.2012)

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

441

Tuesday, January 10th 2012, 2:46pm

@Trash

Kannst Du bitte den Link nochmal posten?

@Pips

Ja, sowas. Habe aber auch 5M als Baseinterval gehabt, da ich zur Zeit AB nur zum testen benutze.

pips

Nischenbewohner

Posts: 212

Location: Moraira-Teulada

Occupation: Privatier

Thanks: 175

  • Send private message

440

Tuesday, January 10th 2012, 2:28pm

Vikke, auf Deinem Vergleichs-Bild ist ja der eklatante Unterschied unter den grünen Kreisen zu finden, vor der letzten langen Aufwärts-Kerze fehlt auf einer Anzeige eine der zwei kleinen Kerzen. Meine erste Vermutung als Laie wäre daher Verbindungsabbruch.

1 registered user thanked already.

Users who thanked for this post:

Vikke (10.01.2012)

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

439

Tuesday, January 10th 2012, 2:26pm

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?

Source code

1
2
3
4
5
6
7
8
9
10
11
12
.
.
.
.
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);
.
.
.


Um Units zu erhalten, sollte es doch eher /Ticksize statt *100 sein, oder nicht?

1 registered user thanked already.

Users who thanked for this post:

Vikke (10.01.2012)

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

438

Tuesday, January 10th 2012, 2:23pm

Erledigt:)

Source code

1
2
3
4
5
6
7
H3   = SelectedValue(TimeFrameGetPrice("H", inDaily, 0, expandLast));
L3   = SelectedValue(TimeFrameGetPrice("L", inDaily, 0, expandLast));

Plot(H3,"PHigh",colorBlue, styleLine|styleNoRescale);
Plot(L3,"PHigh",colorBlue, styleLine|styleNoRescale);

Plot(C,"",colorDefault,GetPriceStyle());


Bei sowas den Plot des Preises vor dem Plot der Linien angeben.
Sprich so

Source code

1
2
3
4
5
6
H3   = SelectedValue(TimeFrameGetPrice("H", inDaily, 0, expandLast));
L3   = SelectedValue(TimeFrameGetPrice("L", inDaily, 0, expandLast));

Plot(C,"",colorDefault,GetPriceStyle());
Plot(H3,"PHigh",colorBlue, styleLine|styleNoRescale);
Plot(L3,"PHigh",colorBlue, styleLine|styleNoRescale);

2 registered users thanked already.

Users who thanked for this post:

Perfect Trader (10.01.2012), Vikke (10.01.2012)

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

437

Tuesday, January 10th 2012, 2:19pm

Hat jemand ähnliches schon gelöst?


DDE ist grundsätzlich keine optimalste Verbindung. Es gibt immer minimale zeitliche Lags. Somit kann kurz vor Close, wenn da eine neuer Preis eintrifft, passieren, dass der Close der Mt4 Candle der Open der AB Candle ist aufgrund des minimalen zeitlichen Lags im Millisekundenbereich. Solche Unterschiede wie bei dir entstehen natürlich auch deswegen, wenn z.B. ein Verbindungsabbruch vom Server vorliegt. Dann ist es logischerweise klar, dass dann, da DDE keinen automatischen Backfill hat, bei Neuverbindung Historie fehlt und in der Folge Candles anders dargestellt werden. Was du probieren kannst, ist, das MT4 Plugin für Amibroker statt des DDE Plugins zu verwenden. Das lädt die Historie ständig automatisch nach und sowas sollte auch bei Serverabbruch nicht passieren. Ansonsten, wenn AB die selbe Historie bekommt, dann werden auch die selben Candles dargestellt.

2 registered users thanked already.

Users who thanked for this post:

Perfect Trader (10.01.2012), Vikke (10.01.2012)

Posts: 3,041

Thanks: 3678

  • Send private message

436

Tuesday, January 10th 2012, 10:17am

Da werden möglicherweise die genauen Intervall-Grenzen für den gewählten Time-Frame auf der importierenden Seite anders gesetzt worden sein. Das ist auch ein Grund, warum die Chart-Technik bei zu enger Auslegung ganz allgemein zweifelhaft ist, weil, die genauen Intervall-Grenzen ja eigentlich willkürlich sind.

Wenn das die Ursache sein sollte, was durch Gegenüberstellung der beiden Daten-Bestände ja gesehen werden kann, sollte als zweites nachgesehen werden, ob alle Daten in beiden Beständen, aber regelmäßig Zeit-versetzt vorhanden sind. Dann können sie um ein festes Intervall verschoben werden. Wenn die Zeit schwankt, wird die Uhrzeit nicht mit transferiert, sondern auf der Import-Seite eingesetzt und wenn zu wenig Daten übernommen werden, kommt die Schnittstelle als Engpaß nicht nach.
Wer nichts weiß, muß alles glauben.

2 registered users thanked already.

Users who thanked for this post:

pips (10.01.2012), Vikke (10.01.2012)

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

435

Tuesday, January 10th 2012, 10:09am

Hier links Oanda rechts AB alles 5M.
Vikke has attached the following image:
  • 2012-01-10_10-10.png

1 registered user thanked already.

Users who thanked for this post:

Perfect Trader (10.01.2012)

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

434

Tuesday, January 10th 2012, 10:06am

Also die Verschiebungen über DDE sind teils massiv, wie unten im Bild zu sehen. Das ist nicht das erste mal. Habe synchronisiert und nochmals geladen, jedoch werden 5M anders angezeigt. Hat jemand ähnliches schon gelöst?
Vikke has attached the following image:
  • 2012-01-10_10-03.png

1 registered user thanked already.

Users who thanked for this post:

Perfect Trader (10.01.2012)

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

433

Monday, January 9th 2012, 10:21pm

Erledigt:)

Source code

1
2
3
4
5
6
7
H3   = SelectedValue(TimeFrameGetPrice("H", inDaily, 0, expandLast));
L3   = SelectedValue(TimeFrameGetPrice("L", inDaily, 0, expandLast));

Plot(H3,"PHigh",colorBlue, styleLine|styleNoRescale);
Plot(L3,"PHigh",colorBlue, styleLine|styleNoRescale);

Plot(C,"",colorDefault,GetPriceStyle());

2 registered users thanked already.

Users who thanked for this post:

Perfect Trader (10.01.2012), trash (10.01.2012)

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

432

Monday, January 9th 2012, 10:11pm

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:

Source code

1
2
Plot(TimeFrameExpand(HI2,inDaily),"PHigh",colorBlue|styleOwnScale);
Plot(TimeFrameExpand(LW2,inDaily),"PHigh",colorBlue);
Vikke has attached the following image:
  • 2012-01-09_22-12.png

Vikke

Professional

Posts: 1,007

Thanks: 361

  • Send private message

431

Monday, January 9th 2012, 9:41pm

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?

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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);
Vikke has attached the following image:
  • 2012-01-09_21-41.png

2 registered users thanked already.

Users who thanked for this post:

cavobi (29.01.2012), trash (10.01.2012)

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

430

Friday, December 23rd 2011, 12:31am

ATR(1) geht natürlich auch und machst den Code gleichzeitig um ein paar Prozentchen schneller.


1 registered user thanked already.

Users who thanked for this post:

Vikke (25.12.2011)

trash

Resteverzehrer

Posts: 982

Thanks: 1275

  • Send private message

429

Thursday, December 22nd 2011, 10:21pm

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 http://www.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.

2 registered users thanked already.

Users who thanked for this post:

Perfect Trader (22.12.2011), Vikke (22.12.2011)