Strategi Penembusan Julat Benar Purata dengan Nisbah Emas

Penulis:ChaoZhang, Tarikh: 2024-02-26 15:02:26
Tag:

img

Ringkasan

Ini adalah strategi breakout yang menggunakan penunjuk ATR untuk menjana isyarat perdagangan. Strategi ini menggunakan sistem purata bergerak untuk menghasilkan isyarat kemasukan dan saluran ATR yang diperkuat berdasarkan nisbah emas untuk membina kedudukan panjang dan pendek. Ia boleh mendapat keuntungan yang ketara dalam trend dan memperoleh keuntungan kecil tetapi stabil di pasaran yang terhad.

Prinsip-prinsip

Kod ini mengira ATR dalam tempoh harga penutupan, memperkuatnya dengan 1.618 sebagai band atas dan 2.618 sebagai band bawah. Digabungkan dengan EMA, ia membentuk sistem pecah saluran Bollinger. Pergi panjang apabila harga memecahkan band bawah ke atas dan pergi pendek apabila memecahkan band atas ke bawah untuk mengikuti trend.

Kelebihan

  1. Indikator ATR secara berkesan menangkap turun naik pasaran dan membina rentang dagangan adaptif, mengelakkan overfitting yang disebabkan oleh parameter statik.
  2. Band ATR yang diperkuat dengan nisbah emas meningkatkan potensi keuntungan tanpa meningkatkan kekerapan dagangan.
  3. Sistem purata bergerak menapis bunyi jangka pendek dan bekerjasama dengan saluran ATR untuk mengenal pasti trend jangka sederhana hingga panjang.

Risiko

  1. Indikator ATR mungkin berundur semasa keadaan pasaran yang melampau.
  2. Kali ganda pembesaran yang tidak betul akan membawa kepada kekerapan perdagangan yang terlalu tinggi.
  3. Isyarat beralih dari purata bergerak jangka panjang mempunyai kelewatan.

Pengoptimuman

  1. ATR boleh menggabungkan VIX atau menyesuaikan pembesaran.
  2. Menggunakan pelbagai EMA jangka masa untuk membina sistem adaptif.
  3. Tetapkan stop loss untuk mengehadkan kerugian maksimum setiap perdagangan.

Ringkasan

Strategi ini mengintegrasikan penapisan purata bergerak, penjejakan saluran ATR dan metodologi nisbah emas, yang secara berkesan dapat mengikuti trend jangka menengah hingga panjang dengan kestabilan yang baik.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Long Only Strategy lower band buy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(52, type=input.integer, minval=1, title="Length")
mul = input(1.618, type=input.float, minval=0, title="Length")
mullow = input(2.618, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
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 = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  //strategy.entry("Sell", strategy.short, when=bear_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Lebih lanjut