
Strategi ini adalah strategi pengembalian yang didasarkan pada indikator SSL Channel, dan menggabungkan fungsi seperti ATR Stop Loss, ATR Stop Stop, dan Manajemen Uang, untuk menguji keunggulan strategi SSL Channel secara lebih komprehensif.
Indikator SSL Channel terdiri dari jalur tengah dan jalur jalur. Jalur tengah saluran adalah rata-rata bergerak sederhana, yang terbagi menjadi jalur atas dan bawah, biasanya mengambil rata-rata bergerak sederhana selama titik tinggi sebagai jalur atas, dan rata-rata bergerak sederhana selama titik rendah sebagai jalur bawah. Jalur jalur terdiri dari daerah antara jalur atas dan bawah.
Ketika harga mendekati jalur atas dianggap sebagai overbought, dan ketika harga mendekati jalur bawah dianggap sebagai oversold. Ketika harga menembus jalur channel band, ini menunjukkan sinyal perubahan tren.
Parameter indikator saluran SSL dalam kebijakan ini adalah:ssl_period=16。
ATR adalah rata-rata amplitudo riil. Ini dapat digunakan untuk menilai volatilitas pasar dan menentukan posisi stop loss.
Strategi ini menggunakan argumenatr_period=14Indeks ATR, dan digabungkan denganatr_stop_factor=1.5Danatr_target_factor=1.0Sebagai perkalian dinamis dari stop loss dan stop loss, stop loss yang didasarkan pada volatilitas pasar.
Selain itu, untuk menyesuaikan dengan varietas yang berbeda, strategi ini juga telah ditambahkan.two_digitParameter menilai kontrak dengan ketepatan 2 bit varietas (seperti emas, yen), sehingga dapat menyesuaikan stop loss stop position secara fleksibel.
Pengelolaan dana terutama melalui parameterposition_size(posisi tetap) danrisk(Prosentase risiko terobosan) tercapai.use_mm=trueModul pengelolaan dana akan diaktifkan.
Tujuan utama dari pengelolaan dana adalah untuk mengontrol ukuran posisi setiap kali membuka posisi. Ketika menggunakan model risiko persentase tetap, risiko akan dihitung berdasarkan ekuitas akun dan kemudian dikonversi menjadi jumlah kontrak, sehingga dapat mencegah kerugian tunggal.
Risiko-risiko ini dapat diatasi dengan:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Dengan pengujian dan pengoptimalan sistem, strategi ini dapat menjadi sistem perdagangan kuantitatif yang dapat diandalkan dan stabil.
Strategi ini mengintegrasikan tiga mekanisme untuk menilai tren indikator SSL channel, ATR untuk mengatur stop loss dan pengendalian risiko manajemen dana. Efek strategi ini dapat diuji melalui umpan balik yang komprehensif, dan dapat digunakan sebagai kerangka dasar untuk mengoptimalkan strategi perdagangan kuantitatif. Pada saat yang sama, ada ruang untuk perbaikan dalam strategi ini, seperti menambahkan indikator filter lainnya, parameter optimasi, dan fungsi ekstensi.
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 2h
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/
// © comiclysm
//@version=4
strategy("SSL Backtester", overlay=false)
//--This strategy will simply test the effectiveness of the SSL using
//--money management and an ATR-derived stop loss
//--USER INPUTS
two_digit = input(false, "Check this for 2-digit pairs (JPY, Gold, Etc)")
ssl_period = input(16, "SSL Period")
atr_period = input(14, "ATR Period")
atr_stop_factor = input(1.5, "ATR Stop Loss Factor")
atr_target_factor = input(1.0, "ATR Target Factor")
use_mm = input(true, "Check this to use Money Management")
position_size = input(1000, "Position size (for Fixed Risk)")
risk = input(0.01, "Risk % in Decimal Form")
//--INDICATORS------------------------------------------------------------
//--SSL
sma_high = sma(high, ssl_period)
sma_low = sma(low, ssl_period)
ssl_value = 0
ssl_value := close > sma_high ? 1 : close < sma_low ? -1 : ssl_value[1]
ssl_low = ssl_value < 0 ? sma_high : sma_low
ssl_high = ssl_value < 0 ? sma_low : sma_high
//--Average True Range
atr = atr(atr_period)
//--TRADE LOGIC----------------------------------------------------------
signal_long = ssl_value > 0 and ssl_value[1] < 0
signal_short = ssl_value < 0 and ssl_value[1] > 0
//--RISK MANAGMENT-------------------------------------------------------
strategy.initial_capital = 50000
balance = strategy.netprofit + strategy.initial_capital
risk_pips = atr*10000*atr_stop_factor
if(two_digit)
risk_pips := risk_pips / 100
risk_in_value = balance * risk
point_value = syminfo.pointvalue
risk_lots = risk_in_value / point_value / risk_pips
final_risk = use_mm ? risk_lots * 10000 : position_size
//--TRADE EXECUTION-----------------------------------------------------
if (signal_long)
stop_loss = close - atr * atr_stop_factor
target = close + atr * atr_target_factor
strategy.entry("Long", strategy.long, final_risk)
strategy.exit("X", "Long", stop=stop_loss, limit=target)
if (signal_short)
stop_loss = close + atr * atr_stop_factor
target = close - atr * atr_target_factor
strategy.entry("Short", strategy.short, final_risk)
strategy.exit("X", "Short", stop=stop_loss, limit=target)
//--PLOTTING-----------------------------------------------------------
plot(ssl_low, "SSL", color.red, linewidth=1)
plot(ssl_high, "SSL", color.lime, linewidth=1)