
Strategi ini berbeda. Ketika stop loss multihead, sistem langsung kosong; ketika stop loss kosong, segera berbalik. Desain “berbalik muka lebih cepat dari buku” ini memungkinkan strategi untuk terus menangkap keuntungan dalam situasi yang bergolak. Data retrospektif menunjukkan bahwa mekanisme reverse positioning ini mengurangi waktu kosong sekitar 30% daripada strategi satu arah tradisional.
Jangan melihat angka kecil, peratusan berdasarkan rata-rata harga 30 siklus lebih ilmiah daripada perhitungan titik tetap. Stop loss 0,45% sesuai dengan fluktuasi emas sekitar 8-10 dolar, stop loss 0,60% sekitar 12-15 dolar. Lebih cerdas adalah mekanisme re-entry: Jika Anda memilih untuk masuk kembali setelah stop pertama, target stop turun menjadi 0,30%, dan stop loss mendekati 0,20%.
Ketika ATR berada di bawah 0.2 threshold, strategi memasuki periode pendinginan 10 menit, menolak semua sinyal baru. Desain ini sangat penting. Untuk memaksa transaksi dalam lingkungan fluktuasi rendah adalah mengirim uang, lebih baik menunggu. Sementara itu, ketika entitas K-line melebihi 2 kali lipat dari ATR 5 siklus, strategi juga akan dihentikan, untuk menghindari fluktuasi yang tidak normal.
4 garis K di sebelah kiri, 2 garis K di sebelah kanan, pengaturan sumbu pivot lebih radikal daripada 5-5 parameter klasik. Ini berarti bahwa strategi akan lebih cepat mengidentifikasi titik balik, tetapi juga menanggung lebih banyak risiko false breakout.
Kemungkinan 50% terbalik untuk membuka posisi setelah berhenti, 50% kemungkinan untuk masuk kembali. Desain ini menarik, tetapi juga sangat berbahaya. Keuntungan adalah kemampuan untuk melakukan reset cepat pada awal pembalikan tren, kerugian adalah kemungkinan untuk kembali dalam perombakan palsu.
Strategi ini paling ditakuti dalam dua situasi: horizontal berfluktuasi ultra-rendah dan pergerakan unilateral berfluktuasi ultra-tinggi. Yang pertama memicu mekanisme pendinginan yang sering menghentikan perdagangan, yang kedua mudah diinterupsi oleh filter K-line besar. Yang paling cocok adalah lingkungan perdagangan normal yang berfluktuasi dalam sehari di antara $ 15-30.
Meskipun ada mekanisme reversal, strategi masih dapat menghadapi kerugian berturut-turut ketika terjadi sinyal false breakout yang berkelanjutan. Terutama setelah data ekonomi penting dirilis, fluktuasi sentimen pasar dapat menyebabkan sinyal pivotal gagal.
/*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)