
Diese Strategie unterscheidet sich von der herkömmlichen Achse-Strategie, bei der ein Stop-Loss mit mehreren Köpfen erfolgt. Bei einem Stop-Loss mit mehreren Köpfen wird das System sofort umgedreht; bei einem Stop-Loss mit leeren Köpfen wird sofort umgedreht.
Die Zahlen sind klein, und die Prozentsätze, die auf den 30-Zyklus-Durchschnittspreisen basieren, sind viel wissenschaftlicher als die Fixpunkte. Ein Stop-Loss von 0,45% entspricht einer Schwankung von etwa 8-10 US-Dollar, ein Stop-Loss von 0,60% etwa 12-15 US-Dollar. Ein intelligenter Rücktrittsmechanismus: Wenn nach dem ersten Stop-Loss ein Rücktritt gewählt wird, wird das Stop-Loss-Ziel auf 0,30 gesenkt, und der Stop-Loss wird auf 0,20% geschlossen.
Wenn der ATR unterhalb der 0.2-Trenche liegt, geht die Strategie in eine 10-minütige Abkühlphase und lehnt alle neuen Signale ab. Diese Konstruktion ist von entscheidender Bedeutung. In einer Umgebung mit geringer Volatilität ist es besser, zu warten, als den Handel zu erzwingen.
Die 4 K-Linien auf der linken und 2 K-Linien auf der rechten Seite sind in einer Axial-Einstellung radikaler eingestellt als die klassischen 5-5-Parameter. Dies bedeutet, dass die Strategie die Wendepunkte früher erkennt, aber auch ein höheres Risiko für falsche Durchbrüche birgt. Die Kombination funktioniert besser in einem Trend.
Nach dem Stopp gibt es eine 50%ige Wahrscheinlichkeit, dass die Position umgedreht wird und wieder eingegeben wird. Das Design ist sehr interessant, aber auch sehr gefährlich. Der Vorteil ist, dass man in der Anfangsphase des Trendwechsels schnell umschalten kann, der Nachteil ist, dass man in einem falschen Durchbruch zurückschlagen kann.
Die Strategie fürchtet sich vor zwei Situationen: Einseitige Verlaufsszenarien mit extrem niedrigen und extrem hohen Schwankungen. Die erstere löst häufige Handelsunterbrechungen durch den Kühlmechanismus aus, die letztere wird leicht von einem großen K-Linie-Filter blockiert. Die am besten geeignete Strategie ist die normale Handelsumgebung, die innerhalb eines Tages zwischen 15 und 30 US-Dollar schwankt.
Trotz des Umkehrmechanismus kann die Strategie bei anhaltenden Falsch-Breakout-Signalen mit fortgesetzten Verlusten konfrontiert werden. Besonders vor und nach der Veröffentlichung wichtiger Wirtschaftsdaten können Marktstimmungsschwankungen dazu führen, dass die Pivot-Signale ausfallen. Es wird empfohlen, die einzelnen Positionen streng zu kontrollieren und die Strategie vor wichtigen Ereignissen manuell auszusetzen.
/*backtest
start: 2024-09-24 00:00:00
end: 2025-09-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=6
strategy("Gold By Ann v.2", overlay=true)
// --- Inputs ---
leftBars = input.int(4, "Pivot Lookback Left")
rightBars = input.int(2, "Pivot Lookback Right")
atrLength = input.int(14, "ATR Length")
atrMult = input.float(2.0, "ATR Multiplier")
atrThreshold = input.float(0.2, "ATR Threshold")
cooldownMinutes = input.int(10, "Cooldown Minutes")
// --- Pivot Calculation ---
ph = ta.pivothigh(leftBars, rightBars)
pl = ta.pivotlow(leftBars, rightBars)
ma = ta.sma(close, 50)
bullishTrend = close > ma
bearishTrend = close < ma
// --- Volatility (ATR) and Cooldown ---
atrValue = ta.atr(atrLength)
var float cooldownEnd = na
if atrValue < atrThreshold and na(cooldownEnd)
cooldownEnd := timenow + cooldownMinutes * 60 * 1000 // ms
if not na(cooldownEnd) and timenow > cooldownEnd
cooldownEnd := na
inCooldown = not na(cooldownEnd)
// --- Tall candle filter ---
rangeBar = high - low
isTall = rangeBar > ta.atr(5) * atrMult
// --- SL & TP based on % of 30-bar close ---
baseClose = ta.sma(close, 30) // 30-bar average close
slPercent = 0.0045 // 0.45%
tpPercent = 0.0060 // 0.60%
tpReEntryPercent = 0.006 // 0.30% (smaller TP after re-entry)
stopReEntryPercent = 0.005 // -0.20%
stopReEntryValue = baseClose * stopReEntryPercent
slValue = baseClose * slPercent
tpValue = baseClose * tpPercent
tpReValue = baseClose * tpReEntryPercent
// --- Re-entry state flag ---
var bool isReEntry = false
// --- Trade Logic (Only if NOT in cooldown) ---
if not inCooldown and not isTall
if strategy.position_size == 0
if not na(pl)
strategy.entry("PivExtLE", strategy.long, comment="Long")
isReEntry := false
if not na(ph)
strategy.entry("PivExtSE", strategy.short, comment="Short")
isReEntry := false
// =====================================================
// --- Take Profit / Stop Loss with auto-flip ---
// =====================================================
// LONG
if strategy.position_size > 0 and not isTall
entryPrice = strategy.position_avg_price
tpLevel = entryPrice + (isReEntry ? tpReValue : tpValue)
// Re-entry extra stop condition
if isReEntry and close <= entryPrice - stopReEntryValue
strategy.close("PivExtLE", comment="Stop Re-Entry Long (-0.20%)")
isReEntry := false
else if close >= tpLevel
strategy.close("PivExtLE", comment=isReEntry ? "TP Long (Re-Entry)" : "TP Long")
randChoice = (bar_index * 9301 + 49297) % 2
if randChoice == 0
strategy.entry("PivExtSE", strategy.short, comment="Flip to Short (TP)")
isReEntry := false
else
strategy.entry("PivExtLE", strategy.long, comment="Re-Enter Long (TP)")
isReEntry := true
else if close <= entryPrice - slValue
strategy.close("PivExtLE", comment="SL Long")
strategy.entry("PivExtSE", strategy.short, comment="Flip to Short (SL)")
isReEntry := false
// SHORT
if strategy.position_size < 0 and not isTall
entryPrice = strategy.position_avg_price
tpLevel = entryPrice - (isReEntry ? tpReValue : tpValue)
// Re-entry extra stop condition
if isReEntry and close >= entryPrice + stopReEntryValue
strategy.close("PivExtSE", comment="Stop Re-Entry Short (-0.20%)")
isReEntry := false
else if close <= tpLevel
strategy.close("PivExtSE", comment=isReEntry ? "TP Short (Re-Entry)" : "TP Short")
strategy.entry("PivExtLE", strategy.long, comment="Flip to Long (TP)")
isReEntry := true
else if close >= entryPrice + slValue
strategy.close("PivExtSE", comment="SL Short")
strategy.entry("PivExtLE", strategy.long, comment="Flip to Long (SL)")
isReEntry := false
// --- Plot reference ---
plot(slValue, title="SL Value (0.45% of 30-bar Close)", color=color.red)
plot(tpValue, title="TP Value (0.60% of 30-bar Close)", color=color.green)
plot(tpReValue, title="TP Value (Re-Entry 0.30%)", color=color.orange)