
Strategi ini adalah sistem perdagangan lengkap yang menggabungkan analisis beberapa frame waktu, pelacakan tren, dan manajemen posisi dinamis. Strategi ini menggunakan EMA sebagai indikator tren utama, MACD sebagai indikator konfirmasi sekunder, serta ATR untuk pengendalian risiko dan pengaturan stop loss. Strategi ini unik dalam memfilter sinyal perdagangan melalui analisis kuantitatif harga pada frame waktu 8 jam dan secara dinamis menyesuaikan skala kepemilikan posisi sesuai dengan kekuatan tren.
Strategi ini menggunakan konsep desain bertingkat, yang terdiri dari komponen inti sebagai berikut:
Strategi ini membangun sistem perdagangan yang lengkap untuk melacak tren melalui analisis beberapa kerangka waktu dan manajemen posisi yang dinamis. Keunggulan strategi ini terletak pada pemikiran desain yang sistematis dan mekanisme kontrol risiko yang baik, tetapi juga perlu memperhatikan masalah adaptasi lingkungan pasar dan pengoptimalan parameter. Dengan arah optimasi yang disarankan, strategi dapat meningkatkan stabilitas dan kemampuan penghasilannya.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy('Optimized Trend Strategy', overlay = true, initial_capital = 10000, default_qty_type = strategy.cash, default_qty_value = 50, commission_value = 0.1)
// 🟢 核心指標
ema7 = ta.ema(close, 7)
ema90 = ta.ema(close, 90)
atr = ta.atr(14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// 🟢 8 小時多時間框架確認
h8Close = request.security(syminfo.tickerid, '480', close)
h8Volume = request.security(syminfo.tickerid, '480', volume)
h8Ema7 = ta.ema(h8Close, 7)
h8Signal = h8Close > h8Ema7 and h8Volume > ta.sma(h8Volume, 50)
// 🟢 動態風控
stopLoss = close - 1.5 * atr
takeProfit = close + 3 * atr
// 🟢 交易信號
longCondition = close > ema7 and ema7 > ema90 and ta.crossover(macdLine, signalLine) and h8Signal
shortCondition = close < ema7 and ema7 < ema90 and ta.crossunder(macdLine, signalLine) and h8Signal
// 🟢 倉位管理(根據趨勢強度)
trendStrength = (ema7 - ema90) / (atr / close)
var float positionSize = na
if trendStrength > 2
positionSize := strategy.equity * 0.7 / close
positionSize
else if trendStrength < 0.5
positionSize := strategy.equity * 0.3 / close
positionSize
else
positionSize := strategy.equity * 0.5 / close
positionSize
// 🟢 訂單執行
if longCondition
strategy.entry('Long', strategy.long, qty = positionSize)
strategy.exit('Long Exit', from_entry = 'Long', stop = stopLoss, limit = takeProfit)
if shortCondition
strategy.entry('Short', strategy.short, qty = positionSize)
strategy.exit('Short Exit', from_entry = 'Short', stop = stopLoss, limit = takeProfit)