Jump to content
Tom Next - Daytrading Community

Ordermanagment


Kleinerbroker

Recommended Posts

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

  • Upvote 1
Link to comment
Share on other sites

Versuch mal die Schlagwörter

 

SetPercentTrailing

SetDollarTrailing

SetStopPosition;

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;

  • Upvote 1
Link to comment
Share on other sites

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/

  • Upvote 1
Link to comment
Share on other sites

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 :biggrin: ). 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.

  • Upvote 4
Link to comment
Share on other sites

............

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 :biggrin: ).

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 . :nictation:

 

Und neue Informationen für mich zur Pyramide ...... :doubleup:

 

Mal gucken, dass ich das jetzt alles und auch alles richtig verarbeite . :kb-smile:

 

KB

Link to comment
Share on other sites

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.

  • Upvote 2
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!

  • Upvote 1
Link to comment
Share on other sites

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 :

KB.png

 

Und wenn ich es nun auch noch schaffen sollte, dass die Linie horizontal anstatt vertikal läuft :kb-smile: , 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 ????

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 .

 

Linien_in_Strat.png

 

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 :nictation:

 

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

  • Upvote 1
Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 3 weeks later...

Bischen was zum Lachen, eine Lektion gelernt ...

 

:wub:

 

Also Bällchen-Profit wollte ich eigentlich nicht coden .

 

Bällchen.png

 

Aber genau das habe ich wohl geschafft . :hihi:

 

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

Link to comment
Share on other sites

Also Bällchen-Profit wollte ich eigentlich nicht coden .

 

Wow, das habe ich noch nie gesehen. Erinnert mich an Lampions im China-Restaurant :dance:

 

Wie kommt das denn zustande? Hast du im Code Einstellungen, die das Trading bei bestimmten Parametern verhindern? Genetische Optimierung?

Link to comment
Share on other sites

Wow, das habe ich noch nie gesehen. Erinnert mich an Lampions im China-Restaurant :dance:

 

Wie kommt das denn zustande? Hast du im Code Einstellungen, die das Trading bei bestimmten Parametern verhindern? Genetische Optimierung?

 

:wub: :vibration: :loungelizard: :rotor: .......... 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 " :kb-smile: " Smiley als "den meinen" ausgesucht habe (... bei dem einen Quizz , das ich mal gewonnen habe) . Er paßt einfach zu gut zu mir :palomitas:

Link to comment
Share on other sites

  • 3 weeks later...

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

...... 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 :nictation:

 

Gruß

 

KB

Link to comment
Share on other sites

Dennoch , wollte Euch wenigstens befragt haben :nictation:

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.

  • Upvote 1
Link to comment
Share on other sites

  • 1 month later...

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

Link to comment
Share on other sites

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ären

  • Posis werden doppelt geschlossen und man hängt plötzlich mit einer nicht überwachten Gegenposi im Markt
  • Posis werden doppelt eingegangen
  • Teilausführungen sieht er erst gar nicht
  • uvm.

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.

  • Upvote 1
Link to comment
Share on other sites

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ären

  • Posis werden doppelt geschlossen und man hängt plötzlich mit einer nicht überwachten Gegenposi im Markt
  • Posis werden doppelt eingegangen
  • Teilausführungen sieht er erst gar nicht
  • uvm.

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?

OMG.gif

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...