Strategi penyeberangan dua garis sejajar adalah strategi perdagangan yang mengikuti trend klasik. Strategi ini menggunakan dua purata bergerak, satu adalah purata bergerak cepat dan satu lagi adalah purata bergerak perlahan. Apabila purata bergerak cepat melintasi rata-rata bergerak perlahan dari atas ke bawah, ia dipanggil “perseberangan emas”, yang menunjukkan kemungkinan pembentukan trend naik, di mana lebih banyak kedudukan dibuka. Apabila purata bergerak cepat melintasi rata-rata bergerak perlahan dari atas ke bawah, ia dipanggil “perseberangan mati”, yang menunjukkan kemungkinan pembentukan trend menurun, di mana kedudukan dibuka kosong.
Inti strategi ini adalah menggunakan ciri-ciri trend dan isyarat persilangan rata-rata bergerak untuk menentukan arah trend dan masa untuk membuka kedudukan. Pertama, dengan parameter yang ditetapkan untuk jangka masa rata-rata bergerak cepat (default 50) dan rata-rata bergerak perlahan (default 200), dan pilihan untuk menggunakan SMA atau EMA.
Strategi persilangan dua garis sejajar adalah strategi penjejakan trend klasik yang mudah, untuk menilai arah trend dan masa pembukaan kedudukan dengan persilangan dua rata-rata bergerak yang berbeza, sesuai untuk menangkap trend jangka panjang. Tetapi parameter tetap mungkin tidak stabil dalam keadaan pasaran yang berubah-ubah, dan perlu pengoptimuman lebih lanjut, seperti parameter pengoptimuman, penambahbaikan stop loss, pengenalan isyarat dan lain-lain, untuk menjadi strategi perdagangan yang agak stabil.
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)
//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length")
maSlowLength = input(200, title="Quick MA Length")
useSma = input(true, title="Use SMA? If false, EMA is used.")
maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)
stop_loss_percentage = input(2.0, title="Stop Loss (%)")
var float longStopLevel = na
var float shortStopLevel = na
bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross = ta.crossunder(maQuick, maSlow)
//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------
if(strategy.position_size == 0)
// Golden cross, enter a long position
if(isGoldenCross)
strategy.entry("Buy", strategy.long)
longStopLevel := close - close * stop_loss_percentage/100.0
strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
// Death cross, enter short position
else if(isDeathCross)
strategy.entry("Sell", strategy.short)
shortStopLevel := close + close * stop_loss_percentage/100.0
strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)
//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
// Close long position on death cross
if(strategy.position_size > 0 and isDeathCross)
strategy.close("Buy")
// Close short position on golden cross
else if(strategy.position_size < 0 and isGoldenCross)
strategy.close("Sell")
//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)