Strategi Piramid OBV Berdasarkan Script Coinrule

Penulis:ChaoZhang, Tarikh: 2023-12-08 15:58:29
Tag:

img

Ringkasan

Strategi ini dipanggil OBV Pyramid. Ia merancang kedudukan pembukaan berdasarkan penunjuk OBV dan menggunakan pendekatan kedudukan piramida yang meningkat untuk mengesan trend untuk keuntungan setelah mereka muncul.

Prinsip-prinsip

Strategi ini menggunakan penunjuk OBV untuk menentukan arah trend. Penunjuk OBV menilai trend harga berdasarkan perubahan dalam jumlah dagangan, kerana perubahan dalam jumlah mencerminkan sikap peserta pasaran. Apabila garis OBV melintasi di atas 0, ia menunjukkan penguatan kuasa beli dan pembentukan trend menaik. Apabila melintasi di bawah 0, ia menandakan penguatan tekanan jualan dan trend penurunan.

Strategi ini mengesahkan trend menaik dengan OBV melintasi di atas 0. Apabila trend menaik terbentuk, peraturan kedudukan piramid meningkat ditetapkan, yang membolehkan sehingga 7 pembelian tambahan. Ia bertujuan untuk mendapat keuntungan daripada trend sambil menetapkan mengambil keuntungan dan menghentikan kerugian.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah menangkap trend menggunakan pendekatan piramid untuk mengesan trend dan mendapat keuntungan daripada mereka.

Khususnya, kelebihan utama adalah:

  1. Penghakiman trend yang tepat menggunakan OBV;
  2. Pembelian piramid untuk mengesan trend untuk keuntungan;
  3. Mengambil risiko kawalan keuntungan/berhenti kerugian;
  4. Logik yang mudah dan jelas.

Analisis Risiko

Risiko utama datang dari dua aspek:

  1. Isyarat OBV yang tidak tepat yang membawa kepada peluang yang hilang atau entri yang salah;
  2. Terlalu banyak pembelian tambahan meningkatkan risiko.

Penyelesaian:

  1. Mengoptimumkan parameter OBV untuk memastikan ketepatan;
  2. Mengehadkan pembelian tambahan dengan munasabah untuk risiko yang boleh dikawal.

Arahan pengoptimuman

Arah pengoptimuman utama:

  1. pengoptimuman parameter OBV untuk ketepatan yang lebih tinggi;
  2. Pengoptimuman jumlah pembelian tambahan dan jumlah;
  3. Mengoptimumkan keuntungan / berhenti kerugian;
  4. Memasukkan penunjuk lain untuk mengelakkan bergantung kepada OBV tunggal.

Ini boleh menjadikan strategi lebih stabil, boleh dikawal dan dapat diperluaskan.

Kesimpulan

Secara keseluruhan ini adalah strategi yang sangat praktikal. Ia menggunakan OBV untuk menentukan arah trend, kemudian piramid ke dalam trend untuk keuntungan. Logiknya mudah dan jelas untuk ujian belakang yang mudah. Ia mempunyai nilai penerapan dan dengan parameter lanjut, pengoptimuman pengurusan risiko dan wang, prestasi boleh bertambah baik, menjamin penyelidikan tambahan.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelZioni

//@version=4

strategy(title = " OBV Pyr", overlay = true, pyramiding=5,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 20, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
 
//
 
filter=true 
src = close


LengthOBV = input(20)

nv = change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume 
c = cum(nv) 
c_tb = c - sma(c,LengthOBV) 

// Conditions

longCond = crossover(c_tb,0)
//shortCond =crossunder(cnv_tb,0)

//

longsignal  = (v1 > v2 or filter == false ) and longCond
//shortsignal = (v1 < v2 or filter == false ) and shortCond 
 
//set take profit
 
ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick
 
//set take profit
 
LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick
 
 
////Order Placing
//
strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)
//
strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)
//
strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)
//
strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)
//
strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)
//
strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)
//
strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)
//
//
//
if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)
    


Lebih lanjut