Renko Yin Yang Strategi Perdagangan Kuantum

Penulis:ChaoZhang, Tanggal: 2023-09-27 17:11:30
Tag:

Gambaran umum

Renko Yin Yang quant trading strategy adalah strategi trading jangka pendek yang didasarkan pada hubungan harga-volume intraday.

Logika Strategi

Strategi ini menghitung harga buka, tutup, tinggi dan rendah setiap hari perdagangan, dan menghasilkan batu bata Renko bersama dengan indikator ATR. Sinyal perdagangan dihasilkan ketika batu bata yin yang terbalik.

Secara khusus, strategi pertama menghitung harga buka o2 dan harga tutup c2 dari batu bata Renko. Jika o2c2, itu menunjukkan garis yin. Ketika garis yang berputar ke garis yin, sinyal jual dihasilkan. Ketika garis yin berputar ke garis yang, sinyal beli dihasilkan.

Untuk memfilter false breakout, strategi ini juga menghitung jumlah periode yang terakhir yang dan garis yin. Jika garis yang memiliki lebih banyak periode, sinyal lebih dapat diandalkan.

Keuntungan

  1. Renko bricks menyaring kebisingan pasar dan membuat sinyal perdagangan lebih jelas.

  2. Menggabungkan hubungan harga-volume menghindari risiko pecah palsu.

  3. Model DAPM sederhana dan efektif untuk perdagangan intraday.

  4. Parameter ATR yang dapat disesuaikan menyesuaikan frekuensi perdagangan.

  5. Stop loss yang dapat disesuaikan meningkatkan manajemen risiko.

Risiko

  1. Masih ada risiko kabur palsu yang tidak jelas.

  2. Pengaturan parameter Renko yang tidak benar dapat melewatkan tren atau meningkatkan frekuensi perdagangan.

  3. Stop loss yang terlalu ketat bisa dihentikan oleh pullback kecil.

Optimalisasi

  1. Pertimbangkan untuk menggabungkan indikator teknis lainnya untuk menyaring sinyal.

  2. Pertimbangkan untuk menambahkan fitur stop loss.

  3. Mengoptimalkan parameter untuk aset yang berbeda.

  4. Pertimbangkan untuk menggabungkan jangka waktu yang berbeda untuk perdagangan multi-frame.

Kesimpulan

Sebagai kesimpulan, ini adalah strategi perdagangan jangka pendek yang sangat praktis. Ini menggunakan hubungan harga-volume untuk menyaring secara efisien dan menangkap titik balik utama. Penyesuaian parameter yang tepat, manajemen risiko dan strategi stop loss dapat sangat meningkatkan stabilitas dan profitabilitasnya. Dengan optimasi dan pengujian terus-menerus, strategi ini dapat menjadi alat yang kuat bagi pedagang intraday.


/*backtest
start: 2022-09-26 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License https://creativecommons.org/licenses/by-sa/4.0/
// © dman103
strategy(title="Renko Strategy V2", shorttitle="Renko Strategy V2", overlay=true,precision=3, commission_value=0.025, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)
// Version 2.0 of my previous renko strategy using Renko calculations, this time without Tilson T3 and without using security with Renko to remove repaints!
// Seems to work nicely on cryptocurrencies on higher time frames.

//== Description ==
// Strategy gets Renko values and uses renko close and open to trigger signals.
// Base on these results the strategy triggers a long and short orders, where green is uptrending and red is downtrending.
// This Renko version is based on ATR, you can Set ATR (in settings) to adjust it.

// == Notes ==
// Supports alerts.
// Supports backtesting time ranges.
// Shorts are disabled by default (can be enabled in settings).
// Link to previous Renko strategy V1: https://www.tradingview.com/script/KeWBWLGT-Renko-Strategy-T3-V1/
//
// Stay tuned for version V3 in the future as i have an in progress prototype, Follow to get updated: https://www.tradingview.com/u/dman103/#published-scripts

// === INPUT BACKTEST RANGE ===
useDate = input(true,     title='---------------- Trade Range ----------------', type=input.bool)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2017, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2099, title = "To Year", minval = 2010)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create 

settings = input(true,     title='---------------- Settings ----------------', type=input.bool)

allow_short = input(false,title="Allow Short")
atr_len = input(10,"ATR Length")

atr = atr(atr_len)
// Thanks to renko snippet calculations from @RafaelZioni  https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/
Renko1() =>
    p1 = 0.0
    p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
    p1
Renko2() =>
    p2 = 0.0
    Br_1 = Renko1()
    p2 := Renko1() != Renko1()[1] ? Br_1[1] : nz(p2[1])
    p2

Renko3() =>
    p3 = 0.0
    p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
    p3

Renko4() =>
    open_v = 0.0
    Br_2 = Renko3()
    open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
    open_v

o2 = Renko4()
c2 = Renko1()
l2 =low
h2 = high

//=== Plotting ===

crossPlot= 0.0
if (o2 < c2)
    crossPlot :=o2
else 
    crossPlot := o2

// Used to make sure that even if o2 and c2 are equal, the result (short or long) will be based on previous trend.
bars_since_up=barssince(o2 < c2)
bars_since_down=barssince(o2 > c2)
go_long= (bars_since_up<bars_since_down) and  o2<c2
go_short = (bars_since_up>bars_since_down) and o2>c2
plotColor = go_long and  o2<c2 ? color.green : go_short and o2>c2?  color.red : color.white 
plot(crossPlot, color = plotColor, style = plot.style_circles, linewidth = 2,join=true)
changeCond = plotColor != plotColor[1]

//=== Buy/Sell ===
closeStatus =  strategy.openprofit > 0 ? "win" : "lose"
long_entry = plotColor == color.green and window()  and changeCond
long_exit_entry = plotColor == color.red //or (allow_alternative_sl and close < low_result  )
short_entry = plotColor == color.red  and window() and changeCond
short_exit_entry = plotColor == color.green   // or (allow_alternative_sl and close > high_result )

strategy.entry("long", true, when = long_entry)
strategy.close("long",when=long_exit_entry,comment=closeStatus)

if (allow_short)
    strategy.entry("short",false, when = short_entry)
strategy.close("short",when=short_exit_entry,comment=closeStatus)
//=== Alerts ===
alertcondition(go_long and changeCond , title='Renko Buy Signal', message='Renko Revered to Buy Signal')
alertcondition(go_short and changeCond , title='Renko Sell Signal', message='Renko Revered to Sell Signal')

Lebih banyak