
Strategi ini diberi nama strategi penembusan dua garis ekuivalen dari strategi perdagangan kuantitatif. Gagasan utama dari strategi ini adalah menggunakan sinyal silang dari rata-rata bergerak cepat dan rata-rata bergerak lambat untuk menilai tren harga dan kemudian membuat keputusan membeli dan menjual.
Indikator inti dari strategi ini adalah rata-rata bergerak cepat dan rata-rata bergerak lambat. Strategi ini menggunakan hubungan silang antara rata-rata bergerak cepat dan rata-rata bergerak lambat untuk menilai tren harga dan dengan demikian membuat keputusan membeli dan menjual.
Secara khusus, parameter rata-rata bergerak cepat disetel ke 24 siklus, parameter rata-rata bergerak lambat disetel ke 100 siklus. Ketika rata-rata bergerak cepat melintasi rata-rata bergerak lambat dari bawah, harga masuk ke tren naik, maka strategi akan mengirim sinyal beli. Ketika rata-rata bergerak cepat melintasi rata-rata bergerak lambat dari atas, harga masuk ke tren turun, maka strategi akan mengirim sinyal jual.
Dengan demikian, dengan menilai arah persilangan rata-rata bergerak cepat dan lambat, perubahan tren harga dapat ditangkap secara efektif dan membantu membuat keputusan pembelian dan penjualan.
Strategi ini memiliki keuntungan sebagai berikut:
Prinsipnya sederhana, mudah dipahami, dan mudah diterapkan. Garis sejajar ganda adalah salah satu indikator teknis paling dasar, mudah dipahami dan diterapkan.
Parameter dapat disesuaikan, sangat fleksibel. Parameter untuk rata-rata bergerak cepat dan rata-rata bergerak lambat dapat disesuaikan dengan situasi nyata, sehingga strategi lebih fleksibel.
Kemampuan untuk menangkap perubahan tren yang kuat. Dua persimpangan yang sama sering digunakan untuk menangkap titik-titik perubahan harga dari konsolidasi ke tren.
Dapat secara efektif memfilter getaran, mengurangi perdagangan yang tidak valid. Garis ganda dapat digunakan untuk mengidentifikasi zona getaran, untuk menghindari pembukaan posisi berulang dalam getaran.
Strategi ini juga memiliki beberapa risiko:
Sinyal crossover bisa tertunda. Sebagai indikator trend tracking, crossover sering tertunda untuk periode tertentu. Hal ini dapat menyebabkan tingkat biaya kesempatan.
Dalam pasar yang bergolak, sinyal palsu dapat dihasilkan. Skenario yang paling baik untuk kinerja biner adalah ketika ada tren harga yang jelas. Namun, dalam situasi yang bergolak, sinyal palsu dapat dihasilkan secara teratur.
Parameter yang tidak tepat dapat mempengaruhi kinerja strategi. Jika parameter rata-rata yang tidak tepat diatur, itu akan mempengaruhi sensitivitas menangkap tren silang.
Solusi yang sesuai:
Mempersingkat siklus rata-rata dengan tepat untuk meningkatkan sensitivitas sinyal silang.
Menambahkan indikator volatilitas atau volume transaksi untuk memfilter, mengurangi transaksi yang tidak valid di bawah pasar yang bergoyang.
Optimasi parameter, mencari kombinasi parameter yang optimal. Menggabungkan metode seperti pembelajaran mesin untuk mengoptimalkan secara otomatis.
Strategi ini dapat dioptimalkan dengan:
Menggunakan indikator teknologi bergerak yang lebih canggih, seperti rata-rata bergerak linear berbobot, untuk menggantikan rata-rata bergerak sederhana, meningkatkan kemampuan untuk melacak dan memprediksi indikator.
Menambahkan lebih banyak indikator tambahan, seperti indikator volume transaksi, indikator volatilitas, dan lain-lain untuk penyaringan gabungan, mengurangi sinyal tidak efektif.
Optimalkan parameter rata-rata lambat dan cepat, meningkatkan fleksibilitas parameter. Metode pembelajaran mesin, optimalisasi acak dan lain-lain dapat digunakan untuk menemukan parameter optimal.
Strategi ini dapat dirancang stop loss dan stop loss bergerak untuk mengendalikan kerugian tunggal setelah masuk. Selain itu, teknik pengoptimalan keuntungan untuk memastikan mendapatkan keuntungan yang cukup.
Teknologi baru seperti pembelajaran mendalam dapat digunakan untuk mengidentifikasi pola harga yang lebih kompleks dan membantu keputusan pembelian dan penjualan untuk mendapatkan hasil yang lebih baik.
Strategi ini secara keseluruhan lebih klasik dan sederhana, berdasarkan indikator dua garis rata untuk menilai tren harga, untuk mengeksplorasi peluang perubahan harga dari getaran ke tren. Kelebihan adalah ide yang jelas, sederhana dan praktis, cocok untuk melacak perilaku trendi. Namun ada juga beberapa kelemahan seperti sinyal lag, yang perlu meningkatkan stabilitas strategi dan efisiensi perdagangan melalui penyesuaian dan optimalisasi parameter.
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=100000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
//OBV
src = close
obv = ta.cum(math.sign(ta.change(src)) * volume)
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 20, minval = 1, maxval = 100, group="Smoothing")
Limit = input.float(title = "Limit", defval = 1, minval = 0.1, maxval = 10, group="Smoothing")
smoothingLine_ma = ma(obv,smoothingLength, typeMA)
obv_diff = (obv-smoothingLine_ma)*100/obv
//PVT
var cumVolp = 0.
cumVolp += nz(volume)
if barstate.islast and cumVolp == 0
runtime.error("No volume is provided by the data vendor.")
srcp = close
vt = ta.cum(ta.change(srcp)/srcp[1]*volume)
smoothingLine_map = ma(vt,smoothingLength, typeMA)
pvt_diff = (vt-smoothingLine_map)*100/vt
// plot(obv_diff+close+100 ,title="OBV_DIFF", color = color.rgb(255, 118, 54))
// plot(pvt_diff+close+80 ,title="PVT_DIFF", color = color.rgb(223, 61, 255))
indicator = (pvt_diff+obv_diff)/2
goLongCondition1 = ta.crossover(indicator,Limit)
timePeriod = time >= timestamp(syminfo.timezone, 2023,1, 1, 0, 0) // Backtesting Time
notInTrade = strategy.position_size <= 0
if goLongCondition1 and timePeriod and notInTrade
stopLoss = low * 0.99 // -2%
takeProfit = high * 1.05 // +5%
strategy.entry('long', strategy.long )
strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 100)
// goLongCondition1 = ta.crossover(fastEMA, slowEMA)
// timePeriod = time >= timestamp(syminfo.timezone, 2018, 12, 15, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
// stopLoss = low * 0.97
// takeProfit = high * 1.12
// strategy.entry('long', strategy.long)
// strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// plot(fastEMA, color=color.new(color.blue, 0))
// plot(slowEMA, color=color.new(color.yellow, 0))