Strategi Supertrend Dwiarah


Tarikh penciptaan: 2023-10-08 15:02:45 Akhirnya diubah suai: 2023-10-08 15:02:45
Salin: 0 Bilangan klik: 676
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini menilai arah trend semasa berdasarkan ke atas dan ke bawah yang dikira oleh indikator ATR, dan memberi isyarat beli dan jual. Apabila harga menembusi ke atas, ia naik, dan apabila harga menembusi ke bawah, ia turun.

Prinsip Strategi

  1. Hitung ATR, yang menunjukkan julat pergerakan harga purata
  2. Garis atas dan bawah yang dikira dengan kelipatan berdasarkan nilai ATR
  3. Mencari hubungan antara harga dan tren naik turun, menentukan arah trend
    • Apabila harga berada di atas landasan, trend untuk melihat kenaikan
    • Apabila harga berada di bawah landasan, untuk trend turun
  4. memberi isyarat beli dan jual apabila trend berubah
    • Apabila trend turun naik berubah menjadi trend menaik, memberi isyarat beli di dekat laluan atas
    • Apabila trend bullish bertukar menjadi trend bearish, memberi isyarat jual-beli di dekat downtrend
  5. Memaparkan secara visual tren naik dan turun, arah trend dan isyarat jual beli

Analisis kelebihan

  • Menggunakan indikator ATR untuk menilai trend, parameter yang sesuai boleh ditetapkan berdasarkan keluasan turun naik pasaran, menjadikan garis atas dan bawah lebih sesuai dengan trend pasaran
  • Menggunakan penembusan untuk menilai perubahan trend, anda boleh menangkap pembalikan trend tepat pada masanya
  • Menapis isyarat dengan arah trend untuk mengelakkan gangguan oleh penembusan palsu di pasaran
  • Menunjukkan isyarat naik dan turun dan jual beli dengan mudah

Analisis risiko

  • Tetapan parameter ATR terlalu besar atau terlalu kecil boleh menyebabkan harga keluar dari garis atas dan bawah dan tidak dapat mengesan trend dengan berkesan
  • Parameter perkalian terlalu besar, akan meningkatkan isyarat palsu; perkalian terlalu kecil, isyarat terlewat
  • Tidak dapat mengawal masa berbalik, boleh membuka posisi terbalik yang boleh menyebabkan kerugian
  • Keperluan untuk menggabungkan petunjuk lain dengan isyarat strategi penapisan untuk mengurangkan risiko terpedaya

Arah pengoptimuman

  • Anda boleh mempertimbangkan untuk mengoptimumkan parameter kitaran ATR secara dinamik, untuk menjadikan tren naik turun lebih sesuai dengan turun naik pasaran
  • Strategi penyesuaian parameter untuk kitaran yang berbeza untuk pelbagai jenis
  • Ia boleh digabungkan dengan petunjuk lain untuk menentukan trend, seperti pengesahan peningkatan kuantiti
  • Tetapan parameter boleh dioptimumkan melalui teknologi pembelajaran mesin

ringkaskan

Strategi ini secara keseluruhannya mewujudkan pemikiran untuk menilai trend dua arah berdasarkan indikator ATR, menerobos ke atas dan ke bawah untuk memberi isyarat beli dan jual, dan kemudian memfilterkan arah trend, untuk mengelakkan gangguan oleh isyarat palsu. Dengan penyesuaian parameter, ia boleh disesuaikan dengan keadaan pasaran yang berbeza. Tetapi ada juga risiko tertentu yang memerlukan pengoptimuman lanjut.

Kod sumber strategi
/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

TradeId = "RVG"

InitCapital = 1000
InitPosition = 1000
InitCommission = 0.075
InitPyramidMax = 1
CalcOnorderFills = true
CalcOnTick = true

//@version=4
// strategy("Supertrend RG", overlay = true,process_orders_on_close=true,commission_type=strategy.commission.percent,commission_value=InitCommission,
//  currency=currency.USD,initial_capital=InitCapital,default_qty_type=strategy.cash, default_qty_value=InitPosition, calc_on_order_fills=CalcOnorderFills, calc_on_every_tick=CalcOnTick,pyramiding=InitPyramidMax)

//
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2018, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=1, title="To Month", minval=1, maxval=12)
toYear = input(defval=2100, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")


strategy.entry(TradeId + " Long", true, when=buySignal[1] and time_cond)
strategy.entry(TradeId + " Short", false, when=sellSignal[1] and time_cond)