Klon Yin Yang Strategi Perdagangan Kuantitatif


Tarikh penciptaan: 2023-09-27 17:11:30 Akhirnya diubah suai: 2023-09-27 17:11:30
Salin: 0 Bilangan klik: 733
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi perdagangan kuantitatif klon adalah strategi perdagangan garis pendek berdasarkan hubungan kuantiti dan harga dalam sehari. Strategi ini menggunakan maklumat arah positif dan negatif perdagangan saham dalam sehari, digabungkan dengan isyarat pengesahan kuantiti, untuk melakukan operasi garis pendek yang berisiko rendah.

Prinsip Strategi

Strategi ini menghasilkan blok Renko dengan mengira harga pembukaan, penutupan, tertinggi, dan terendah setiap hari saham, digabungkan dengan penunjuk ATR.

Secara khusus, strategi pertama mengira harga pembukaan Renko o2 dan harga penutupan c2 . Jika o2c2, menandakan garis putar. Apabila garis putar bertukar menjadi garis putar menghasilkan isyarat jual, apabila garis putar bertukar menjadi garis putar menghasilkan isyarat beli.

Untuk menyaring penembusan palsu, strategi ini juga mengkaji jumlah kitaran garis putar dan garis putar sebelumnya, dan jika jumlah kitaran garis putar lebih banyak, isyaratnya lebih dipercayai. Selain itu, strategi ini juga menetapkan logik stop loss setelah membeli dan menjual.

Kelebihan Strategik

  1. Dengan menggunakan blok Renko, bunyi pasaran disaring dan isyarat dagangan lebih jelas.

  2. Hubungan tenaga kuantitatif, mengelakkan risiko penembusan palsu

  3. Model DAPM mudah dan berkesan, sesuai untuk operasi garis pendek dalam sehari.

  4. Parameter ATR boleh disesuaikan untuk menyesuaikan frekuensi transaksi.

  5. Strategi Henti Kerosakan yang boleh disesuaikan untuk mengoptimumkan pengurusan risiko.

Analisis risiko

  1. Namun begitu, terdapat risiko penembusan palsu yang tidak menonjol.

  2. Tetapan parameter Renko yang tidak betul boleh menyebabkan kehilangan trend atau meningkatkan frekuensi perdagangan.

  3. Penetapan stop loss yang terlalu kecil boleh menyebabkan kerugian kecil yang dihentikan oleh rebound stop loss.

Arah pengoptimuman

  1. Anda boleh mempertimbangkan untuk memfilterkan isyarat dengan menggunakan penunjuk teknikal lain.

  2. Anda boleh mempertimbangkan untuk menambah fungsi Stop Loss Mobile atau Stop Loss Tracking.

  3. Uji optimasi boleh dilakukan untuk parameter varieti yang berbeza.

  4. Anda boleh mempertimbangkan kombinasi tempoh masa yang berbeza untuk berdagang dalam pelbagai bingkai masa.

ringkaskan

Strategi ini secara keseluruhan adalah strategi perdagangan garis pendek yang sangat praktikal. Ia menggunakan hubungan kuantiti dan harga untuk penapisan yang cekap, yang dapat menangkap harga garis pendek ke atas dan ke bawah.

Kod sumber strategi
/*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')