Strategi mengikuti tren berdasarkan sinyal persilangan OBV dan MA

OBV MA SMA
Tanggal Pembuatan: 2024-04-29 13:48:58 Akhirnya memodifikasi: 2024-04-29 13:48:58
menyalin: 0 Jumlah klik: 802
1
fokus pada
1617
Pengikut

Strategi mengikuti tren berdasarkan sinyal persilangan OBV dan MA

Ringkasan

Strategi ini diberi nama “strategi OBVious MA berdasarkan sinyal OBV dan MA yang bersilang”, dan intinya adalah menggunakan indikator OBV (On Balance Volume) dan persilangan rata-rata bergerak untuk menghasilkan sinyal perdagangan. OBV dapat memberikan sinyal tren terkemuka, strategi ini menggunakan OBV untuk menerobos rata-rata bergerak sebagai kondisi masuk dan keluar untuk menangkap tren.

Prinsip Strategi

  1. Untuk menghitung nilai OBV, jika harga penutupan saat ini lebih tinggi dari garis K sebelumnya, OBV ditambah dengan volume transaksi saat ini, atau dikurangi dengan volume transaksi.
  2. Hitunglah empat rata-rata bergerak OBV: periode panjang dengan MA masuk lebih banyak, periode panjang dengan MA keluar lebih banyak, periode pendek dengan MA masuk lebih sedikit, dan periode pendek dengan MA keluar lebih sedikit.
  3. Menciptakan sinyal perdagangan:
    • Buka overposisi ketika OBV memakai siklus panjang untuk melakukan MA dan filter arah tidak kosong
    • Ketika OBV melakukan MA dalam periode panjang, maka posisi yang lebih besar akan dihapus.
    • Ketika OBV melewati siklus singkat untuk mengosongkan masuk MA dan filter arah tidak terlalu banyak, kosongkan gudang
    • Bila OBV melakukan MA keluar kosong dalam periode pendek, maka posisi kosong kosong
  4. Manajemen perdagangan: Jika ada sinyal mundur, maka posisi yang ada akan dihapus dan posisi baru akan dibuka.

Keunggulan Strategis

  1. Dengan memanfaatkan sinyal tren yang dipimpin oleh OBV, Anda dapat membangun gudang tepat waktu di awal tren.
  2. Dengan pemisahan MA masuk dan keluar, timing masuk dan keluar dapat dioptimalkan secara independen.
  3. Kode logikanya sederhana dan jelas, mudah dipahami dan diperbaiki.
  4. Menggunakan filter arah untuk menghindari transaksi yang terlalu sering dan mengurangi biaya.

Risiko Strategis

  1. Kurangnya indikator konfirmasi lainnya, dapat menghasilkan sinyal palsu. Disarankan untuk digunakan dalam kombinasi dengan indikator lainnya.
  2. Kurangnya pengelolaan stop loss dan posisi, menghadapi risiko peningkatan kerugian tunggal. Anda dapat menambahkan langkah-langkah pengelolaan stop loss dan uang yang masuk akal.
  3. Pilihan parameter yang tidak tepat dapat mempengaruhi kinerja strategi. Optimasi parameter perlu dilakukan sesuai dengan karakteristik dan siklus pasar yang berbeda.

Arah optimasi strategi

  1. Anda dapat mencoba untuk memperkenalkan filter tren, seperti arah MA, ATR, dan lain-lain, untuk meningkatkan kualitas sinyal.
  2. Ada berbagai jenis MA yang dapat digunakan pada OBV, seperti EMA, WMA, dan lain-lain, untuk menangkap tren kecepatan yang berbeda.
  3. Manajemen posisi dapat dioptimalkan, misalnya dengan menggunakan strategi menaikkan dan menurunkan posisi, menaikkan posisi ketika intensitas tren meningkat, dan menurunkan posisi ketika turun.
  4. Dapat dikombinasikan dengan indikator lain, seperti MVA, PVT, dan lain-lain, untuk membangun sinyal gabungan untuk meningkatkan tingkat kemenangan.

Meringkaskan

Strategi ini menampilkan metode pelacakan tren sederhana berdasarkan OBV dan MA yang bersilang. Keunggulan adalah kejernihan logis, kemampuan untuk menangkap tren tepat waktu, dan kontrol posisi yang fleksibel melalui pemisahan masuk dan keluar dari MA. Namun, kekurangan adalah kurangnya langkah-langkah pengendalian risiko dan sarana konfirmasi sinyal.

Kode Sumber Strategi
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ThousandX_Trader

//@version=5
strategy(title="OBVious MA Strategy [1000X]", overlay=false, 
         initial_capital=10000, margin_long=0.1, margin_short=0.1,
         default_qty_type=strategy.percent_of_equity, default_qty_value=100,
         slippage=1, commission_type=strategy.commission.percent, commission_value=0.1)

// Direction Input ///
tradeDirection = input.string("long", title="Direction", options=["long", "short"], group = "Direction Filter")

    ///////////////////////////////////////
   //  1000X OBV MA INDICATOR           //
  ///////////////////////////////////////

// OBV Trend Length Inputs //
long_entry_length = input(190, title="Long Entry MA Length", group = "Moving Average Settings")
long_exit_length = input(202, title="Long Exit MA Length", group = "Moving Average Settings")
short_entry_length = input(395, title="Short MA Entry Length", group = "Moving Average Settings")
short_exit_length = input(300, title="Short Exit MA Length", group = "Moving Average Settings")

// OBV Calculation
obv = ta.cum(ta.change(close) >= 0 ? volume : -volume)

// Calculate OBV Moving Averages
obv_ma_long_entry = ta.sma(obv, long_entry_length)
obv_ma_long_exit = ta.sma(obv, long_exit_length)
obv_ma_short_entry = ta.sma(obv, short_entry_length)
obv_ma_short_exit = ta.sma(obv, short_exit_length)

   ///////////////////////////////////////
  //         STRATEGY RULES            //
 ///////////////////////////////////////

longCondition = ta.crossover(obv, obv_ma_long_entry) and tradeDirection != "short" and strategy.position_size <= 0
longExitCondition = ta.crossunder(obv, obv_ma_long_exit)
shortCondition = ta.crossunder(obv, obv_ma_short_entry) and tradeDirection != "long" and strategy.position_size >= 0
shortExitCondition = ta.crossover(obv, obv_ma_short_exit)

  ///////////////////////////////////////
 //         ORDER EXECUTION           //
///////////////////////////////////////

// Close opposite trades before entering new ones
if (longCondition and strategy.position_size < 0)
    strategy.close("Short Entry")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long Entry")

// Enter new trades
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

// Exit conditions
if (longExitCondition)
    strategy.close("Long Entry")

if (shortExitCondition)
    strategy.close("Short Entry")

  ///////////////////////////////////////
 //            PLOTTING               //
///////////////////////////////////////

// Plot OBV line with specified color
plot(obv, title="OBV", color=color.new(#2962FF, 0), linewidth=1)

// Conditionally plot Long MAs with specified colors based on Direction Filter
plot(tradeDirection == "long" ? obv_ma_long_entry : na, title="Long Entry MA", color=color.new(color.rgb(2, 130, 228), 0), linewidth=1)
plot(tradeDirection == "long" ? obv_ma_long_exit : na, title="Long Exit MA", color=color.new(color.rgb(106, 168, 209), 0), linewidth=1)

// Conditionally plot Short MAs with specified colors based on Direction Filter
plot(tradeDirection == "short" ? obv_ma_short_entry : na, title="Short Entry MA", color=color.new(color.rgb(163, 2, 227), 0), linewidth=1)
plot(tradeDirection == "short" ? obv_ma_short_exit : na, title="Short Exit MA", color=color.new(color.rgb(192, 119, 205), 0), linewidth=1)