
Chiến lược này là chiến lược phản hồi dựa trên các chỉ số SSL, kết hợp với các tính năng như ATR Stop Loss, ATR Stop Stop và quản lý tiền, cho phép kiểm tra hiệu quả của chiến lược SSL một cách toàn diện hơn.
Chỉ số kênh SSL bao gồm đường trung và đường băng. Đường trung là đường trung bình di chuyển đơn giản, được chia thành đường cao và đường thấp, thường lấy đường trung bình di chuyển đơn giản trong thời gian cao là đường cao, đường trung bình di chuyển đơn giản trong thời gian thấp là đường thấp.
Khi giá gần đường dẫn lên, nó được coi là mua quá mức, và khi giá gần đường dẫn xuống, nó được coi là bán quá mức. Khi giá phá vỡ đường dẫn, nó cho thấy một tín hiệu thay đổi xu hướng.
Các tham số chỉ số SSL trong chính sách này được đặt thành:ssl_period=16。
ATR là độ dài sóng thực trung bình. Nó có thể được sử dụng để đánh giá sự biến động của thị trường và xác định vị trí dừng lỗ.
Chính sách này sử dụng các tham sốatr_period=14của ATR, và kết hợpatr_stop_factor=1.5Vàatr_target_factor=1.0Là nhân động của dừng và dừng, thực hiện dừng dựa trên biến động của thị trường.
Ngoài ra, để thích ứng với các giống khác nhau, chiến lược này đã được thêm vào.two_digitCác tham số đánh giá hợp đồng với độ chính xác 2 bit (ví dụ như vàng, yên) để có thể điều chỉnh vị trí dừng lỗ một cách linh hoạt.
Quản lý tài chính chủ yếu thông qua các tham sốposition_size(Vị trí cố định) vàrisk(Phần trăm lỗ hổng rủi ro) thực hiện.use_mm=trueĐiều này sẽ kích hoạt mô-đun quản lý tài chính.
Mục tiêu chính của quản lý tiền là kiểm soát kích thước vị trí của mỗi lần mở vị trí. Khi áp dụng mô hình rủi ro tỷ lệ phần trăm cố định, lỗ hổng rủi ro sẽ được tính dựa trên quyền lợi tài khoản và chuyển thành số hợp đồng, do đó có hiệu quả ức chế tổn thất đơn lẻ.
Những rủi ro này có thể được cải thiện bằng cách:
Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:
Bằng cách kiểm tra và tối ưu hóa hệ thống, chiến lược này có thể trở thành một hệ thống giao dịch định lượng đáng tin cậy và ổn định.
Chính sách này kết hợp các chỉ số định xu hướng của SSL, ATR thiết lập các điểm dừng lỗ và kiểm soát rủi ro quản lý tiền. Có thể kiểm tra hiệu quả của chính sách này thông qua phản hồi toàn diện và có thể được sử dụng như một khuôn khổ cơ bản để tối ưu hóa chiến lược giao dịch định lượng. Đồng thời, chính sách này cũng có thể được cải thiện, chẳng hạn như thêm các chỉ số lọc khác, tham số tối ưu hóa và tính năng mở rộng. Nói chung, chính sách này đặt nền tảng vững chắc để xây dựng hệ thống giao dịch tự động.
/*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)