Strategi Supertrend Dua Arah


Tanggal Pembuatan: 2023-10-08 15:02:45 Akhirnya memodifikasi: 2023-10-08 15:02:45
menyalin: 0 Jumlah klik: 676
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini menilai arah tren saat ini berdasarkan indikator ATR yang dihitung untuk naik dan turun, dan memberikan sinyal beli dan jual. Jika harga naik, maka harga naik, dan jika harga turun, maka harga turun.

Prinsip Strategi

  1. Perhitungan indikator ATR yang menunjukkan kisaran rata-rata fluktuasi harga
  2. Garis atas dan bawah yang dihitung dengan kelipatan berdasarkan nilai ATR
  3. Perbandingan harga dengan tren naik turun, menentukan arah tren
    • Ketika harga berada di atas rel, tren bullish
    • Ketika harga berada di bawah rel, untuk tren turun
  4. Memberi sinyal beli dan jual saat tren berubah
    • Ketika dari tren turun menjadi tren bullish, sinyal beli diberikan di dekat rel atas
    • Ketika tren bullish berubah menjadi bearish, sinyal jual-beli diberikan di dekat downtrend
  5. Menampilkan tren naik turun, arah tren, dan sinyal jual beli secara visual

Analisis Keunggulan

  • Menggunakan indikator ATR untuk menilai tren, parameter yang sesuai dapat diatur berdasarkan amplitudo fluktuasi pasar, sehingga garis atas dan bawah lebih sesuai dengan tren pasar
  • Menggunakan breakdown up and down track untuk menilai perubahan tren, dapat menangkap reversal tren tepat waktu
  • Filter Sinyal dengan arah tren untuk menghindari gangguan dari terobosan palsu di pasar
  • Ini adalah salah satu cara yang paling efektif untuk mendapatkan uang dari Bitcoin, dan ini adalah cara terbaik untuk mendapatkan uang dari Bitcoin.

Analisis risiko

  • ATR parameter yang terlalu besar atau terlalu kecil, dapat membuat garis atas dan bawah keluar dari harga, tidak dapat secara efektif melacak tren
  • Parameter perkalian terlalu besar, akan meningkatkan sinyal palsu; perkalian terlalu kecil, sinyal terlambat
  • Tidak tepatnya waktu reversal, kemungkinan kerugian dalam reversal
  • Perlu untuk menggabungkan indikator lain dengan sinyal strategi penyaringan untuk mengurangi risiko terjadinya lelang

Arah optimasi

  • Pertimbangan untuk mengoptimalkan parameter siklus ATR secara dinamis agar tren naik turun lebih sesuai dengan fluktuasi pasar
  • Strategi penyesuaian parameter yang dapat dipelajari untuk siklus yang berbeda dari berbagai varietas
  • Dapat digabungkan dengan indikator lain untuk menentukan tren, seperti peningkatan konfirmasi volume
  • Pengaturan parameter dapat dioptimalkan melalui teknologi pembelajaran mesin

Meringkaskan

Strategi ini secara keseluruhan mewujudkan pemikiran untuk menilai tren dua arah berdasarkan indikator ATR, menerobos rel atas dan bawah untuk memberikan sinyal jual beli, dan kemudian digabungkan dengan arah tren untuk memfilter, untuk menghindari gangguan oleh sinyal palsu. Dengan penyesuaian parameter dapat disesuaikan dengan lingkungan pasar yang berbeda. Namun, ada juga risiko tertentu yang perlu dioptimalkan lebih lanjut. Secara keseluruhan, strategi ini relatif sederhana dan praktis, layak untuk penelitian lebih lanjut dan perbaikan.

Kode 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)