
Strategi berbalik mata adalah satu strategi perdagangan kuantitatif yang khas untuk mengikuti trend. Strategi ini menggunakan garis 9 dan garis 14 dalam penunjuk rata-rata bergerak untuk membina isyarat pembelian dan penjualan.
Strategi ini berdagang terutamanya berdasarkan isyarat garpu emas dan garpu mati dari dua penunjuk rata-rata bergerak. Dalam kedua-dua rata-rata bergerak, garis 9 mewakili trend jangka pendek, garis 14 mewakili trend jangka menengah, dan persimpangan mereka adalah penunjuk teknikal yang berkesan untuk menilai perubahan trend pasaran. Apabila garis trend jangka pendek dari bawah menembusi garis trend jangka menengah dan membentuk garpu emas, ia mewakili garis trend jangka pendek yang kuat dan merupakan isyarat beli; apabila ia pecah dari atas dan membentuk garpu mati, ia mewakili garis trend jangka pendek yang lemah dan merupakan isyarat jual.
Selain itu, strategi ini juga memperkenalkan garis 50 hari untuk menyaring isyarat yang menyesatkan. Hanya apabila harga lebih tinggi daripada garis 50 hari, pembelian akan berlaku; hanya apabila harga lebih rendah daripada garis 50 hari, penjualan akan berlaku. Garis 50 hari mewakili trend jangka menengah dan panjang, dan hanya apabila trend jangka menengah dan panjang bersetuju, operasi jangka pendek akan dilakukan.
Logik kod teras adalah seperti berikut:
// 买入条件:9日线上穿14日线 且 当前价格高于50日线
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// 卖出条件:9日线下穿14日线 且 当前价格低于50日线
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
Kelebihan strategi garis purata bergerak berganda adalah jelas:
Strategi ini juga mempunyai risiko:
Mengambil kira risiko, anda boleh mengoptimumkan seperti berikut:
Kaedah ini boleh dioptimumkan dalam beberapa aspek:
Strategi Garis Persamaan Bergerak Ganda adalah strategi yang menguntungkan secara keseluruhan. Ia boleh menghasilkan keuntungan secara beransur-ansur dan berterusan; pada masa yang sama, terdapat risiko tertentu yang perlu diperbaiki lagi. Kesan strategi ini dapat dipertingkatkan lagi dengan pengoptimuman parameter, kaedah hentikan kerugian, dan kombinasi strategi.
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true)
// Define the length for the SMAs
sma9Length = input(9, title="SMA 9 Length")
sma14Length = input(14, title="SMA 14 Length")
sma50Length = input(50, title="SMA 50 Length") // Add input for SMA 50
// Calculate SMAs
sma9 = ta.sma(close, sma9Length)
sma14 = ta.sma(close, sma14Length)
sma50 = ta.sma(close, sma50Length) // Calculate SMA 50
// Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
// Track the time since position was opened
var float timeElapsed = na
if (buyCondition)
timeElapsed := 0
else
timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1
// Close the buy position after 5 minutes
if (timeElapsed >= 5)
strategy.close("Buy")
// Track the time since position was opened
var float timeElapsedSell = na
if (sellCondition)
timeElapsedSell := 0
else
timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1
// Close the sell position after 5 minutes
if (timeElapsedSell >= 5)
strategy.close("Sell")
// Plot the SMAs on the chart
plot(sma9, title="SMA 9", color=color.blue)
plot(sma14, title="SMA 14", color=color.red)
plot(sma50, title="SMA 50", color=color.green) // Plot SMA 50 on the chart
// Strategy entry and exit conditions using if statements
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.entry("Sell", strategy.short)