Strategi mengikut arah aliran berdasarkan isyarat silang OBV dan MA

OBV MA SMA
Tarikh penciptaan: 2024-04-29 13:48:58 Akhirnya diubah suai: 2024-04-29 13:48:58
Salin: 0 Bilangan klik: 802
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran berdasarkan isyarat silang OBV dan MA

Gambaran keseluruhan

Strategi ini dinamakan “OBVious MA Strategy berdasarkan OBV dan MA silang isyarat strategi trend pengesanan”, terasnya adalah menggunakan OBV ((On Balance Volume) penunjuk dengan silang bergerak rata-rata untuk menghasilkan isyarat perdagangan. OBV boleh memberikan isyarat trend terkemuka, strategi ini menggunakan OBV memecahkan bergerak rata-rata sebagai masuk dan keluar syarat untuk menangkap trend.

Prinsip Strategi

  1. Hitung nilai indikator OBV: Jika harga penutupan semasa lebih tinggi daripada garis K sebelumnya, OBV ditambah dengan jumlah transaksi semasa, jika tidak, tolak jumlah transaksi.
  2. Hitung empat purata bergerak OBV: MA dalam jangka panjang, MA dalam jangka panjang, MA dalam jangka pendek dan MA dalam jangka pendek.
  3. Menjana isyarat dagangan:
    • Apabila OBV memakai kitaran panjang untuk melakukan lebih banyak MA dan penapis arah tidak kosong, buka lebih banyak kedudukan
    • Apabila OBV melakukan lebih banyak MA dalam kitaran panjang, lebih banyak kedudukan
    • Apabila OBV melalui kitaran pendek untuk mengosongkan MA masuk dan penapis arah tidak melakukan banyak, kosongkan gudang
    • Apabila OBV melintasi kitaran pendek untuk membuat MA keluar kosong, kosongkan
  4. Pentadbiran perdagangan: Jika ada isyarat pembalikan berlaku, kedudukan yang sedia ada akan dihapuskan dan kedudukan baru akan dibuka.

Kelebihan Strategik

  1. Mengambil kesempatan daripada isyarat trend yang dipimpin oleh OBV, anda boleh membuat simpanan tepat pada masanya pada awal trend.
  2. Dengan pemisahan MA masuk dan keluar, masa masuk dan keluar boleh dioptimumkan secara bebas.
  3. Logik kodnya ringkas dan jelas, mudah difahami dan diperbaiki.
  4. Memperkenalkan penapis arah untuk mengelakkan transaksi yang kerap dan mengurangkan kos.

Risiko Strategik

  1. Kurangnya petunjuk pengesahan lain boleh menghasilkan isyarat palsu. Disyorkan untuk digunakan bersama-sama dengan petunjuk lain.
  2. Kurangnya pengurusan stop loss dan kedudukan, menghadapi risiko peningkatan kerugian tunggal. Ia boleh ditambah dengan langkah-langkah pengurusan stop loss dan wang yang munasabah.
  3. Pemilihan parameter yang tidak tepat akan mempengaruhi prestasi strategi. Perlu mengoptimumkan parameter mengikut ciri dan kitaran pasaran yang berbeza.

Arah pengoptimuman strategi

  1. Anda boleh cuba memperkenalkan penapis trend seperti arah MA, ATR dan sebagainya untuk meningkatkan kualiti isyarat.
  2. Pelbagai jenis MA seperti EMA, WMA dan lain-lain boleh digunakan pada OBV untuk menangkap trend pada kelajuan yang berbeza.
  3. Pengurusan kedudukan boleh dioptimumkan, seperti menggunakan strategi menaikkan dan menurunkan kedudukan, menaikkan kedudukan apabila kekuatan trend meningkat, menurunkan kedudukan apabila turun.
  4. Ia boleh digabungkan dengan penunjuk harga lain, seperti MVA, PVT dan lain-lain, untuk membina isyarat gabungan untuk meningkatkan kadar kemenangan.

ringkaskan

Strategi ini mempamerkan satu kaedah yang mudah untuk mengesan trend berdasarkan OBV dan MA bersilang. Kelebihan adalah kejernihan logik, mampu menangkap trend tepat pada masanya, dengan pemisahan masuk dan keluar MA dapat mengawal kedudukan dengan fleksibel. Tetapi kelemahan adalah kekurangan langkah-langkah kawalan risiko dan cara pengesahan isyarat.

Kod 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)