Jump to content


Photo
* * * * * 1 votes

Programmierungsfragen- Amibroker


Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.

  • Please log in to reply
52 replies to this topic

#41 oldschuren

oldschuren

    Floor Broker

  • *_skilled
  • 1,457 posts
  • 7935 thanks
  • Wohnsitz:Brandenburg

Posted 29 July 2010 - 10:39 AM

kommt mir irgendwie bekannt vor... :undecided:
  • 0
ich raube, also bin ich....

Thanked by 1 Member:
ibelieve

#42 ibelieve

ibelieve

    Floor Broker

  • Silent Reader
  • PipPipPipPipPipPip
  • 1,047 posts
  • 3170 thanks

Posted 29 July 2010 - 10:45 AM

kommt mir irgendwie bekannt vor...   :undecided:


Jau,

wollte ich noch dabei schreiben das er von Dir ist,   :grin:
aber am Ende ähneln Sie alle.
War nur z faul zum suche das ich eine finde wo man Deine Handschrift nicht so sieht.

Thanked by 1 Member:
oldschuren

#43 Markus

Markus

    penny-pincher

  • Rookie
  • Pip
  • 6 posts
  • 4 thanks

Posted 29 July 2010 - 06:51 PM

@ibelieve
thanks, mal schauen ob ich das hinkriege.
  • 0

#44 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,477 posts
  • 9697 thanks
  • Wohnsitz:BW

Posted 08 October 2010 - 05:45 AM

Vorab : ich bin erst wenige Wochen auf der AB-Plattform tätig und ich befürchte, dass nun eine ziemlich "olle" Frage kommt . Aber ich habe damit nun Stunden verbracht ... für mich ist es ein Problem . -,-

Kaufen ,Buy = , wenn Buyok ist und TimeOk ist
Verkaufen, Sell = , den Long beenden , wenn Sellok ist und/oder (!) Timenok ist (ich das für Trades zulässige Zeitfenster verlassen habe)

Es kann sein, dass ich zum Ende meines Zeitfensters hin, noch im Markt bin . Dann möchte ich schliessen .
Wenn mein Long aber geschlossen ist, dann möchte ich keinen Sell mehr ausführen
- Ich weiss nicht, wie ich abfrage, ob ich im Markt bin . Daher setze ich mir ein Flag zusammen mit der "Buy" das ich bei Sell abfragen könnte
Das klappt aber nicht, ich bekomme bei der IF Abfrage immer wieder Formatprobleme . Daher habe ich nun eine einfachere Variante genutzt ((und IF "sellok=w OR timenok=w" wenn "Longflag=w" umgangen .

Dazu nun der SRC :

////  die klassischen MA´s kreuzen sich auch bei mir *zwinker*//Buyok=    Cross(LFMA1,LSMA1);Sellok=   Cross(LSMA1,LFMA1);//// Zeitfenster wird bestimmt und wenn gehandelt werden darf, dann ist Timeok sonst eben Timenok//// Entry LONGBuy = Timeok AND Buyok;Longflag = Timeok AND Buyok;// Exit LongSell = Timenok AND  Longflag; // Timeout und noch ein Trade im MarktSell = Sellok AND  Longflag;   // normales Verkaufssignal des LongtradesUmkehr = Sellok AND  Longflag;Longflag=IIf(Umkehr,0,1);//Short= Shortok AND timeok;//Cover= Coverok;

Vielen Dank im voraus

KB

Edited by Kleinerbroker, 08 October 2010 - 05:49 AM.

  • 0
Do not trade alone

Thanked by 2 Members:
Vola , whipsaw

#45 ibelieve

ibelieve

    Floor Broker

  • Silent Reader
  • PipPipPipPipPipPip
  • 1,047 posts
  • 3170 thanks

Posted 08 October 2010 - 08:01 AM

Sell sollte nur gehen wenn Du Long bist,
Cover nur wenn Du Short bist.
Sollte keiner Abfrage brauchen.


Deshalb wohl die 4 Orders,
Buy und Sell, Short und Cover.

Thanked by 2 Members:
Kleinerbroker , Vola

#46 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,477 posts
  • 9697 thanks
  • Wohnsitz:BW

Posted 08 October 2010 - 08:37 AM

Sell sollte nur gehen wenn Du Long bist,
Cover nur wenn Du Short bist.
Sollte keiner Abfrage brauchen.


Deshalb wohl die 4 Orders,
Buy und Sell, Short und Cover.


Hallo Ibelieve :-) schon viel von Dir gelesen :-)

und Dank für Deinen Post : Short und cover hätte ich löschen sollen . "//" halten diese im Moment deaktiviert . Ich habe soviel "Salat" gehabt, dass ich durch // erstmal ausgeschlossen habe, was ich im in der jetztigen Phase nicht brauche . Sorry für die Konfusion die ich nun damit verursacht habe .

Ich werde meine Problembeschreibung verbessern und dann nochmals posten .

KB
  • 0
Do not trade alone

Thanked by 2 Members:
whipsaw , Vola

#47 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,477 posts
  • 9697 thanks
  • Wohnsitz:BW

Posted 09 October 2010 - 09:12 PM

Ich werde meine Problembeschreibung verbessern und dann .... .

...wenn das man so leicht gewesen wäre ....

Nach einem Samstag im AB-Editor, AB-backtest usw usw bin ich einiges weiter als gestern aber neue Rätsel haben sich aufgetan .
Es erinnert mich alles sehr an die Zeit als ich in Assembler auf dem 6502 mit dem DATA Becker programmiert habe . Also schon ein wenig her .
Aber dieser ganze Einsatz der Booleschen Algebra, diese ständige "Wahr/nicht Wahr" .. erfordert beim KB Übung .

Meine einfachste Formulierung zu den vielfältigen Problemen die ich so habe , jedes einzelne klein aber die Menge macht es dann : Wie debuggt Ihr denn Eure AB-Source-Codes ?
Ich habe nun begonnen , mir Marken anzeigen zu lassen , Plotshapes im Equitiy und Tradebereiche im Portfolio-Diagramm zu erkennen . Habe Ihr weitere Tricks ? Wie gebt Ihr Euch
Zahlenwerte aus ? Ein Indi-Fenster und Kennlinie ? Was hat sich bewährt ?

KB

Attached Files


  • 0
Do not trade alone

Thanked by 3 Members:
joshsmi , Vola , whipsaw

#48 ibelieve

ibelieve

    Floor Broker

  • Silent Reader
  • PipPipPipPipPipPip
  • 1,047 posts
  • 3170 thanks

Posted 10 October 2010 - 05:29 AM

Wie debuggt Ihr denn Eure AB-Source-Codes ?





Da kann ich leider nicht helfen da meine Programme nie allzu groß waren und recht einfach gehalten.

Thanked by 2 Members:
Vola , Kleinerbroker

#49 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,477 posts
  • 9697 thanks
  • Wohnsitz:BW

Posted 10 October 2010 - 06:49 AM

@Ibelieve , vielen Dank dennoch für die gute Absicht . :loungelizard: Dann habe ich ja einen kleine "Tm-Next-Bedrfs-Lücke" entdeckt ?
Auch heute nacht, so wie Ibelieve, hat mir aus USA der User Dennis folgende Tipps gegeben . Ich poste das mal hier, kann es gerne über-
setzen , wenn Bedarf bestehen sollte und füge in den folgenden Post´s meine Erfahrungen hinzu :

Dennis schreibt mir also :

KB

The best way for me to debug, is to write in a very modular way. I write code so that I am just writing a few lines at a time, then I run just that much an see if it works. Then I add one more thing to it. That way, in most cases when I get an error, I know where the problem is within a few lines. This is one of the great things about an interpreter with an integrated development environment where you can edit a few lines and apply it on the fly in seconds.

I also use:
Title = "" ;
Title += "some variable = " + staticVarGet( "someVariable" ) + "\n" ;
Title += …etc;

I also use:
_Trace( "Got Here" + variable );

I also use:
say( "Got Here" + variable );

I also put in plot commands: Plot( someDebugArray,…

There are many variations of the above that help make up for not having a single step debug capability. Hmmm… perhaps now with multi-threaded AFL, a formula single step debugger might be more practical sometime in the future.

If the problem is not easy to see, then I just go over every line of AFL carefully by hand, with paper and pencil writing what I think each variable should be at each step. On rare occasions, my eyes fail me, and I ask this list to help me out.

BR,
Dennis


Ok,ich selber nutze noch zusätzlich :

//Signale zeichnenPlotShapes( IIf( (Sell), shapeDigit1 + shapePositionAbove, shapeNone ), colorRed ); PlotShapes( IIf( (Timeout), shapeDigit2 + shapePositionAbove, shapeNone ), colorYellow );//PlotShapes( IIf( (Sellok), shapeDigit3 + shapePositionAbove, shapeNone ), colorGreen ); //PlotShapes( IIf( (Sell2), shapeDigit4 + shapePositionAbove, shapeNone ), colorBlue ); 
Dadurch kann ich mir Variablen als Wahr/Falsch anzeigen lassen . Variablen in den Beispielen oben
sind "Sell"(der Befehl) , Timeout (eine Variable die anzeigt ob ich innerhalb der von mir vorgegebenen
Handelszeit bin oder nicht , Sellok und Sell2 (Vorbereitende Sellsignale für Sell da ich mit IF-Abfragen
noch nicht klar komme und mir daher work-arounds bastele). Die letzten beiden Plotsignale brauche ich
im Moment nicht, sind daher durch "//" deaktiviert worden .

KB
  • 0
Do not trade alone

Thanked by 3 Members:
joshsmi , Rumpel , Vola

#50 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,477 posts
  • 9697 thanks
  • Wohnsitz:BW

Posted 10 October 2010 - 05:20 PM

Zeitfilter : Ich möchte zu bestimmten Zeiten handeln und andere Zeiten für den Handel ausschließen . Und ich möchte diese Zeiten optimieren können .

- Inzwischen habe ich herausgefunden, dass meine Candle´s im 5-MIN-TF um 00:04 und 00:09 beginnen . Ich Naivling habe Tage und Stunden
damit verbracht dies herauszufinden, nur weil ich vorausgesetzt hatte, dass die Candle um 00:00 und 00:05 beginnen würden . :tongue:
(Übrigens DAS PERFEKT BEISPIEL, warum auf mich dieses Smiley so gut zutrifft.)

- also konnte mein Exit um 12:00 nicht funktionieren ... der um 11:59 oder um 12:04 wäre ausgeführt worden .

Fragen an den Experten : 1.) Ist es Absicht,dass die Candle von "o=1" heraufzählen ? "0,1,2,3,4" ist ja dasselbe wie "1,2,3,4,5" 2.) (wie)kann ich das umstellen ?

- nun möchte ich die optimalen Zeitfenster suchen .

Frage an den Experten : Mache ich das nun am besten im 5ér Schritten beginnend ab 04/09 ?

Nächste und letzte Frage : Ist es der beste Weg mit TimeNum() zu arbeiten um Zeitfilter zu platzieren ? Oder ist es sinnvoller , mit BAR´s zu arbeiten mit dem Vorteil, dass
dann Timeframeänderungen ja automatisch mit durchgeführt werden würden ? Wenn das so ist, gibt es irgendwelche Links zu entsprechenden Beispielen ? => wie
adressiere ich einzelne Bar´s im Chart ?


Hier mein aktueller SRC . Das Prg geht um 09:59 einfach nur Long in den Markt und um 11:59 wieder raus . Der SRC ist für die Optimierung vorgeplant , Modular . Der Plugin für das
Hauptprogramm würde mit dem Buyok und Sellok erfolgen , dass ich via AND zu "Buy" und "Sell" anflanschen werde. Daher nutzt dieser SRC auch mehr Variablen , als für die Standalone
nötig wären :


///////////////////////////////////////////////////////////////////////////////////////////////////////////   Time-Filter //////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////timestart=   Optimize("timestart",010000,010000,230000,10000);//window=      Optimize("windowlength",180000,010000,200000,10000); ////Timestart=   095900 ;Window=      020000 ;Timestop=    Timestart+Window;TimeOK=      TimeNum()>Timestart AND TimeNum()<Timestop;TimeNOK=     TimeNum()<=Timestart OR TimeNum()>=Timestop;Timeout =    TimeNum() == Timestop;Timebeginn = TimeNum() == Timestart;//// Entry LONG//Buy = Timebeginn ; // ENTRY ?//											// Exit Long//Sell = Timeout; // EXIT ?				//Signale zeichnenPlotShapes( IIf( (Buy), shapeDigit1 + shapePositionAbove, shapeNone ), colorGreen ); PlotShapes( IIf( (Sell), shapeDigit2 + shapePositionAbove, shapeNone ), colorRed );PlotShapes( IIf( (Timebeginn), shapeDigit3 + shapePositionAbove, shapeNone ), colorYellow); PlotShapes( IIf( (Timeout), shapeDigit4 + shapePositionAbove, shapeNone ), colorBlue );

Die PlotShapes am Ende dienen dem Debugg.

KB
  • 0
Do not trade alone

Thanked by 1 Member:
Vola

#51 joshsmi

joshsmi

    Floor Broker

  • Addict
  • PipPipPipPipPipPip
  • 346 posts
  • 1647 thanks

Posted 10 October 2010 - 07:53 PM

Zeitfilter : Ich möchte zu bestimmten Zeiten handeln und andere Zeiten für den Handel ausschließen . Und ich möchte diese Zeiten optimieren können .

- Inzwischen habe ich herausgefunden, dass meine Candle´s im 5-MIN-TF um 00:04 und 00:09 beginnen . Ich Naivling habe Tage und Stunden
damit verbracht dies herauszufinden, nur weil ich vorausgesetzt hatte, dass die Candle um 00:00 und 00:05 beginnen würden . :tongue:
(Übrigens DAS PERFEKT BEISPIEL, warum auf mich dieses Smiley so gut zutrifft.)

- also konnte mein Exit um 12:00 nicht funktionieren ... der um 11:59 oder um 12:04 wäre ausgeführt worden .

Fragen an den Experten : 1.) Ist es Absicht,dass die Candle von "o=1" heraufzählen ? "0,1,2,3,4" ist ja dasselbe wie "1,2,3,4,5" 2.) (wie)kann ich das umstellen ?


Schaue mal in den Data Base settings und stelle die Miunten der Trading Hours Abteilung auf Start XX:00, filtering auf 24h, dann sollte es auch im Chart so sein. Bei mir beginnen M5 Candles bei XX:00 also zB die Candle von 00:00 - 00:05 ist bei mir die 00:00 Candle. In den Preferences habe ich unter "Intraday" Start Time of Interval eingestellt.

Für den Rest fehlt mir die sonntägliche Konzentration. :)
  • 0

Thanked by 2 Members:
Kleinerbroker , Vola

#52 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,477 posts
  • 9697 thanks
  • Wohnsitz:BW

Posted 10 October 2010 - 08:45 PM

In den Preferences habe ich unter "Intraday" Start Time of Interval eingestellt.


DAS war es, genauer gesagt , ich mußte von "time of LAST tick inside bar " umstellen auf "START time of intervall" . Ehrlich gesagt, ich weiss nicht welche Hintergründe das
nun haben soll, aber es hat die gewünschte Wirkung . Benutzerfreundlich ist das nicht , finde ich . Egal . Was ist schon "leicht" im Leben ?

Vielen Dank !

KB
  • 0
Do not trade alone

Thanked by 1 Member:
Vola

#53 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,477 posts
  • 9697 thanks
  • Wohnsitz:BW

Posted 16 October 2010 - 09:37 AM

Noch eine Lektion gelernt : Vor dem Backtest empfiehlt es sich, die Historieen zu prüfen . Folgendes gilt es zu beachten bzw sollte man wissen :

AB gibt jeder Kerze einen Namen .... nämlich die Uhrzeit des Open . Wenn man nun , eine bestimmte Aktion zu vorgegebener Zeit ausführen will (Schließen eines Trades um XX:XX Uhr)und diese Kerze ist
wegen einer Kurslücke nicht da, dann gibts auch keine Aktion .... ABER AUCH KEINE WARNUNG !

Also habe ich folgendes gelernt und teile meine Erkenntnisse gerne mit dem Leser dieses Post :

1.) Prüfe die Qualität Deiner Historie .... zum Beispiel durch einen simplen Barcount . Beachte beim Intraday,dass das 5 Min TF Ok sein kann, dass 1 Min oder 15 Min hingegen nicht . Schreibe Dir einen Miniindi, mit dem Du Deine Daten überprüfst, bevor Du damit arbeitest .
2.) Vor der Optimierung und trotz aller Prüfungen (s.1.) ) unbedingt Plausibilitätsprüfungen durchführen . So habe ich den Fehler in meiner Historie überhaupt erst bemerkt ...denn es waren 450 Zeilen BT .
Dabei prüfe immer einzelne Trades : Die 3 größten Gewinnertrades, die 3 schlimmsten Verlieren . Die drei längsten Trades ... wenn Du in einem Zeitfenster tradest, dass max 24 Bars Tradedauer haben kann, dann sollte man bei 134 Bar´s in 2 von 450 Trades nachdenklich werden :keyboard: .

KB
  • 0
Do not trade alone

Thanked by 4 Members:
oldschuren , whipsaw , Rumpel , Vola

Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users