
Strategi ini adalah strategi pengesanan berdasarkan indikator SSL Channel, dan menggabungkan fungsi seperti ATR Stop Loss, ATR Stop Stop, dan pengurusan wang untuk menguji lebih lengkap keberkesanan strategi SSL Channel.
Penunjuk laluan SSL terdiri daripada garis tengah laluan dan jalur laluan. Garis tengah laluan adalah purata bergerak mudah, yang dibahagikan kepada lintasan atas dan bawah, biasanya mengambil purata bergerak mudah semasa titik tinggi sebagai lintasan atas, dan rata-rata bergerak mudah semasa titik rendah sebagai lintasan bawah.
Apabila harga mendekati saluran atas dianggap sebagai overbuy, apabila harga mendekati saluran bawah dianggap sebagai oversold. Apabila harga menembusi jalur saluran, menandakan perubahan trend.
Parameter penunjuk laluan SSL dalam polisi ini adalah:ssl_period=16。
ATR merujuk kepada purata gelombang sebenar. Ia boleh digunakan untuk menilai turun naik pasaran dan menentukan kedudukan stop loss.
Kaedah ini menggunakan argumenatr_period=14Indeks ATR, dan digabungkanatr_stop_factor=1.5danatr_target_factor=1.0Sebagai kelipatan dinamik untuk berhenti dan hentian, hentian berhenti yang berdasarkan kepada turun naik pasaran.
Selain itu, untuk menyesuaikan diri dengan varieti yang berbeza, strategi ini telah ditambah.two_digitParameter menilai kontrak dengan ketepatan 2 bit (seperti emas, yen), sehingga dapat menyesuaikan kedudukan stop loss dengan fleksibel.
Pengurusan dana terutamanya melalui parameterposition_size(posisi tetap) danrisk(peratusan risiko lubang) dilaksanakan.use_mm=trueModul pengurusan wang akan diaktifkan.
Objektif utama pengurusan wang adalah untuk mengawal saiz kedudukan setiap kali membuka kedudukan. Apabila menggunakan model risiko peratusan tetap, risiko akan dikira berdasarkan akaun hak dan faedah dan ditukarkan kepada jumlah kontrak, sehingga dapat menahan kerugian tunggal.
Risiko ini boleh dikurangkan dengan:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Dengan ujian dan pengoptimuman sistem, strategi ini boleh menjadi sistem perdagangan kuantitatif yang dipercayai dan stabil.
Strategi ini mengintegrasikan tiga mekanisme untuk menilai trend indikator SSL, ATR untuk menetapkan stop loss dan pengendalian risiko pengurusan wang. Kesan strategi ini boleh diuji melalui umpan balik yang komprehensif, dan boleh digunakan sebagai kerangka asas untuk mengoptimumkan strategi perdagangan kuantitatif. Pada masa yang sama, strategi ini juga boleh diperbaiki, seperti menambahkan indikator penapis lain, parameter pengoptimuman, dan fungsi lanjutan.
/*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)