
Strategi ini berbeza. Apabila terdapat banyak stop loss, sistem akan segera berbalik; apabila tiada stop loss, ia akan segera berbalik. Reka bentuk “berbalik muka lebih cepat daripada berbalik buku” ini membolehkan strategi ini terus menangkap keuntungan dalam keadaan yang bergolak. Data retrospeksi menunjukkan bahawa mekanisme membuka posisi terbalik ini mengurangkan masa kosong sekitar 30% daripada strategi satu arah tradisional.
Jangan melihat nombor kecil, peratusan berdasarkan purata harga 30 kitaran lebih saintifik daripada perancangan titik tetap. Hentian 0.45% sesuai dengan turun naik emas sekitar \( 8-10, hentian 0.60% sekitar \) 12-15. Lebih bijak adalah mekanisme masuk semula: jika anda memilih masuk semula selepas hentian pertama, sasaran hentian turun menjadi 0.30 dan hentian menutup kepada 0.20%.
Apabila ATR berada di bawah 0.2, strategi memasuki tempoh penyejukan 10 minit dan menolak semua isyarat baru. Reka bentuk ini sangat penting. Untuk memaksa perdagangan dalam keadaan turun naik yang rendah, lebih baik menunggu.
4 garis K di sebelah kiri, 2 garis K di sebelah kanan, lebih radikal daripada 5-5 klasik. Ini bermakna bahawa strategi akan mengenal pasti titik peralihan lebih awal, tetapi juga menanggung lebih banyak risiko penipuan.
Kemungkinan 50% untuk berbalik dan membuka kedudukan selepas berhenti, dan 50% untuk masuk semula. Reka bentuk ini menarik, tetapi juga berbahaya. Kelebihannya adalah kemampuan untuk melakukan pengaturcaraan cepat pada permulaan pembalikan trend, dan keburukan adalah kemungkinan untuk berbalik dalam pemecatan palsu.
Terdapat dua situasi yang paling ditakutkan oleh strategi ini: berliku yang bergelombang rendah dan berliku yang bergelombang tinggi. Yang pertama mencetuskan mekanisme penyejukan yang sering menghentikan perdagangan, yang kedua mudah disekat oleh penapis K-line yang besar. Yang paling sesuai adalah persekitaran perdagangan normal yang bergelombang dalam sehari antara $ 15-30. Dari parameter yang ditetapkan, ini lebih seperti strategi yang disesuaikan untuk kuantiti tunai emas atau masa depan.
Walaupun terdapat mekanisme pembalikan, strategi masih boleh menghadapi kerugian berturut-turut apabila terdapat isyarat pecah palsu yang berterusan. Terutama selepas data ekonomi penting dikeluarkan, turun naik sentimen pasaran boleh menyebabkan isyarat pivot 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)