Kleinerbroker Posted February 21, 2012 Report Share Posted February 21, 2012 Einarbeitung in MC , meine Suche nach Codebeispielen für TSL ( für die Suchmaschine : MC , Multichart , TrailingStop , Trailing ) war nicht erfolgreich, ein Australier will mir (bald) helfen , ich starte mal : Das Ergebnis dieses Code soll es mir später ermöglichen , Pyramiden zu basteln , ganz so, wie das bei MT4 auch geht . Mein aktueller Code macht "etwas" , lange nicht alles , was er soll .Noch sehe ich nicht einmal, wenn er was macht, obwohl ich ihn mit PrintBefehlen gespickt habe : Im Moment nur Long (Short nicht belegt, in MA nur ein Fake): Input: Cts(25) ,// Kontrakte Stop1 (10) ,// StopLoss Abstand Step(5) ,// TSL Schritte Price( Close ) ,// fuer MA FastLength( 3 ) ,// Schnelle MA SlowLength( 16 ) ,// Langsame MA Debugg (True) ;// Debugg gewuenscht ? Variables: TickSize (0),StopLoss1(0),Var0( 0 ), Var1( 0 ),Count(0),StepUp(0), StopLock1(0),TP1(0),BreakLock1(0),BELock1 (false),HighRisc(False) ; //Variable conditions TickSize = MinMove/PriceScale ;// Abgeguckt StopLoss1 = stop1*ticksize ;// StopLoss im Preis StepUp = step*ticksize ;// Trailing Schrittgroesse // Berechnung MA var0 = AverageFC( Price, FastLength ) ;// var1 = AverageFC( Price, SlowLength ) ;// // die beruehmten "crossing moving Average" erzeugen das Signal fuer Oeffnen einer Position if LastBarOnChart then begin condition1 = var0 crosses over var1 ;// Long Signal condition2 = var1 crosses over var0 ;// Short Signal count = count + 1 ;// nur fuer Debugging // Entry if (condition1 = true) and (marketposition = 0) // wenn xing MAVG und kein Trade im Markt then begin Buy ( "ENT LNG" ) 25 contracts next bar at market ;// Entry in den Markt BELock1 = false ;// BESignal reset HighRisc = true ;// Flag fuer ungeschuetzen Trade , SL fehlt Print (count," Bar , Buy ") ;// DEBUGG end; // Initial StopLoss & Take Profit If ( MarketPosition = 1 ) and (HighRisc = true ) and (BELock1 = false) // frischer Trade Then begin // Long im Markt // nun erst kann erfolgen >> Berechnung des StopLock1 = OpenEntryPrice -stoploss1 ;// .... initialer SL BreakLock1 = OpenEntryPrice + (stoploss1/2); ;// .... BreakEvenPreis TP1 = OpenEntryPrice + (2*stoploss1) ;// .... TakeProfit Sell ("Init_SL_1") cts contracts next bar at StopLock1 stop ;// Stoploss setzen HighRisc = false ;// SL ist nun gesetzt sell ("Init_TP1") cts contracts next bar at TP1 limit ;// TakeProfit setzen Print (count," Bar , Buy & SL & TSL => Open @ ",OpenEntryPrice:6:5," , StopLoss1= ",StopLock1:6:5, " , BreakEven = ",BreakLock1:6:5," , TP =",TP1:6:5) ;// DEBUGG end; // Breakeven Stop If ( MarketPosition = 1 ) and (CurrentAsk > BreakLock1) and (BELock1 = false) // BE Kurs erreicht aber kein Then begin // BreakEven-SL gesetzt Sell ("BE_SL_1") cts contracts next bar at OpenEntryPrice stop ;// Stoploss @ BE nachziehen BELock1 = true ;// BE gesetzt Print (count," Bar , BREAK EVEN => @ StopLoss1== BE = ",BreakLock1:6:5," , TP =",TP1:6:5) ;// DEBUGG end; // Trailing If ( MarketPosition = 1 ) and (CurrentAsk > (BreakLock1+StepUp)) and (BELock1 = True) and (CurrentAsk >BreakLock1)// then begin BreakLock1 = BreakLock1+(StepUp/2) ;// Neuen SL berechnen sell ("Trail") Cts contracts next bar at BreakLock1 stop ;// Trailing SL Print (count," Bar TRAILING => @ = ",BreakLock1:6:5," , TP =",TP1:6:5) ;// DEBUGG end; // Debugging if Debugg = true then begin Print("Check ON ", count:2:0,". Bar , ASK = ",CurrentAsk:6:5," , MP = ",marketposition:2:0, " , Pyramide-Level = ",currententries:3:0," , FloatingProfit = ",OpenEntryProfit:6:4) ;// DEBUGG end; // Ende LastBarOnChart end; Mein nächster Schritt wird es sein, dass ich irgendwie die Orderausführung sowohl schriftlich bestätigen lasse (Print) als auch im Chart sehen will , Linien ziehen "TL_New....." Input/Korrekturen welcome . KB 1 Quote Link to comment Share on other sites More sharing options...
siscop Posted February 21, 2012 Report Share Posted February 21, 2012 Versuch mal die Schlagwörter SetPercentTrailingSetDollarTrailingSetStopPosition;SetDollarTrailing(500); SetStopPosition; oder SetStopShares;SetProfitTarget(500); oder SetProfitTarget(2*StopLoss1);SetStopLoss(500); oder SetStopLoss(StopLoss1); EL ist schon bissl länger auf dem Markt als mq4. Dat gibbet alles scho. EDIT: Hab gerade gesehen dass du Pyramiden basteln willst und da brauchst du Namen für die Orders. In diesem Fall gehen die Schlagwörter nicht. Dann scheint dein Beispiel doch besser zu sein.Du kannst aber selektiv auch eine Exitstrategie auf deine Entry eingehen.Buy ("ENT_LNG") 25 Shares Next Bar at Market;Sell From Entry ("ENT_LNG") 20 Shares Next Bar at High Limit; 1 Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted February 21, 2012 Author Report Share Posted February 21, 2012 @Siscop , toller Input, erklärt mir auch ne Menge Dinge am Rande gleich mit, die ich ebenfalls noch nicht verstanden/gesehen hatte . Es ist wirklich beeindruckend, wie sehr EL einem MQ4-Coder das Leben vereinfacht . Ich überarbeite den Code . Fortsetzung . KB Quote Link to comment Share on other sites More sharing options...
Henrik Posted February 22, 2012 Report Share Posted February 22, 2012 Was leider (noch) nicht geht, ist das von dir geplante Linien ziehen bei erfolgreichen Orders. Alle grafischen Elemente funktionieren nicht in Strategien, nur in Indikatoren. Andererseits sieht man die Orderausführung auch gut im laufenden Chart. Statt print-Befehlen kannst du dir auch Orders mailen lassen. Zum Pyramidisieren:Es geht, ich muss mal schauen ob ich den Code noch finde. Ich meine, ich hab das mal durchgespielt und gecodet mit Pyramidisieren. Ahh, hier es war das testen einer Martingale-Strategie! Dort findest du im ersten Beitrag den Code. Heute würde ich etwas anders coden, nicht mit "this bar" - aber vom Grundprinzip kannst du sehen wie man so etwas lösen kann. OK der Code passt nicht ganz zu dem was du suchst. Aber da siehst du, wie man zB Positionen weiter aufbauen kann. edit:Link vergessen!http://www.tom-next.com/community/topic/57413-martingale-strategie-mit-beispiel/ 1 Quote Link to comment Share on other sites More sharing options...
RAiNWORM Posted February 22, 2012 Report Share Posted February 22, 2012 Input/Korrekturen welcome .Du setzt einen StopLoss auf BreakEven. Der Trailing-Stop wird gesetzt, wenn BreakLock1 + StepUp erreicht ist. Wenn ich deinen Code richtig lese, dann stehst du ohne StopLoss da, wenn die Bedingung fürs Trailing erreicht wurde, dann aber nicht mehr. Denn: MC cancelt jede Order mit jeder Bar. Das heißt, du musst deinen Stop immer wieder neu setzen! Ich versuch es mal so aus der Hand (kann leider nicht testen, bin im Urlaub ). Der Code behandelt nur die Stops: variables: currentSL(0), newSL(0); if marketposition = 1 then begin newSL = 0; currentSL = maxlist(currentSL, OpenEntryPrice - stoploss1); // inital SL if CurrentAsk > BreakLock1 then begin newSL = BreakLock1; BreakLock1 = BreakLock1 + StepUp; end; currentSL = maxlist(currentSL[1], newSL); // höheren Stop nehmen Sell ("SL") cts contracts total next bar at currenSL stop; end; Wichtig ist beim Pyramidisieren der Zusatz "TOTAL" (s.o.) beim Teil-Exit mit Sell oder BuyToCover, denn sonst wird die angegebene Kontraktzahl aus jeder eröffneten Positioen genommen, was meist nicht gewünscht ist. Damit du überhaupt pyramidisieren kannst, musst du in den eigenschaften der Strategie angegeben, wie oft in die gleiche Richtung eine Position eröffnet werden darf und wie groß die maximale Kontraktzahl sein darf. 4 Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted February 22, 2012 Author Report Share Posted February 22, 2012 ............Denn: MC cancelt jede Order mit jeder Bar. Das heißt, du musst deinen Stop immer wieder neu setzen!.......................Ich versuch es mal so aus der Hand (kann leider nicht testen, bin im Urlaub ). Wichtig ist beim Pyramidisieren der Zusatz "TOTAL" (s.o.) beim Teil-Exit mit Sell oder BuyToCover, denn sonst wird die angegebene Kontraktzahl aus jeder eröffneten Positioen genommen, was meist nicht gewünscht ist. Damit du überhaupt pyramidisieren kannst, musst du in den eigenschaften der Strategie angegeben, wie oft in die gleiche Richtung eine Position eröffnet werden darf und wie groß die maximale Kontraktzahl sein darf. Rainworm , vor allem wünsche ich Dir einen erholsamen & schönen Urlaub (habe ich auch noch zwei Tage , daher kann ich auch so viel coden) Zum Thema "Stop immer neu setzen" : Ja, ich habe auch heute nachmittag erst gesehen, dass diese Orders garnicht bei IB liegen sondern scheinbar innerhalb MC bleiben . Wenn meine Beobachtung tatsächlich richtig ist, dann wäre das nicht gut . Denn wenn mir MC und IB mal abschmieren und ich keine SL im Markt habe ......also noch ein "Problem" , na ja, eins nach dem anderen lösen eben .Aber jedenfalls erklärt mir das dann schonmal , warum ich keine SL erlebt habe, wo diese eigentlich greifen sollten . Und neue Informationen für mich zur Pyramide ...... Mal gucken, dass ich das jetzt alles und auch alles richtig verarbeite . KB Quote Link to comment Share on other sites More sharing options...
Henrik Posted February 22, 2012 Report Share Posted February 22, 2012 Wenn dir MC oder IB abschmiert bleiben die Limits, die bei IB sind, auch dort. Nur wenn MC an ist, und IB, dann wird für jedes Bar das Limit neu kalkuliert und ggf gesetzt. Deswegen ist es SEHR wichtig, in den Tradingeigenschaften in MC festzulegen, ob die Orders bei IB als DAY oder GTC - Orders hinterlegt werden. Das kann man dort machen getrennt für Entry- und Exit-Orders. DAY bedeutet, dass die bei IB hinterlegte Order (wenn MC zB abstürzt) nur diesen Tag gilt, GTC bedeutet "bis sie gelöscht wird", also ewig (ich glaub ein paar Monate sind das). Das sollte man nur wissen falls MC zb abstürzt dass man die Orders ggf. bei IB löscht. Ich hab meine Einstiegsorders immer auf DAY, und die Exits auf GTC. 2 Quote Link to comment Share on other sites More sharing options...
Vola Posted February 22, 2012 Report Share Posted February 22, 2012 Zum Thema "Stop immer neu setzen" : Ja, ich habe auch heute nachmittag erst gesehen, dass diese Orders garnicht bei IB liegen sondern scheinbar innerhalb MC bleiben . Wenn meine Beobachtung tatsächlich richtig ist, dann wäre das nicht gut . Wenn das bei MC wirklich so sein sollte kann das ja auch von Vorteil sein. Stops die der Broker nicht direkt sieht, sind ja für den Trader nicht grade von Nachteil...Das Argument greift natürlich eher Intraday als für Swing Trading. Quote Link to comment Share on other sites More sharing options...
Henrik Posted February 22, 2012 Report Share Posted February 22, 2012 Wenn das bei MC wirklich so sein sollte kann das ja auch von Vorteil sein. Stops die der Broker nicht direkt sieht, sind ja für den Trader nicht grade von Nachteil...Das Argument greift natürlich eher Intraday als für Swing Trading. Es kommt drauf an wie man codet.Die Limits sieht IB, sie werden nur von MC bei jedem Bar neu berechnet und ggf. gelöscht. Wenn man aber den Befehl Setstoploss(xx) nimmt, dann wird die Stop-Order erst generiert wenn der Preis erreicht ist, als Market-Order, also IB sieht diesen Stopp nicht. * Den nehme ich immer als "Notstopp", ansonsten arbeite ich nach Möglichkeit mit den Limits. Aber nicht weil IB den Preis sieht, IB ist das egal, da es kein MarketMaker ist (OK im Orderbuch taucht es ja auf), sondern einfach aus Gründen der besser gefillten Orders. * Ich wurde gerade informiert, dass das so nicht stimmt. Ich dachte - sorry! 1 Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted February 22, 2012 Author Report Share Posted February 22, 2012 Habt alle vielen vielen Dank ! Eines habe ich inzwischen nun aber herausgefunden .... nämlich wie man Striche in grüner Farbe aus der/innerhalb einer Strategy in den Chart bekommt : Und wenn ich es nun auch noch schaffen sollte, dass die Linie horizontal anstatt vertikal läuft , dann poste ich Euch den Code dazu (total simpel, einfach nur ausgelagert in eine Funktion, muss wohl zwischenzeitlich ein Update gewesen sein, @Henrik) KB PS.: Vola ist ein PIVOTER ? Hmmmm , neue Dienstbezeichnung im TN ???? Quote Link to comment Share on other sites More sharing options...
Henrik Posted February 23, 2012 Report Share Posted February 23, 2012 Oh, also ist das zeichnen jetzt doch möglich? Danke für die Info! Ich habe nämlich vor, mir so einen Baustein zu basteln der immer die Strategieparameter und Tradedaten in den Chart einblendet.Das ist zwar bei MC auch sehr schwierig (unabhängig vom Code) weil man keine feste Chartfensterposition ("oben rechts") angeben kann, sondern immer nur vom Kurs ausgehend etwas eintragen kann. Das ist ärgerlich, weil sich dann das Textfeld immer verschiebt. Wenn man aber den Befehl Setstoploss(xx) nimmt, dann wird die Stop-Order erst generiert wenn der Preis erreicht ist, als Market-Order, also IB sieht diesen Stopp nicht. * Den nehme ich immer als "Notstopp", ansonsten arbeite ich nach Möglichkeit mit den Limits. Aber nicht weil IB den Preis sieht, IB ist das egal, da es kein MarketMaker ist (OK im Orderbuch taucht es ja auf), sondern einfach aus Gründen der besser gefillten Orders. * Ich wurde gerade informiert, dass das so nicht stimmt. Ich dachte - sorry! Jetzt musste ich selber mal gucken was nun stimmt.Also eine STP - Order liegt zwar bei IB und wird dort auch angezeigt, wird aber noch nicht in das Orderbuch eingetragen. Das heißt: mit setstoploss(xx) setzt MC eine Stopp-Order ab und schickt sie zu IB. IB nimmt die Order auf und zeigt sie an. Wenn der Kurs erreicht ist, dann schickt IB diese Order als MarketOrder in den echten Markt.Quelle: IB http://individuals.interactivebrokers.com/en/trading/orders/stop.php?ib_entity=llc Interactive Brokers may simulate these order types on its books and submit the order to the exchange when it becomes marketable. Das heißt, der Markt kennt deinen echten Stopp nicht und MC kann ruhig abstürzen, da IB den Stopp kennt und ggf. auslöst. Finde ich gut so! Also als Notstopp immer mit einbauen in die Strategie, wenn es Sinn macht. Quote Link to comment Share on other sites More sharing options...
RAiNWORM Posted February 23, 2012 Report Share Posted February 23, 2012 DAY bedeutet, dass die bei IB hinterlegte Order (wenn MC zB abstürzt) nur diesen Tag gilt, GTC bedeutet "bis sie gelöscht wird", also ewig (ich glaub ein paar Monate sind das). Das ist korrekt, wobei nicht jeder Broker alles unterstützt. Bei MB Trading kann ich nur GTC aus MC heraus absetzen. Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted February 23, 2012 Author Report Share Posted February 23, 2012 Oh, also ist das zeichnen jetzt doch möglich? Danke für die Info! Ich habe nämlich vor, mir so einen Baustein zu basteln der immer die Strategieparameter und Tradedaten in den Chart einblendet.Das ist zwar bei MC auch sehr schwierig (unabhängig vom Code) weil man keine feste Chartfensterposition ("oben rechts") angeben kann, sondern immer nur vom Kurs ausgehend etwas eintragen kann. Das ist ärgerlich, weil sich dann das Textfeld immer verschiebt. Das folgende Chart zeigt bezogen auf einen aktuellen Trade dessen Entry, den SL, den BreakEven und den TP . Dazu nutze ich die folgende Funktion "DrawMyTrade" ://DrawMyTrade ( Zeilen 1...10,1=Open,2=SL,3=BE,4=TP1,5=TSL0,6=TSL1,...) // ( Spalten0...10, 0=ID ,1=Preis, 2=OldDate ,3=Oldtime , 4=Nowdate ,5=Nowtime,6="1=SETTEXTRIGHT ist True", // 7=Color ==>> Blue=2 , Green=4 , Red=6 , Yellow=7 (Magenta =5 , Cyan =3) // 8=Style ==>> 1 Solid , 2 lange Striche , 3 kurze Striche , 4&5 Strich Punkt // 9=Size ==>> 0 unsichtbar , 1 ... 7 Duenn ... Bold ) // inputs: DrawTL[X,Y](NumericArray) ;// // Farbzuweisung funktioniert noch nicht DrawTL[1,7]=2;DrawTL[2,7]=6;DrawTL[3,7]=7;DrawTL[4,7]=4 ;// Temporaer hier die Farbzuweisung // EntryPrice value2=tl_setbegin(DrawTL[1,0],DrawTL[1,2],DrawTL[1,3],DrawTL[1,1]) ;// Anfang value3=tl_setend (DrawTL[1,0],DrawTL[1,4],DrawTL[1,5],DrawTL[1,1]) ;// Ende value4=tl_setextright(DrawTL[1,0],True) ;// Verlaengerung rechts value5=tl_setcolor(DrawTL[1,0],Blue) ;// Farbe value6=tl_setstyle(DrawTL[1,0],DrawTL[1,8]) ;// Style value7=tl_setsize (DrawTL[1,0],DrawTL[1,8]) ;// Linienstaerke value8=value2+value3+value4+value5+value6+value7 ;// Pruefsumme if value8 <> 0 then alert(Text("EntryPrice : Fehler in der ID")) ;// Fehler // StopLoss value2=tl_setbegin(DrawTL[2,0],DrawTL[2,2],DrawTL[2,3],DrawTL[2,1]) ;// Anfang value3=tl_setend (DrawTL[2,0],DrawTL[2,4],DrawTL[2,5],DrawTL[2,1]) ;// Ende value4=tl_setextright(DrawTL[2,0],True) ;// Verlaengerung rechts value5=tl_setcolor(DrawTL[2,0],Red) ;// Farbe value6=tl_setstyle(DrawTL[2,0],DrawTL[2,8]) ;// Style value7=tl_setsize (DrawTL[2,0],DrawTL[2,8]) ;// Linienstaerke value8=value2+value3+value4+value5+value6+value7 ;// Pruefsumme if value8 <> 0 then alert(Text("StopLoss : Fehler in der ID")) ;// Fehler // BreakEven value2=tl_setbegin(DrawTL[3,0],DrawTL[3,2],DrawTL[3,3],DrawTL[3,1]) ;// Anfang value3=tl_setend (DrawTL[3,0],DrawTL[3,4],DrawTL[3,5],DrawTL[3,1]) ;// Ende value4=tl_setextright(DrawTL[3,0],True) ;// Verlaengerung rechts value5=tl_setcolor(DrawTL[3,0],Yellow) ;// Farbe value6=tl_setstyle(DrawTL[3,0],DrawTL[3,8]) ;// Style value7=tl_setsize (DrawTL[3,0],DrawTL[3,8]) ;// Linienstaerke value8=value2+value3+value4+value5+value6+value7 ;// Pruefsumme if value8 <> 0 then alert(Text("BreakEven : Fehler in der ID")) ;// Fehler // TakeProfit value2=tl_setbegin(DrawTL[4,0],DrawTL[4,2],DrawTL[4,3],DrawTL[4,1]) ;// Anfang value3=tl_setend (DrawTL[4,0],DrawTL[4,4],DrawTL[4,5],DrawTL[4,1]) ;// Ende value4=tl_setextright(DrawTL[4,0],True) ;// Verlaengerung rechts value5=tl_setcolor(DrawTL[4,0],Green) ;// Farbe value6=tl_setstyle(DrawTL[4,0],DrawTL[4,8]) ;// Style value7=tl_setsize (DrawTL[4,0],DrawTL[4,8]) ;// Linienstaerke value8=value2+value3+value4+value5+value6+value7 ;// Pruefsumme if value8 <> 0 then alert(Text("TakeProfit : Fehler in der ID ")) ;// Fehler Die Farbzuweisung mittel Legacy-Code funktioniert noch nicht (kommt nur Schwarz) . Diese Funktion wird vom Hauptprogramm aufgerufen . im TSL bzw der Codierung sind immer noch Fehler, einiges ist schon besser aber dieses ganze Thema Ordergenrierung habe ich noch nicht begriffen . Habe heute soviel mit der Malerei herumgedoktort . Dazu muss ich mir alle Euren Hinweise und Tipps und Tricks in Ruhe nochmal durchlesen und durchdenken . Schritt für Schritt eben Also werfe ich den Code fehlerhaft hier hinein, er ist nur gut um bunte Linien zu malen und Henrik sehen kann, was ich da mache . Vielleicht hilft´s ein wenig , orientiert sich am Bar ! // My_TrailingSL_V2.0. Input: Cts(25) ,// Kontrakte Stop1 (10) ,// StopLoss Abstand Step(5) ,// TSL Schritte Price( Close ) ,// fuer MA FastLength( 3 ) ,// Schnelle MA SlowLength( 15 ) ,// Langsame MA Debugg (True) ;// Debugg gewuenscht ? Variables: TickSize (0),StopLoss1(0),Var0( 0 ), Var1( 0 ),Count(0),StepUp(0), StopLock1(0),TP1(0),BreakLock1(0),BELock1 (false),HighRisc(False),init(true) ; Arrays : DrawTL [10,10](1) ;// Fuer Hilfslinien Open,SL,BE,TP,TSL1,TSL2 ... {------------------------------------------------------------------------------------------------- 1.)INIT () : diese Routine laedt die offenen Trades und holt sich deren Daten --------------------------------------------------------------------------------------------------} if init // then begin // Initialisierung des HS init = false ;// Init - Routine nur einmal ausfuehren // [intrabarOrderGeneration = True] ;// Print (" ***** Initialising SLV Stratetgy NutShell *****") ;// For value1 = 1 to 10 begin DrawTL[value1,0] = tl_new(0,0,0,0,0,0) ;// DEBUGG :ID Horizontal Line for Prices //Print("Linien ID = ",TradeNew[value1,0]); end ;// end ;// //Variable conditions TickSize = MinMove/PriceScale ;// Abgeguckt StopLoss1 = stop1*ticksize ;// StopLoss im Preis StepUp = step*ticksize ;// Trailing Schrittgroesse // Berechnung MA var0 = AverageFC( Price, FastLength ) ;// var1 = AverageFC( Price, SlowLength ) ;// // die beruehmten "crossing moving Average" erzeugen das Signal fuer Oeffnen und Schliessen einer Position if LastBarOnChart then begin condition1 = var0 crosses over var1 ;// Long Signal condition2 = var1 crosses over var0 ;// Short Signal count = count + 1 ;// nur fuer Debugging // Entry if (condition1 = true) and (marketposition = 0) // wenn xing MAVG und kein Trade im Markt then begin Buy ( "ENT LNG" ) 25 contracts next bar at market ;// Entry in den Markt BELock1 = false ;// BESignal reset HighRisc = true ;// Flag fuer ungeschuetzen Trade , SL fehlt // DEBUGG Print (count," Bar , Buy ") ;// DEBUGG end; // Initial StopLoss & Take Profit If ( MarketPosition = 1 ) and (HighRisc = true ) and (BELock1 = false) // frischer Trade Then begin // Long im Markt // nun erst kann erfolgen >> Berechnung des StopLock1 = OpenEntryPrice -stoploss1 ;// .... initialer SL BreakLock1 = OpenEntryPrice + (stoploss1/2); ;// .... BreakEvenPreis TP1 = OpenEntryPrice + (2*stoploss1) ;// .... TakeProfit Sell from entry ("ENT LNG") cts contracts next bar at StopLock1 stop ;// Stoploss setzen HighRisc = false ;// SL ist nun gesetzt Sell from entry ("ENT LNG") cts contracts next bar at TP1 limit ;// TakeProfit setzen // DEBUGG Print (count," Bar , Buy & SL & TSL => Open @ ",OpenEntryPrice:6:5," , StopLoss1= ",StopLock1:6:5, " , BreakEven = ",BreakLock1:6:5," , TP =",TP1:6:5) ;// DEBUGG end; // Breakeven Stop If ( MarketPosition = 1 ) and (CurrentAsk > BreakLock1) and (BELock1 = false) // BE Kurs erreicht aber kein Then begin // BreakEven-SL gesetzt Sell from entry("ENT LNG") cts contracts next bar at OpenEntryPrice stop ;// Stoploss @ BE nachziehen BELock1 = true ;// BE gesetzt // DEBUGG Print (count," Bar , BREAK EVEN => @ StopLoss1== BE = ",BreakLock1:6:5," , TP =",TP1:6:5) ;// DEBUGG end; // Trailing If ( MarketPosition = 1 ) and (CurrentAsk > (BreakLock1+StepUp)) and (BELock1 = True) // then begin BreakLock1 = BreakLock1+(StepUp/2) ;// Neuen SL berechnen Sell from Entry ("ENT LNG") Cts contracts next bar at BreakLock1 stop ;// Trailing SL // DEBUGG Print (count," Bar TRAILING => @ = ",BreakLock1:6:5," , TP =",TP1:6:5) ;// DEBUGG end; // Draw Trade // Zeilen 1...10,1=Open,2=SL,3=BE,4=TP1,5=TSL0,6=TSL1,...) // Spalten0...10, 0=ID ,1=Preis, 2=OldDate ,3=Oldtime , 4=Nowdate ,5=Nowtime,6="1=SETTEXTRIGHT ist True", // 7=Color ==>> Blue=2 , Green=4 , Red=6 , Yellow=7 (Magenta =5 , Cyan =3) // 8=Style ==>> 1 Solid , 2 lange Striche , 3 kurze Striche , 4&5 Strich Punkt // 9=Size ==>> 0 unsichtbar , 1 ... 7 Duenn ... Bold ) if marketposition = 1 then begin DrawTL[1,1] = OpenEntryPrice;DrawTL[2,1] = StopLock1;DrawTL[3,1] = BreakLock1;DrawTL[4,1] = TP1; For value1 = 1 to 4 begin // 4 Linien DrawTL[value1,2]=Date;DrawTL[value1,3]=Time[1];DrawTL[value1,4]=Date;DrawTL[value1,5]=Time; DrawTL[value1,6]=1;DrawTL[value1,7]=5;DrawTL[value1,8]=2;DrawTL[value1,9]=1; end ;// end; DrawMyTrade (DrawTL) ;// // Debugging if Debugg = true then begin Print("Check ON ", count:2:0,". Bar , ASK = ",CurrentAsk:6:5," , MP = ",marketposition:2:0, " , Pyramide-Level = ",currententries:3:0," , FloatingProfit = ",OpenEntryProfit:6:4, " /// Open = ",OpenEntryPrice:6:5," , StopLoss= ",StopLock1:6:5," , BEven = ", BreakLock1:6:5," , TP = ",TP1:6:5);// DEBUGG end; // Ende LastBarOnChart end; Bis morgen KB 1 Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted February 26, 2012 Author Report Share Posted February 26, 2012 Ok, mein Verständnis für die Funktion der Order im MC war verkehrt . Und es ist immer noch unvollständig . Aber zumindest habe ich jetzt Code mit einem TSL , der scheinbar funktioniert (nur wenig getestet) . Ich poste das nochmal und attache aber den Code für Euch , KEINE GARANTIE FÜR NIX , wie immer . My_Trailing_3.0.pla // My_TrailingSL_V3.0. Input: Cts(1000) ,// Kontrakte Stop1 (10) ,// StopLoss Abstand Stepset(5) ,// TSL Schritte Price( Close ) ,// fuer MA FastLength( 3 ) ,// Schnelle MA SlowLength( 15 ) ,// Langsame MA Debugg (True) ;// Debugg gewuenscht ? Variables: TickSize (0),StopLoss1(0),Var0( 0 ),Var1( 0 ),Count(0),Step(0),Kurs(0) ,// StopLock1(0),TP1(0),BreakLock1(0),BELock1(false),init (True), Status("Flat");// Arrays : DrawTL [10,10](1) ;// Fuer Hilfslinien Open,SL,BE,TP,TSL1,TSL2 ... // ============================================================================================== // INIT () : diese Routine laedt die offenen Trades und holt sich deren Daten if init = true // then begin // Initialisierung des HS init = false ;// Init - Routine nur einmal ausfuehren // [intrabarOrderGeneration = True] ;// ClearPrintLog ;// Print (" ***** Initialising SLV Stratetgy NutShell *****") ;// For value1 = 1 to 10 begin DrawTL[value1,0] = tl_new(0,0,0,0,0,0);// DEBUGG :ID Horizontal Line for Prices end ;// if (MarketPosition_at_Broker <> MarketPosition_at_Broker_for_The_Strategy) and ((Time > 2310) or (Time < 2258)) and // Forex rollover ((Time > 0245) or (Time < 0240)) // server disconnect then begin ChangeMarketPosition(MarketPosition_at_Broker - MarketPosition_at_Broker_for_The_Strategy, (Close+Open)/2, "Change MP"); // fiktiver Preis! Print ("Korrektur erfolgt") ;// end ;// // Variable conditions TickSize = MinMove/PriceScale ;// Abgeguckt StopLoss1 = stop1*ticksize ;// StopLoss im Preis Step = stepset*ticksize ;// Trailing Schrittgroesse end ;// // ============================================================================================== // ============================================================================================== if LastBarOnChart // then begin // Kurs = Close ;// CurrentAsk ;// // die beruehmten "crossing moving Average" erzeugen das Signal fuer Oeffnen und Schliessen einer Position // Berechnung MA var0 = AverageFC( Price, FastLength ) ;// var1 = AverageFC( Price, SlowLength ) ;// condition1 = var0 crosses over var1 ;// Long Signal count = count + 1 ;// nur fuer Debugging // ============================================================================================== // Entry if (condition1 = true) and (marketposition = 0) // wenn xing MAVG und kein Trade im Markt then begin // Buy ( " 01 " ) 25 contracts next bar at market ;// Entry in den Markt BELock1 = False ;// // DEBUGG Print (count," Bar => Buy ") ;// DEBUGG end ;// // ============================================================================================== // ============================================================================================== // Initial StopLoss , Break Even & Take Profit Preis ermitteln If ( MarketPosition = 1 ) // Long Trade im Markt Then begin // // ============================================================================================== // ============================================================================================== // dann Pivotpreise ermitteln StopLock1 = OpenEntryPrice - stoploss1 ;// .... initialer SL TP1 = OpenEntryPrice + ( 2 * stoploss1 ) ;// .... TakeProfit // Breakeven sichern If (BELock1 = false) then begin BreakLock1 = OpenEntryPrice + ( Step / 2 ) ;// BreakEvenPreis BELock1 = True ;// end ;// If (Kurs > (BreakLock1+Step)) and (BELock1 = True) // then begin // BreakLock1 = BreakLock1+( Step / 2 ) ;// Neuen Trailing-SL berechnen end ;// // ============================================================================================== // Exit platzieren // Stop Loss if Kurs < StopLock1 then begin Sell from Entry (" 01 ") Cts contracts next bar at market ;// SOFORT RAUS Status = " EXIT Loss " ;// Debugg end ;// // Im Floating Loss if Kurs < BreakLock1 AND Kurs > StopLock1 then begin Sell from Entry (" 01 ") Cts contracts next bar at StopLock1 Stop ;// Stop Loss Status = " FloatingLoss " ;// Debugg end ;// // Trailing if Kurs > BreakLock1 then begin Sell from Entry (" 01 ") Cts contracts next bar at BreakLock1 Stop ;// Stop Loss Status = " Trailing Stopp " ;// Debugg end ;// // Profit Ziel erreicht if Kurs > TP1 then begin Sell from Entry (" 01 ") Cts contracts next bar at market ;// SOFORT RAUS Status = " Take Profit " ;// Debugg end ;// // ============================================================================================== // Draw Trade // Zeilen 1...10,1=Open,2=SL,3=BE,4=TP1,5=TSL0,6=TSL1,...) // Spalten0...10, 0=ID ,1=Preis, 2=OldDate ,3=Oldtime , 4=Nowdate ,5=Nowtime,6="1=SETTEXTRIGHT ist True", // 7=Color ==>> Blue=2 , Green=4 , Red=6 , Yellow=7 (Magenta =5 , Cyan =3) // 8=Style ==>> 1 Solid , 2 lange Striche , 3 kurze Striche , 4&5 Strich Punkt // 9=Size ==>> 0 unsichtbar , 1 ... 7 Duenn ... Bold DrawTL[1,1] = OpenEntryPrice;DrawTL[2,1] = StopLock1;DrawTL[3,1] = BreakLock1;DrawTL[4,1] = TP1 ; For value1 = 1 to 4 begin // 4 Linien DrawTL[value1,2]=OpenEntryDate;DrawTL[value1,3]=OpenEntryTime;DrawTL[value1,4]=Date;DrawTL[value1,5]=Time; DrawTL[value1,6]=1;DrawTL[value1,7]=5;DrawTL[value1,8]=2;DrawTL[value1,9]=1; end ;// DrawMyTrade (DrawTL) ;// // ============================================================================================== end ;// Ende der TradeBearbeitung , Marketposition // ============================================================================================== // Debugging if Debugg = true then begin Print("DBG ON ", count:2:0,". Bar , MP = ",marketposition:1:0," , PosCnt = ",PosTradeCount(0), " , Pyr-Lvl = ",currententries:3:0," , Flt-P&L = ",OpenEntryProfit:6:4," , Status = ", Status," , BE = ",BELock1," /// Open = ",OpenEntryPrice:6:5," , ASK = ",Kurs:6:5, " , SL = ",StopLock1:6:5," , BE = ",BreakLock1:6:5," , TP = ",TP1:6:5);// DEBUGG end; // Ende LastBarOnChart ," , Time = ",(TimeToSeconds(Time)):6:0 end; Die für mich wesentliche Erkenntnis ist , wie oben auch von Euch erwähnt, dass ich bei jedem Durchlauf durch den Code, jede Order neu bestätigen muss . Das ist MC . Was ich nicht verstehe ist nun, was ich machen muss, damit dasselbe sicher und unter allen Umständen auch bei IB passiert . Ich habe jetzt keine Ticks, also kann ich nicht mit RT gucken . Und mein Urlaub ist nun auch wieder vorbei und .... na ja, der Rest steht ja in Philipps Thread "Warum tradest Du?" unter den Beiträgen von Siscop . Lassen wir es dabei , er hat alles geschrieben was ich zu sagen hätte .Das Einzige was ich jetzt beginnen werde, ist das ich diesen Code auf Fritz im Demo life nehme und beginne Erfahrungen zu sammeln . Immerhin etwas ... Gute Nacht KB Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted March 17, 2012 Author Report Share Posted March 17, 2012 Bischen was zum Lachen, eine Lektion gelernt ... Also Bällchen-Profit wollte ich eigentlich nicht coden . Aber genau das habe ich wohl geschafft . Gelernt : Noch ein Feedback für andere KB´s : Henrik meinte mal (#4) , dass man in Studies keine Grafik malen kann .Er hat dann recht, wenn man diese Optimieren will . Ich mußte meinen Code von aller Grafik (inkl Text_Set) im Chart befreien, um zu optimieren .KB Quote Link to comment Share on other sites More sharing options...
RAiNWORM Posted March 18, 2012 Report Share Posted March 18, 2012 Also Bällchen-Profit wollte ich eigentlich nicht coden . Wow, das habe ich noch nie gesehen. Erinnert mich an Lampions im China-Restaurant Wie kommt das denn zustande? Hast du im Code Einstellungen, die das Trading bei bestimmten Parametern verhindern? Genetische Optimierung? Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted March 18, 2012 Author Report Share Posted March 18, 2012 Wow, das habe ich noch nie gesehen. Erinnert mich an Lampions im China-Restaurant Wie kommt das denn zustande? Hast du im Code Einstellungen, die das Trading bei bestimmten Parametern verhindern? Genetische Optimierung? .......... nicht den Ansatz einer Ahnung . Aber Du .... denn ich habe hier herumgelesen und dann mal ein paar Knöpfe in meinem MC gedrückt . Unter anderem auch den der genetischen Optimierungsmethode . vG´s KB PS.: Und nun weißt Du auch, warum ich mir diesen " " Smiley als "den meinen" ausgesucht habe (... bei dem einen Quizz , das ich mal gewonnen habe) . Er paßt einfach zu gut zu mir Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted April 7, 2012 Author Report Share Posted April 7, 2012 Hallo eigentlich war es mein Ansinnen , dass ich MC mit MBT und IB betreibe . Ernüchtert von meiner Feststellung , dass ich mich mit MC auch mittelfristig weiter von meinem ersten Ziel "HS Work1" enfernt befinde , als mit MT4 ..... habe ich nun dort - dem Metatrader - die Arbeit wieder aufgenommen . Schade , denn MC begeistert mich nach wie vor und ich freue mich sehr darauf mit MC zukünftig HS zu entwickeln, die ich dann vermutlich eher auf MT4 arbeiten lasse , als mit MC . Roadblocker , alle einzeln wohl lösbar , häufen sich . Das Meiste würde sich lösen lassen, wenn ich MC und Metatrader kombinieren könnte . Wenn also - ich MC dahin bekommen könnte, dass Orders von MC aus auf der Metatraderplattform bewegt werden könnten (send, close , modify , auslesen) . Und wenn ich zwischen Beiden einen Datenaustausch sicherstellen könnte , indem man Kurse und Orderdaten von MT4 nach MC und Order-Instruktionen von MC nach MT4 geschickt werden . Dann wäre ich einen großen Schritt in meiner Problemlösung weiter . Vielleicht habt Ihr mir sogar durch Euer Vote geholfen (Danke) , dass MC etwas unternimmt . Auf ein seperates Anschreiben habe ich folgende Antwort erhalten :Hello _____ , Unfortunately, we do not plan to implement this feature in the nearest future. As far as I am concerned, you can connect MultiCharts to MT4 using external dll files that can be found on the web. If you have any further questions, please do not hesitate to contact MultiCharts. Best Regards, Habt Ihr Erfahrungen damit ..... MC/MT4 mit einer "DLL" zu verbinden ? KB Quote Link to comment Share on other sites More sharing options...
RAiNWORM Posted April 7, 2012 Report Share Posted April 7, 2012 Habt Ihr Erfahrungen damit ..... MC/MT4 mit einer "DLL" zu verbinden ?Nein. Ich hatte aber schonmal darüber nachgedacht, eine Verbindung zu programmieren, damit ich auch CFDs handeln kann. Den Gedanken habe ich allerdings verworfen. Schließlich will ich traden und mich nicht mit technischen Problemen meiner Bridge auseinandersetzen müssen. MC und MT4 sind recht unterschiedlich im Orderhandling, sodass eine Verbindung zwar möglich, aber die Synchronisation schwer fällt. Da verzichte ich lieber auf CFDs und handel Futures. Die Aussage vom MC-Team, die du oben zitierst, zeigt doch eines ganz deutlich: MC scheut eine Anbindung an MT4, obwohl sie sich damit einen riesigen Markt erschließen könnten. Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted April 7, 2012 Author Report Share Posted April 7, 2012 ...... MC und MT4 sind recht unterschiedlich im Orderhandling, ....... MC scheut eine Anbindung an MT4, obwohl sie sich damit einen riesigen Markt erschließen könnten. Dank, damit wirst Du mir auch mit eine Erklärung dafür gegeben haben , warum ich auf erhebliche Probleme gestossen bin , als ich versuchte mein Konzept bei MC anzuwenden . Denn dort (Work1) geht es ja gerade darum, einzelne Order zu managen . Dennoch , wollte Euch wenigstens befragt haben Gruß KB Quote Link to comment Share on other sites More sharing options...
Vola Posted April 7, 2012 Report Share Posted April 7, 2012 Dennoch , wollte Euch wenigstens befragt haben Eigene Erfahrungen diesbezüglich habe ich nicht, aber jemand der eine andere Bridge/Plattform Lösung getestet hat, würde es im Livehandel nie wieder zulassen.Das grundsätzliche Problem einer Bridge Lösung ist vllt. sehr einfach begründet. (Denkt Vola, also der Laie so bei sich)Es ist eine zusätzliche Komponente die Gefahren/Fehlerquellen in sich birgt - grade bei den heutigen Update und Release Geschwindigkeiten der jeweiligen Hersteller. 1 Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted April 7, 2012 Author Report Share Posted April 7, 2012 Ganz genau @Vola ... und ich bin auch nicht besonders angetan von der MC - Antwort eine DLL-Lösung im Web zu suchen . Lassen wir es also mal so auf sich beruhen und ich kann diesen Thread in den Tiefen des TN-WWW versinken lassen . KB Quote Link to comment Share on other sites More sharing options...
Kleinerbroker Posted June 6, 2012 Author Report Share Posted June 6, 2012 Moinsen . Bevor ich MC für längere Zeit zur Seite lege zusammen mit all den gekauften Büchern und den Favoritenordnern etc nochmal die Frage an unsere MC-Trader hier : Weiss einer von Euch wo ich nachfragen kann , ob/wo sich im Web Wissen darüber befindet , wie ich MC nutzen kann um automatisierten "Positionshandel" ( 4 Std TF , Trades dauern bis zu 2 Monaten) zu betreiben ?Das Projekt ist immer dasselbe, Silver (Work1) und ich realisiere es gerade in MT4 wie schon berichtet . MC habe ich direkt angefragt : Dort hatte man keinerlei Hilfen für mich (Null!) , durchaus aber Verständnis dafür, dass ich das anfrage . In anderen Worten : Ist MC cool aber eher nur für den Intraday geeignet und sollte man bei offenen Trades besser am PC sitzen (wie mir von einem Semi - Prof empfohlen wurde) ? KB Quote Link to comment Share on other sites More sharing options...
siscop Posted June 6, 2012 Report Share Posted June 6, 2012 MC ist wirklich nur was für kurzfristige Trader. Man ist ja immer irgendwo in Position und da kommt es schon vor dass man MC für 2 Wochen offen hat und der Support einen immer rät es wöchentlich neu zu starten. Für Positionen über mehrere Wochen also nicht zu gebrauchen.Dass man „immer“ davor sitzen sollte beim Autohandeln halte ich aber auch für falsch – wozu bräuchte ich dann noch einen Autotrader?Ja MC hat einige Bugs die Teilweise erheblich sind die da wärenPosis werden doppelt geschlossen und man hängt plötzlich mit einer nicht überwachten Gegenposi im MarktPosis werden doppelt eingegangenTeilausführungen sieht er erst gar nichtuvm.Da muss man aber nur ab und zu rein schauen dass alles in Ordnung ist. Um MC wirklich als Positionshandel wahr zu nehmen sollte man ein sync einbauen dass sich mit jeder Schleife mit dem Broker die Position abgleicht. Das braucht aber immer min. einen Balken bis er das hat. Wenn du also Montag morgens MC anschmeißt wird er beim ersten Balken noch keine offenen Positionen schließen können. Erst beim zweiten oder dritten Balken wird er die Posis übernommen haben und managen können. 1 Quote Link to comment Share on other sites More sharing options...
Licens Posted June 6, 2012 Report Share Posted June 6, 2012 MC ist wirklich nur was für kurzfristige Trader. Man ist ja immer irgendwo in Position und da kommt es schon vor dass man MC für 2 Wochen offen hat und der Support einen immer rät es wöchentlich neu zu starten. Für Positionen über mehrere Wochen also nicht zu gebrauchen.Dass man „immer“ davor sitzen sollte beim Autohandeln halte ich aber auch für falsch – wozu bräuchte ich dann noch einen Autotrader?Ja MC hat einige Bugs die Teilweise erheblich sind die da wärenPosis werden doppelt geschlossen und man hängt plötzlich mit einer nicht überwachten Gegenposi im MarktPosis werden doppelt eingegangenTeilausführungen sieht er erst gar nichtuvm.Das klingt für mich immer alles sehr nach Kamikaze-Tool. Warum sollte man für diese Software eigentlich ernsthaft Geld ausgeben und seine Zeit,welche man auch zum traden nutzen könnte, investieren? 1 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.