
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.
Strategi hypertrend beroperasi berdasarkan prinsip utama berikut:
atr2 = sma(tr, Periods)
up = close - (Multiplier * atr)
dn = close + (Multiplier * atr)
trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend
sellSignal = trend == -1 and trend[1] == 1
Penyaringan berdasarkan isyarat dagangan dan syarat-syarat lain.
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.
Strategi ini mempunyai beberapa kelebihan:
Indikator hypertrend sendiri adalah alat yang digunakan untuk mengesan trend harga.
Parameter ATR boleh disesuaikan dan dapat dioptimumkan untuk mendapatkan kombinasi parameter terbaik untuk pelbagai jenis. Kaedah pengiraan SMA juga menyediakan pilihan lain.
Julat masa yang boleh disesuaikan untuk pelacakan dan perdagangan cakera untuk memenuhi keperluan masa perdagangan yang berbeza.
Ia menawarkan pilihan untuk segera masuk ke senarai pertama atau menunggu isyarat, yang boleh dipilih mengikut ciri-ciri varieti.
Tetapan stop loss terbina dalam dapat meningkatkan ketahanan strategi terhadap risiko atau mengunci lebih banyak keuntungan.
Maklumat isyarat dagangan yang disesuaikan, boleh diintegrasikan ke dalam sistem perdagangan automatik atau robot, untuk mewujudkan pengawal tanpa manusia.
Strategi ini juga mempunyai risiko:
Penunjuk Super Trend mungkin menghasilkan lebih banyak isyarat palsu dan perlu disaring dengan penunjuk lain.
Parameter ATR yang tidak betul boleh menyebabkan perdagangan yang kerap atau kehilangan trend. Parameter perlu dioptimumkan untuk keseimbangan terbaik.
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.
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.
Strategi ini boleh dioptimumkan dengan cara berikut:
Cuba parameter kitaran ATR yang berbeza untuk mencari titik keseimbangan yang sesuai. Biasanya antara 10-20 adalah ideal.
Uji parameter penggandaan ATR yang berbeza, biasanya 2-5 lebih sesuai, boleh disesuaikan secara beransur-ansur untuk mencari nilai terbaik.
Cuba tambahkan penunjuk lain untuk menentukan arah udara, seperti MACD, KD dan sebagainya, untuk menapis isyarat palsu.
Optimumkan parameter hentian hentian untuk mencari kombinasi parameter yang optimum. Hentian hentian dinamik boleh diperkenalkan.
Uji tetapan jangka masa dagangan yang berbeza. Varieti garis pendek dalam sehari sesuai untuk tempoh masa yang lebih pendek.
Cuba pilih kontrak secara automatik dan ikuti mata wang yang sangat turun naik atau turun naik.
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.
/*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)