Strategi Piramida OBV Berdasarkan Script Coinrule

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

img

Gambaran umum

Strategi ini disebut OBV Pyramid. Ini merancang posisi pembukaan berdasarkan indikator OBV dan mengadopsi pendekatan posisi piramida yang meningkat untuk melacak tren untuk keuntungan setelah muncul.

Prinsip-prinsip

Strategi ini menggunakan indikator OBV untuk menentukan arah tren. Indikator OBV menilai tren harga berdasarkan perubahan volume perdagangan, karena pergeseran volume mencerminkan sikap peserta pasar. Ketika garis OBV melintasi di atas 0, itu menunjukkan penguatan daya beli dan pembentukan tren naik. Ketika melintasi di bawah 0, itu menandakan penguatan tekanan penjualan dan tren penurunan.

Strategi ini mengkonfirmasi tren naik dengan OBV melintasi di atas 0. Ketika tren naik terbentuk, aturan posisi piramida meningkat ditetapkan, memungkinkan hingga 7 pembelian tambahan.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah menangkap tren menggunakan pendekatan piramida untuk melacak tren dan keuntungan dari mereka.

Secara khusus, keuntungan utama adalah:

  1. Penilaian tren yang akurat menggunakan OBV;
  2. Pembelian piramida untuk melacak tren untuk keuntungan;
  3. Mengambil risiko pengendalian keuntungan/stop loss;
  4. Logika yang sederhana dan jelas.

Analisis Risiko

Risiko utama berasal dari dua aspek:

  1. Sinyal OBV yang tidak akurat yang menyebabkan kesempatan yang hilang atau entri yang salah;
  2. Terlalu banyak pembelian tambahan meningkatkan risiko.

Solusi:

  1. Mengoptimalkan parameter OBV untuk memastikan akurasi;
  2. Batasi pembelian tambahan secara wajar untuk risiko yang dapat dikendalikan.

Arahan Optimasi

Arah optimasi utama:

  1. Optimisasi parameter OBV untuk akurasi yang lebih tinggi;
  2. Optimalisasi jumlah pembelian dan jumlah tambahan;
  3. Mengoptimalkan keuntungan/stop loss;
  4. Menggabungkan indikator lain untuk menghindari ketergantungan tunggal pada OBV.

Hal ini dapat membuat strategi lebih stabil, terkontrol dan dapat diperluas.

Kesimpulan

Secara keseluruhan ini adalah strategi yang sangat praktis. Ini menggunakan OBV untuk menentukan arah tren, kemudian piramida ke dalam tren untuk keuntungan. Logika sederhana dan jelas untuk backtesting mudah. Ini memiliki nilai penerapan dan dengan parameter lebih lanjut, risiko dan pengoptimalan manajemen uang, kinerja dapat meningkat lebih lanjut, menjamin penelitian 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 banyak