Berdasarkan Strategi Super Trend


Tarikh penciptaan: 2024-02-02 11:11:48 Akhirnya diubah suai: 2024-02-02 11:11:48
Salin: 0 Bilangan klik: 782
1
fokus pada
1617
Pengikut

Berdasarkan Strategi Super Trend

Gambaran keseluruhan

Strategi ini menggunakan indikator hypertrend untuk menilai trend harga dan memasuki kedudukan jual atau jual apabila trend berubah. Strategi ini membolehkan menyesuaikan kitaran ATR dan kelipatan ATR untuk mengoptimumkan parameter. Selain itu, strategi ini juga memberikan pilihan untuk mengubah kaedah pengiraan ATR, yang menghasilkan hasil yang sedikit berbeza.

Strategi ini juga mempunyai ciri-ciri yang dibina untuk menetapkan julat tarikh pengembalian dan hanya berdagang dalam tempoh masa tertentu. Ini sangat berguna untuk saham perdagangan dalam hari. Apabila pilihan julat masa diaktifkan, anda boleh memilih untuk memasuki kedudukan semasa dengan segera pada permulaan tempoh masa, atau menunggu perubahan trend dan kemudian memasuki pesanan pertama.

Strategi ini juga boleh menetapkan stop loss dan penangguhan berdasarkan peratusan. Dalam kebanyakan kes, tidak diperlukan penangguhan tambahan kerana stop loss berasaskan ATR yang disediakan oleh overtrend itu sendiri. Oleh itu, anda boleh mengaktifkan hanya stop loss untuk mengoptimumkan mekanisme keluar.

Akhirnya, strategi ini mempunyai ciri-ciri maklumat isyarat kemasukan dan keluar perdagangan yang disesuaikan, yang boleh digunakan untuk perkhidmatan perdagangan automatik.

Prinsip Strategi

Strategi hypertrend beroperasi berdasarkan prinsip utama berikut:

  1. Mengira nilai ATR: anda boleh memilih untuk menggunakan pengiraan SMA, atau anda boleh menggunakan pengiraan ATR yang terbina dalam. Formula versi SMA adalah:
   atr2 = sma(tr, Periods) 
  1. Hitung atas dan bawah landasan: atas landasan sebagai harga tolak ATR kali ganda dengan ATR kali ganda, bawah landasan sebagai harga tambah ATR kali ganda dengan ATR kali ganda.
   up = close - (Multiplier * atr)
   dn = close + (Multiplier * atr)
  1. Menilai hubungan antara harga dengan tren atas dan bawah, dan mengira arah trend. Apabila harga naik melalui tren bawah, trendnya bermulut, dan apabila harga masuk melalui tren bawah, trendnya kosong.
   trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend 
  1. Ia menghasilkan isyarat dagangan semasa peralihan trend, seperti isyarat jual apabila beralih dari multihead ke kosong:
   sellSignal = trend == -1 and trend[1] == 1
  1. Penyaringan berdasarkan isyarat dagangan dan syarat-syarat lain.

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

Ini adalah perkara penting dalam strategi hypertrend, yang digabungkan dengan pengoptimuman parameter, untuk mendapatkan hasil dagangan yang lebih baik.

Kelebihan Strategik

Strategi ini mempunyai beberapa kelebihan:

  1. Indikator hypertrend sendiri adalah alat yang digunakan untuk mengesan trend harga.

  2. Parameter ATR boleh disesuaikan dan dapat dioptimumkan untuk mendapatkan kombinasi parameter terbaik untuk pelbagai jenis. Kaedah pengiraan SMA juga menyediakan pilihan lain.

  3. Julat masa yang boleh disesuaikan untuk pelacakan dan perdagangan cakera untuk memenuhi keperluan masa perdagangan yang berbeza.

  4. Ia menawarkan pilihan untuk segera masuk ke senarai pertama atau menunggu isyarat, yang boleh dipilih mengikut ciri-ciri varieti.

  5. Tetapan stop loss terbina dalam dapat meningkatkan ketahanan strategi terhadap risiko atau mengunci lebih banyak keuntungan.

  6. Maklumat isyarat dagangan yang disesuaikan, boleh diintegrasikan ke dalam sistem perdagangan automatik atau robot, untuk mewujudkan pengawal tanpa manusia.

Risiko Strategik

Strategi ini juga mempunyai risiko:

  1. Penunjuk Super Trend mungkin menghasilkan lebih banyak isyarat palsu dan perlu disaring dengan penunjuk lain.

  2. Parameter ATR yang tidak betul boleh menyebabkan perdagangan yang kerap atau kehilangan trend. Parameter perlu dioptimumkan untuk keseimbangan terbaik.

  3. Terlalu dekat dengan titik stop loss anda mungkin keluar dari kedudukan yang menguntungkan terlalu awal, dan terlalu jauh dari titik stop loss anda mungkin tidak dapat mengunci keuntungan yang mencukupi.

  4. Tempoh masa yang tidak betul boleh menyebabkan anda terlepas sesi perdagangan utama atau tidak dapat mengambil deposit.

Untuk risiko di atas, ia boleh diselesaikan dengan penyesuaian parameter yang sesuai atau menambah syarat penapisan, meningkatkan kestabilan strategi.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Cuba parameter kitaran ATR yang berbeza untuk mencari titik keseimbangan yang sesuai. Biasanya antara 10-20 adalah ideal.

  2. Uji parameter penggandaan ATR yang berbeza, biasanya 2-5 lebih sesuai, boleh disesuaikan secara beransur-ansur untuk mencari nilai terbaik.

  3. Cuba tambahkan penunjuk lain untuk menentukan arah udara, seperti MACD, KD dan sebagainya, untuk menapis isyarat palsu.

  4. Optimumkan parameter hentian hentian untuk mencari kombinasi parameter yang optimum. Hentian hentian dinamik boleh diperkenalkan.

  5. Uji tetapan jangka masa dagangan yang berbeza. Varieti garis pendek dalam sehari sesuai untuk tempoh masa yang lebih pendek.

  6. Cuba pilih kontrak secara automatik dan ikuti mata wang yang sangat turun naik atau turun naik.

ringkaskan

Strategi hypertrend secara keseluruhan adalah strategi pemantauan trend yang lebih biasa dan praktikal. Ia mempunyai parameter yang boleh disesuaikan, trend pemantauan yang cekap, dan terdapat risiko tertentu yang perlu dielakkan. Dengan pengoptimuman parameter dan penambahan CONDITIONS, strategi ini dapat dioptimumkan sebagai sistem perdagangan kuantitatif yang boleh dipercayai, untuk mendapatkan Alpha yang stabil.

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