oldschuren Posted November 24, 2009 Report Share Posted November 24, 2009 Hab was hilfreiches gefuden. Hier ein Script, dass beim umwandeln von Date/Time in BarIndex und umgekehrt genutzt werden kann. Der Autor gibt auch ein zwei Bsp. z.B. wenn man von einem Bar in der Vergangenheit den Close-Price benötigt.... Date_To_Num(), Time_To_Num() - Funktionhttp://www.amibroker.com/library/detail.ph...;hilite=TIMENUM Quote Link to comment Share on other sites More sharing options...
duncan Posted November 24, 2009 Report Share Posted November 24, 2009 z.B. wenn man von einem Bar in der Vergangenheit den Close-Price benötigt.... Hi Oldschuren,danke für den Hinweis, aber ich kann Dir momentan nicht folgen, was der Vorteil gegen über Ref(C,-x) ist? Danke für einen Hinweis/Beispiel, in welchen Fall, welche Funktion besser ist, Gruß Duncan Quote Link to comment Share on other sites More sharing options...
oldschuren Posted November 24, 2009 Report Share Posted November 24, 2009 Hi Duncan,ganz einfach, wie willst du im M15 Chart auslesen, was Vortags um wegen meiner 20:00 Close der kerze war? du müßtest erst auslesen, welche Urzeit die aktuelle Kerze hat dann die Zeitspanne bis gestern 20:00 uhr berechnen und diese dann durch 15 teilen. Dann hast erst den Barcount um mit Ref zurück zu gehen. Dann kommt aber noch die Unschärfe durch das runden dazu ect....GrußOS P.S.Hab aber bis jetzt noch keine Zeit und Muße gefunden damit rumzuspielen... Quote Link to comment Share on other sites More sharing options...
duncan Posted November 24, 2009 Report Share Posted November 24, 2009 OK, sorry bis eben dachte ich nur im EOD- Bereich mein Fehler ... sehr hilfreich der Code Quote Link to comment Share on other sites More sharing options...
Markus Posted July 2, 2010 Report Share Posted July 2, 2010 Hallo! Kann mir jemand die Formel für das buy-signal sagen, wenn der AroonUp den AroonDown von unten her kreuzt? die formel für den Aroon Indicator hab ich: PL = Param("PL",14,4,45,1);ALen = PL; AroonUp = 100 * (ALen - (HHVBars(H, ALen + 1))) / Alen;AroonDn = 100 * (ALen - (LLVBars(L, ALen + 1))) / ALen; Plot(AroonUp, "Aroon Up", colorBrightGreen, styleThick);Plot(AroonDn, "Aroon Dn", colorRed, styleThick); ich hab trading ideen, kann aber nicht programmieren....frustrierend! vielen Dank und GrussMarkus Quote Link to comment Share on other sites More sharing options...
ibelieve Posted July 2, 2010 Report Share Posted July 2, 2010 Die "könner" sind leider nicht mehr da wenn ich nicht irre Werde mir das aber mal morgen früh anschauen, einfache Sachen sollten eigentlich auch bei mir gehen. Eigentlich eine einfache CROSS abfrage, das eine mal nimmst Du den einen Wert nach vorne, das andere mal den anderen. AmiBroker kennt kein schneiden von oben nach unten. Buy = Cross (AroonUp, AroonDown); Quote Link to comment Share on other sites More sharing options...
oldschuren Posted July 2, 2010 Report Share Posted July 2, 2010 Bin auch kein Könner, seit September letzten Jahres hab ich nix mehr gemacht. würde mit Rev() rumspieln. Vielleicht funktioniert sowas: ( Rev(AroonUp, -1) Quote Link to comment Share on other sites More sharing options...
ibelieve Posted July 2, 2010 Report Share Posted July 2, 2010 Bin auch kein Könner, seit September letzten Jahres hab ich nix mehr gemacht. würde mit Rev() rumspieln. Vielleicht funktioniert sowas: ( Rev(AroonUp, -1) < Rev(AroonDown, -1) && Cross (AroonUp, AroonDown) )Sollte bei der CROSS Anwendung unnütz sein, der Kurs kann nur kreuzen wenn er vorher niedriger war. Macht man eine einfache Abfrage mit <> wäre es vielleicht sinnvoll weil man sonst jeden Tag ein Buy hat wo der Kurs über dem anderen ist. ich hab trading ideen, kann aber nicht programmieren....frustrierend! @Markus willst aber das Programmieren lernen? Wann willst Du die Position schliessen?oder einfach die Gegenseite eingehen? Quote Link to comment Share on other sites More sharing options...
Markus Posted July 2, 2010 Report Share Posted July 2, 2010 @ibelievethanks. es funktioniert. jetzt kann ich wieder weiter probieren. :-) nein, ich will nicht programmieren lernen. das geht mir völlig ab. irgendwie fehlt mir schon das grundlegende verständnis für programmiersprachen. ich muss einen anderen weg finden. das ziel ist ein trendfolgendes langfristiges system zu basteln, das ich auf verschiedenen Märkten testen kann, Stichwort Robustheit. wichtiger als die absolute performance ist mir ein kontrollierbares Risiko und keine drawdowns von -200% oder ähnliche scherze. ich trade schon einige zeit allerdings ohne klar definiertes system und darum wohl mit mässigem erfolg. es gibt immer wieder schöne gewinne aber ich geb sie dann auch wieder her.... Quote Link to comment Share on other sites More sharing options...
ibelieve Posted July 2, 2010 Report Share Posted July 2, 2010 1)thanks. es funktioniert. jetzt kann ich wieder weiter probieren. :-)nein, ich will nicht programmieren lernen. das geht mir völlig ab. 2)das ziel ist ein trendfolgendes langfristiges system zu basteln, das ich auf verschiedenen Märkten testen kann, Stichwort Robustheit. wichtiger als die absolute performance ist mir ein kontrollierbares Risiko 3)ich trade schon einige zeit allerdings ohne klar definiertes system und darum wohl mit mässigem erfolg. es gibt immer wieder schöne gewinne aber ich geb sie dann auch wieder her.... 1) Muss man jetzt nicht verstehen, oder? Was probierst Du ohne Grundkenntnisse? 2) Suche ich auch schon seit Jahren, aber leider ohne wirklich passende Idee. 3) Bist Du doch schon besser wie die meisten. Ansonsten, wie gesagt, bei Kleinigkeiten kann Dir hier sicherlich geholfen werden. Bei Komplexen Sachen bräuchte ich eine klare Aussage worum es geht und müsste schauen ob ich damit die "Profis" überzeugt bekäme. Dann sollte fast alles machbar sein. Quote Link to comment Share on other sites More sharing options...
Markus Posted July 3, 2010 Report Share Posted July 3, 2010 (edited) Nun ja, im moment schuster ich mir die einfachen sachen zusammen um zu schauen was vielleicht funktionieren könnte. Aber langfristig gehts nicht ohne profi, das ist schon klar. je einfacher es geht mit möglichst wenig parametern umso besser. ein kompliziertes system perfekt angepasst an deine testdaten hat null aussagekraft für die zukunft - stichwort: curve fitting. auf jedenfall, danke dir! Edited July 3, 2010 by ronner Zitat aufgrund Überlänge gelöscht - bitte auch auf Groß/Kleinschreibung achten Quote Link to comment Share on other sites More sharing options...
Markus Posted July 28, 2010 Report Share Posted July 28, 2010 Hallo Leute Wie kann ich Amibroker sagen dass er von den beiden stops (einer vola, einer absolut: 20%) jeweils den nimmt, der näher beim kurs liegt?bis jetzt siehts so aus: ApplyStop( 0, 2, 2 * ATR( 20 ), 1, False );ApplyStop( 0, 1, 20, 1 ); zweite frage:wie kann ich ihm sagen, geh short wenn innert x tagen y % Verlust (nicht das depot, die jeweilige aktie) ? short = ??? danke und allen gute trades! Quote Link to comment Share on other sites More sharing options...
ibelieve Posted July 28, 2010 Report Share Posted July 28, 2010 zweite frage:wie kann ich ihm sagen, geh short wenn innert x tagen y % Verlust (nicht das depot, die jeweilige aktie) ? short = ??? Sollte das ROC nicht diesen Wert ausgeben? short = ROC(X) < Y Quote Link to comment Share on other sites More sharing options...
Markus Posted July 28, 2010 Report Share Posted July 28, 2010 Sollte das ROC nicht diesen Wert ausgeben? short = ROC(X) < Y ah ja, die rate of change, darauf bin ich gar nicht gekommen. ich denke das sollte gehen, werde das mal testen. dank dir! Quote Link to comment Share on other sites More sharing options...
ibelieve Posted July 29, 2010 Report Share Posted July 29, 2010 Hallo Leute Wie kann ich Amibroker sagen dass er von den beiden stops (einer vola, einer absolut: 20%) jeweils den nimmt, der näher beim kurs liegt?bis jetzt siehts so aus: ApplyStop( 0, 2, 2 * ATR( 20 ), 1, False );ApplyStop( 0, 1, 20, 1 ); So wie ich das sehe geht das nicht.Der 2 Applystop überschreibt immer den ersten.Musst Du einen Programmieren.Hier mal ein Beispiel für den ATR. ich hoffe Du bekommst das für Dich wichtige raus,sonst noch mal fragen. Sell = 0 ; stFaktor = 1; //stFaktor = Optimize( "StoppFaktor",1.5, 0.5 , 2.5, 0.1 ); tpFaktor = Optimize( "TakeProfitFaktor", 0.5, 0.5 , 3, 0.1 ); slARRAY = Null; // für die Darstellung im Chart tpARRAY = Null; // für die Darstellung im Chart StopLos = 0; TakeProfit = 0; for( i = 1; i < BarCount; i++ ) { //----------Aufruf nur am Anfang jedes neuen Signals, BuyPrise und ATR() wird festgelegt-------------------------------------------------------------- if( StopLos == 0 AND Buy[ i ] ) { BuyPrice = Ref(High,-1); xxx = ATR(10); // xxx ist kein ARRAY StopLos = BuyPrice[i] - ( xxx[i] * stFaktor ); TakeProfit = BuyPrice[i] + ( xxx[i] * tpFaktor); } else Buy[ i ] = 0; // remove excess buy signals >> hat der Autor eingefügt, warum jetzt, erstmal keine Ahnung //----------AusstoppRegel----------------------------------------------------------------- if( StopLos > 0 AND Low[ i ] < StopLos) { Sell[ i ] = 1; SellPrice[ i ] = StopLos; StopLos = 0; TakeProfit =0; } //--------Zum Übergeben der ST und TP -Level für die Darstellung im Chart----------------- if (StopLos > 0 AND Low[ i ] > StopLos AND High[i] < TakeProfit ) { slARRAY[i] = StopLos; tpARRAY[i] = TakeProfit; } //----------GewinnZielRegel--------------------------------------------------------------- if( TakeProfit > 0 AND High[i] > TakeProfit) { Sell[ i ] = 1; SellPrice[ i ] = TakeProfit; StopLos = 0; TakeProfit =0; } } PlotShapes(Buy*shapeUpArrow,colorGreen,0,Low); PlotShapes(Sell*shapeDownArrow,colorRed,0,High); // Plot( Close,"Price",colorBlack,styleBar); Plot( slARRAY,"StopLevel", colorRed ); Plot( tpARRAY,"TakeProfitLevel", colorRed ); Buy = ExRem (Buy,Sell); Sell = ExRem(Sell,Buy); dist = 1.9 * ATR( 10 ); dist2 = 2.9 * ATR( 10 ); for ( i = 0; i < BarCount; i++ ) { if ( Buy[i] ) PlotText( "Buy\n@" + BuyPrice[ i ], i, L[ i ] - dist[i],colorGreen,colorYellow ); if ( Sell[i] ) PlotText( "Sell\n@" + SellPrice[ i ], i, H[ i ] + dist[i],colorRed, colorYellow ); //if ( Cover[i] ) //PlotText( "cover\n@" + CoverPrice[ i ], i, L[ i ] - dist2[i],colorGreen,colorLightGrey ); //if ( Short[i] ) //PlotText( "Short\n@" + ShortPrice[ i ], i, H[ i ] + dist2[i],colorRed, colorLightGrey ); } Quote Link to comment Share on other sites More sharing options...
oldschuren Posted July 29, 2010 Report Share Posted July 29, 2010 kommt mir irgendwie bekannt vor... Quote Link to comment Share on other sites More sharing options...
ibelieve Posted July 29, 2010 Report Share Posted July 29, 2010 kommt mir irgendwie bekannt vor... Jau, wollte ich noch dabei schreiben das er von Dir ist, aber am Ende ähneln Sie alle.War nur z faul zum suche das ich eine finde wo man Deine Handschrift nicht so sieht. Quote Link to comment Share on other sites More sharing options...
Markus Posted July 29, 2010 Report Share Posted July 29, 2010 @ibelievethanks, mal schauen ob ich das hinkriege. Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted October 8, 2010 Report Share Posted October 8, 2010 (edited) 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 istVerkaufen, 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 LONG Buy = Timeok AND Buyok; Longflag = Timeok AND Buyok; // Exit Long Sell = Timenok AND Longflag; // Timeout und noch ein Trade im Markt Sell = Sellok AND Longflag; // normales Verkaufssignal des Longtrades Umkehr = Sellok AND Longflag; Longflag=IIf(Umkehr,0,1); //Short= Shortok AND timeok; //Cover= Coverok; Vielen Dank im voraus KB Edited October 8, 2010 by Kleinerbroker Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 8, 2010 Report Share Posted October 8, 2010 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. Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted October 8, 2010 Report Share Posted October 8, 2010 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 Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted October 9, 2010 Report Share Posted October 9, 2010 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 EuchZahlenwerte aus ? Ein Indi-Fenster und Kennlinie ? Was hat sich bewährt ? KB Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 10, 2010 Report Share Posted October 10, 2010 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. Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted October 10, 2010 Report Share Posted October 10, 2010 @Ibelieve , vielen Dank dennoch für die gute Absicht . 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 zeichnen PlotShapes( 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 obensind "Sell"(der Befehl) , Timeout (eine Variable die anzeigt ob ich innerhalb der von mir vorgegebenenHandelszeit bin oder nicht , Sellok und Sell2 (Vorbereitende Sellsignale für Sell da ich mit IF-Abfragennoch nicht klar komme und mir daher work-arounds bastele). Die letzten beiden Plotsignale brauche ichim Moment nicht, sind daher durch "//" deaktiviert worden . KB Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted October 10, 2010 Report Share Posted October 10, 2010 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 . (Ü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 dasHauptprogramm 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 zeichnen PlotShapes( 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.