Berdasarkan Strategi Tren Super


Tanggal Pembuatan: 2024-02-02 11:11:48 Akhirnya memodifikasi: 2024-02-02 11:11:48
menyalin: 0 Jumlah klik: 782
1
fokus pada
1617
Pengikut

Berdasarkan Strategi Tren Super

Ringkasan

Strategi ini menggunakan indikator overtrend untuk menilai tren harga dan memasuki posisi jual atau jual ketika tren berubah. Strategi ini memungkinkan untuk menyesuaikan siklus ATR dan kelipatan ATR untuk mengoptimalkan parameter. Selain itu, strategi ini juga memberikan opsi untuk mengubah metode perhitungan ATR sehingga menghasilkan hasil yang sedikit berbeda.

Strategi ini juga dilengkapi dengan pengaturan jangka waktu retrospektif dan perdagangan hanya dalam jangka waktu tertentu. Ini sangat berguna untuk perdagangan saham dalam sehari. Ketika opsi jangka waktu diaktifkan, Anda dapat memilih untuk masuk ke posisi saat ini segera pada awal periode, atau menunggu perubahan tren dan masuk ke daftar pertama.

Strategi ini juga dapat mengatur stop loss dan stop loss berdasarkan persentase. Dalam kebanyakan kasus, tidak perlu mengatur stop loss tambahan karena stop loss berbasis ATR yang disediakan oleh overtrend itu sendiri. Oleh karena itu, hanya stop loss yang dapat diaktifkan untuk mengoptimalkan mekanisme keluar.

Akhirnya, strategi ini memiliki fitur informasi peringatan masuk dan keluar perdagangan yang dapat digunakan untuk layanan perdagangan otomatis.

Prinsip Strategi

Strategi supertrend didasarkan pada prinsip-prinsip utama berikut:

  1. Menghitung nilai ATR: Anda dapat memilih untuk menggunakan perhitungan SMA, atau Anda dapat menggunakan indikator ATR built-in. Formula versi SMA adalah:
   atr2 = sma(tr, Periods) 
  1. Perhitungan atas dan bawah rel: atas rel adalah harga dikurangi ATR kali dengan ATR kali, bawah rel adalah harga ditambah ATR kali dengan ATR kali.
   up = close - (Multiplier * atr)
   dn = close + (Multiplier * atr)
  1. Pertimbangkan hubungan antara harga dan tren naik turun, dan perhitungkan arah tren. Ketika harga naik turun tren adalah multihead, dan ketika harga turun turun tren adalah headless.
   trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend 
  1. Membuat sinyal perdagangan saat perubahan tren, seperti menghasilkan sinyal jual saat beralih dari multihead ke kosong:
   sellSignal = trend == -1 and trend[1] == 1
  1. Filter masuk atau tidak berdasarkan sinyal perdagangan dan kondisi lainnya.

  2. Tetapkan stop loss dan stop loss untuk mengunci keuntungan atau menghindari risiko.

Ini adalah poin-poin penting dari strategi supertrend, yang dikombinasikan dengan pengoptimalan parameter, dapat menghasilkan hasil perdagangan yang lebih baik.

Keunggulan Strategis

Ada beberapa keuntungan dari strategi supertrend:

  1. Indikator supertrend sendiri dapat secara efektif menilai tren harga, dan merupakan alat yang umum digunakan untuk melacak stop loss.

  2. Parameter ATR dapat disesuaikan dan dapat dioptimalkan untuk mendapatkan kombinasi parameter terbaik dari varietas yang berbeda. Metode perhitungan SMA juga menyediakan pilihan lain.

  3. Anda dapat mengatur rentang waktu yang berbeda untuk trading di periode yang berbeda.

  4. Memberikan pilihan untuk segera masuk ke daftar pertama atau menunggu sinyal, dapat dipilih sesuai dengan karakteristik varietas.

  5. Penetapan stop loss yang dibangun dapat meningkatkan ketahanan strategi terhadap risiko atau mengunci lebih banyak keuntungan.

  6. Pesan perdagangan yang disesuaikan dapat diintegrasikan ke dalam sistem perdagangan otomatis atau robot, yang memungkinkan pengawasan tanpa manusia.

Risiko Strategis

Strategi ini juga memiliki beberapa risiko:

  1. Indikator supertrend dapat menghasilkan lebih banyak sinyal palsu, yang perlu disaring dalam kombinasi dengan indikator lain.

  2. Parameter ATR yang tidak tepat dapat menyebabkan perdagangan sering atau kehilangan tren. Parameter harus dioptimalkan untuk keseimbangan optimal.

  3. Stop loss yang terlalu dekat mungkin akan membuat Anda keluar dari posisi yang menguntungkan terlalu cepat, dan stop loss yang terlalu jauh mungkin tidak dapat mengunci keuntungan yang cukup.

  4. Waktu yang tidak tepat dapat membuat Anda melewatkan waktu transaksi utama atau mengambil uang jaminan Anda.

Untuk risiko di atas, dapat diselesaikan dengan penyesuaian parameter yang sesuai atau menambahkan kondisi penyaringan, meningkatkan stabilitas strategi.

Arah optimasi strategi

Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:

  1. Cobalah berbagai parameter siklus ATR untuk menemukan titik keseimbangan yang tepat. Umumnya antara 10-20 adalah ideal.

  2. Untuk menguji parameter ATR yang berbeda, biasanya 2-5 lebih cocok, dan dapat disesuaikan secara bertahap untuk menemukan nilai optimal.

  3. Cobalah untuk menambahkan indikator lain untuk menentukan arah udara, seperti MACD, KD, dll, untuk memfilter sinyal palsu.

  4. Optimalkan parameter stop loss untuk menemukan kombinasi parameter yang optimal.

  5. Uji pengaturan jangka waktu perdagangan yang berbeda. Varietas garis pendek dalam sehari cocok untuk jangka waktu yang lebih singkat.

  6. Cobalah untuk memilih kontrak secara otomatis, dan ikuti indikator yang memiliki likuiditas tinggi atau volatilitas tinggi.

Meringkaskan

Strategi supertrend ini secara keseluruhan merupakan strategi pelacakan tren yang lebih umum dan praktis. Ini memiliki parameter yang dapat disesuaikan, karakteristik pelacakan tren yang efisien, dan ada juga risiko tertentu yang perlu dihindari. Dengan menambahkan parameter optimasi dan kondisi, strategi ini dapat dioptimalkan menjadi sistem perdagangan kuantitatif yang dapat diandalkan, untuk mendapatkan Alpha yang stabil.

Kode Sumber Strategi
/*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"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © REV0LUTI0N

//@version=4

// Strategy
strategy("Supertrend Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)
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)
enableentry = input(true, title="Enter First Trade ASAP")
waitentry = input(false, title="Wait To Enter First Trade")

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)
Long = (trend == 1 ? up : na)
buySignal = trend == 1 and trend[1] == -1

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
Short = (trend == 1 ? na : dn)
sellSignal = trend == -1 and trend[1] == 1

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if Long and time_cond and timetobuy and enableentry
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if Short and time_cond and timetobuy and enableentry
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if buySignal and time_cond and timetobuy and waitentry
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if sellSignal and time_cond and timetobuy and waitentry
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)