
Strategi trend multi-arah adalah strategi pemantauan trend yang membina keputusan berdasarkan purata bergerak indeks ((EMA) dari beberapa tempoh yang berbeza. Ia akan melakukan lebih banyak apabila harga menembusi EMA 10 hari dan garis EMA lain yang lebih lama mempunyai susunan multi-arah; dan kemudian menggunakan stop loss 8% untuk mengunci keuntungan.
Strategi ini menggunakan enam garis EMA dengan tempoh yang berbeza iaitu 10, 20, 50, 100, 150 dan 200 hari. Garis EMA ini digunakan untuk menentukan tahap kitaran pasaran semasa. Apabila garis EMA jangka pendek (seperti garis 10 hari) melintasi garis EMA yang lebih lama (seperti garis 20 hari, 50 hari), ia dianggap sebagai tahap markup di mana pasaran memasuki trend berbilang arah.
Secara khusus, strategi ini membuka lebih banyak kedudukan apabila syarat-syarat berikut dipenuhi:
Selepas membuka lebih banyak kedudukan, strategi akan menggunakan 8% trailing stop loss untuk mengunci keuntungan. Iaitu, selagi harga saham tidak jatuh lebih dari 8% daripada harga pembelian, maka ia akan terus memegang kedudukan tersebut.
Secara keseluruhan, idea utama strategi ini adalah: menggunakan EMA pelbagai syarat penyaringan untuk menentukan masuk ke dalam trend berbilang arah, dan kemudian berhenti untuk mengunci keuntungan.
Strategi trend berbilang arah ini mempunyai beberapa kelebihan utama:
Strategi ini juga mempunyai risiko yang perlu diperhatikan:
Untuk risiko di atas, kita boleh mengoptimumkan dan memperbaiki dengan menyesuaikan parameter kitaran EMA atau memperkenalkan petunjuk lain sebagai penilaian tambahan.
Mengambil kira ciri-ciri strategi ini, ia boleh dioptimumkan pada masa akan datang dalam beberapa aspek:
Strategi trend pelbagai garis rata-rata adalah strategi trend yang lebih kukuh dan boleh dipercayai secara keseluruhan. Ia menggabungkan penilaian trend dan kawalan risiko. Terdapat banyak ruang untuk penambahbaikan melalui penyesuaian parameter dan pengoptimuman algoritma.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01
longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
stopValue = close * (1 - trailStop)
math.max(stopValue, longStopPrice[1])
else
0
//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))
//OPEN
longCondition = ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
strategy.entry("BUY1", strategy.long)
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
strategy.entry("BUY2'", strategy.long)
//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
strategy.exit(id='TSP', stop=longStopPrice)