Hallo,
könnte mir jemand diesem Code ein bestimmtes Trademanagement hinzufügen.
1 Wenn der Kurs den TP erreicht hat, dann soll der Stoploss auf das low der letzten 3 kerzen nachgezogen werden
2 Wenn danach der kurz weiter steigt und über dem High der letzten Kerze schließt dann soll der stoploss auf das low der letzten beiden kerzen nachgezogen werden . dies soll so lange weiter gehen, bis der trade ausgestoppt wird.
vielen Dank!
hier der code:
IF not longonmarket and (close crosses over HH) AND (HH > 0) AND (LL > LLprec) AND (LLprec > 0)and (HH > HHprec) and (HH > LL) and (HHprec > LLprec) THEN //
BUY Positionsize1 Contract at Market
SLPRICE = LL
SL = abs(close - LL)
//SET TARGET %PROFIT 100
set stop %loss 50
TP = close + (SL * 7)
SET TARGET PRICE TP
LLprec = 0
ENDIF
Hallo,
werden hier noch Fragen beantwortet??
Lieben Gruß
Die Logik funktioniert in zwei ineinandergreifenden Phasen, sobald eine Position offen ist:
- Phase 1: Sobald der Preis auf oder über das beim Einstieg berechnete TP-Niveau schließt, wird TPReached auf 1 gesetzt und der Stop sofort auf das Tief der letzten 3 Kerzen via Lowest3 verschoben.
- Phase 2: Bei jeder neuen Kerze – wenn der Schlusskurs über dem Hoch der vorherigen Kerze (high[1]) liegt – wird der Stop auf das Tief der letzten 2 Kerzen via Lowest2 angehoben. Eine Schutzprüfung (newStop > DynStop) verhindert, dass der Stop wieder nach unten rutscht. Dieser Mechanismus wiederholt sich, bis der SELL AT DynStop STOP ausgelöst wird.
// ─── Persistente Variablen zurücksetzen wenn keine Position offen ───
IF NOT LongOnMarket THEN
TPReached = 0
TrailActive = 0
DynStop = 0
ENDIF
// ─── EINSTIEG ───
IF NOT LongOnMarket AND (close crosses over HH) AND (HH > 0) AND (LL > LLprec) AND (LLprec > 0) AND (HH > HHprec) AND (HH > LL) AND (HHprec > LLprec) THEN
BUY Positionsize1 CONTRACT AT MARKET
SLPRICE = LL
SL = ABS(close - LL)
TP = close + (SL * 7)
DynStop = LL
TPReached = 0
TrailActive = 0
SET STOP PRICE DynStop
LLprec = 0
ENDIF
// ─── DYNAMISCHE STOP-VERWALTUNG WÄHREND OFFENER POSITION ───
IF LongOnMarket THEN
// Phase 1 : Preis erreicht TP → Stop auf das Tief der letzten 3 Kerzen setzen
IF TPReached = 0 AND close >= TP THEN
TPReached = 1
TrailActive = 1
DynStop = Lowest[3](low)
ENDIF
// Phase 2 : Schlusskurs über dem Hoch der vorherigen Kerze
// → Stop auf das Tief der letzten 2 Kerzen anheben
IF TrailActive = 1 AND close > high[1] THEN
newStop = Lowest[2](low)
IF newStop > DynStop THEN
DynStop = newStop
ENDIF
ENDIF
// Dynamischen Stop anwenden
IF DynStop > 0 THEN
SELL AT DynStop STOP
ENDIF
ENDIF
Wichtige Hinweise:
- Die Variable TP behält ihren Wert zwischen den Kerzen bei, da sie ausschließlich im Einstiegsblock initialisiert wird.
- Der SET TARGET PRICE TP beim Einstieg dient als visuelle Referenz auf dem Chart. Sobald Phase 1 ausgelöst wird, übernimmt der SELL AT DynStop STOP die Positionsverwaltung.
- Stellen Sie sicher, dass HH, LL, HHprec und LLprec entweder in einem separaten Indikator oder am Anfang des Systems korrekt berechnet werden, bevor dieser Block ausgeführt wird.
Hallo Nicolas,
danke leider wird das system sehr früh ausgestoppt, weil wohl der 50% SL nicht berechnet wird. bis der trade das 7:1 erreicht hat soll der trade nur dann ausgestoppt werden, wenn der trade 50% im Verlsut ist??
Danke!
Hier der gesamte Code:
//defparam calculateonlastbars=30000
ONCE HH = 0
ONCE HHprec = 0
ONCE LL = 0
ONCE LLprec = 0
if Not OnMarket Then
UseST = 0
ENDIF
cp = 3
IF TradePrice = 0 THEN
PositionSize1 = 1
ELSE
PositionSize1 = 1000 / sp //Compute PositionSize
ENDIF
once lastpoint = 0
if high[cp] >= highest[2*cp+1](high) then
PEAK = 1
else
PEAK = 0
endif
if low[cp] <= lowest[2*cp+1](low) then
TROUGH = -1
else
TROUGH = 0
endif
if PEAK = 1 then
TOPy = high[cp]
TOPx = barindex[cp]
endif
if TROUGH = -1 then
BOTy = low[cp]
BOTx = barindex[cp]
endif
if PEAK>0 and (lastpoint=-1 or lastpoint=0) then
//DRAWSEGMENT(lastX,lastY,TOPx,TOPy) COLOURED(127,255,0,1000)
//DRAWTEXT("■",TOPx,TOPy,Dialog,Bold,10) coloured(200,0,0,255)
lastpoint = 1
lastX = TOPx
lastY = TOPy
HHprec= HH
HH = TOPy
HHbar = TOPx
endif
if TROUGH<0 and (lastpoint=1 or lastpoint=0) then
//DRAWSEGMENT(lastX,lastY,BOTx,BOTy) COLOURED(255,0,0,255)
//DRAWTEXT("■",BOTx,BOTy,Dialog,Bold,10) coloured(0,200,0,255)
lastpoint = -1
lastX = BOTx
lastY = BOTy
LLprec= LL
LL = BOTy
LLbar = BOTx
endif
//TREND ATTEMPT
atr=AverageTrueRange[14](close)
if TOPy > TOPy[1] and topy<>lasttop then
//drawarrowup(barindex,low-atr/2) coloured(0,200,0)
lasttop=topy
trendup = 1
else
trendup = 0
endif
sp = close - 0
// Long
// ─── Persistente Variablen zurücksetzen wenn keine Position offen ───
IF NOT LongOnMarket THEN
TPReached = 0
TrailActive = 0
DynStop = 0
ENDIF
// ─── EINSTIEG ───
IF NOT LongOnMarket AND (close crosses over HH) AND (HH > 0) AND (LL > LLprec) AND (LLprec > 0) AND (HH > HHprec) AND (HH > LL) AND (HHprec > LLprec) THEN
BUY Positionsize1 CONTRACT AT MARKET
SLPRICE = LL
SL = ABS(close - LL)
TP = close + (SL * 7)
DynStop = LL
TPReached = 0
TrailActive = 0
SET STOP PRICE DynStop
LLprec = 0
ENDIF
// ─── DYNAMISCHE STOP-VERWALTUNG WÄHREND OFFENER POSITION ───
IF LongOnMarket THEN
// Phase 1 : Preis erreicht TP → Stop auf das Tief der letzten 3 Kerzen setzen
IF TPReached = 0 AND close >= TP THEN
TPReached = 1
TrailActive = 1
DynStop = Lowest[3](low)
ENDIF
// Phase 2 : Schlusskurs über dem Hoch der vorherigen Kerze
// → Stop auf das Tief der letzten 2 Kerzen anheben
IF TrailActive = 1 AND close > high[1] THEN
newStop = Lowest[2](low)
IF newStop > DynStop THEN
DynStop = newStop
ENDIF
ENDIF
// Dynamischen Stop anwenden
IF DynStop > 0 THEN
SELL AT DynStop STOP
ENDIF
ENDIF
Tatsächlich berücksichtigt mein Code die von Ihnen programmierte Stop-Loss-Platzierung nicht, und das aus gutem Grund: SET STOP %LOSS 50 bedeutet, dass der Kurs um 50 % fallen müsste, damit die Stop-Loss-Order ausgelöst wird! Das wird niemals passieren, es sei denn, die Weltwirtschaft bricht gerade zusammen! 🙂 Sagen Sie mir, wie ich den Code in diesem Fall anpassen kann, und ich werde ihn entsprechend modifizieren.
ok, das system soll so sein, dass der erste SL bei 50 % liegt, wenn dieser nicht erreicht wird, dann sollen die regeln gültigkeit haben, die sie codiert haben.
So wäre das richtig.
Mit ihrem Code wird der trade aber viel früher geschlossen, das versteh ich nicht. im Bild die GOOGL Aktie auf tagesbasis, der trade wurde am LL ausgestoppt??!!
DAS LL dient ja nur dazu den TP zu berechnen. mIt Tradeprice – LL * 7
Gut, hier ist die Version, bei der der anfängliche Stop-Loss bei 50 % des Einstiegspreises liegt.
// ─── Persistente Variablen zurücksetzen wenn keine Position offen ───
IF NOT LongOnMarket THEN
TPReached = 0
TrailActive = 0
DynStop = 0
ENDIF
// ─── EINSTIEG ───
IF NOT LongOnMarket AND (close crosses over HH) AND (HH > 0) AND (LL > LLprec) AND (LLprec > 0) AND (HH > HHprec) AND (HH > LL) AND (HHprec > LLprec) THEN
BUY Positionsize1 CONTRACT AT MARKET
SLPRICE = LL
SL = ABS(close - LL)
TP = close + (SL * 7)
DynStop = LL
TPReached = 0
TrailActive = 0
SET STOP %LOSS 50
LLprec = 0
ENDIF
// ─── DYNAMISCHE STOP-VERWALTUNG WÄHREND OFFENER POSITION ───
IF LongOnMarket THEN
// Phase 1 : Preis erreicht TP → Stop auf das Tief der letzten 3 Kerzen setzen
IF TPReached = 0 AND close >= TP THEN
TPReached = 1
TrailActive = 1
DynStop = Lowest[3](low)
ENDIF
// Phase 2 : Schlusskurs über dem Hoch der vorherigen Kerze
// → Stop auf das Tief der letzten 2 Kerzen anheben
IF TrailActive = 1 AND close > high[1] THEN
newStop = Lowest[2](low)
IF newStop > DynStop THEN
DynStop = newStop
ENDIF
ENDIF
// Dynamischen Stop anwenden
IF DynStop > 0 THEN
SELL AT DynStop STOP
ENDIF
ENDIF
Hallo Nicolas,
danke kannst du es noch mal überprüfen, bei mir werden die trades immer noch am LL geschlossen…
ok, hab die nachricht bekommen, das ivan geschrieben hat, aber hier ist die antwort nicht zu sehen. aber der code passt perfekt danke!!