
Ý tưởng cốt lõi của chiến lược này là kết hợp các biến đổi ngẫu nhiên của Fisher và các chỉ số STOCH tạm thời dừng để đưa ra quyết định mua và bán. Chiến lược này phù hợp với hoạt động ngắn hạn và trung bình, có thể mang lại lợi nhuận tốt trong điều kiện ổn định.
Chiến lược này đầu tiên tính toán chỉ số STOCH tiêu chuẩn, sau đó biến đổi nó thành INVLine. Khi INVLine vượt qua đường giới hạn dl, tạo ra tín hiệu mua; Khi INVLine vượt qua đường giới hạn ul, tạo ra tín hiệu bán.
Cụ thể, logic cốt lõi của chiến lược này là:
Chiến lược này có những lợi thế chính như sau:
Chiến lược này cũng có một số rủi ro:
Để giảm thiểu những rủi ro này, bạn có thể xem xét tối ưu hóa các khía cạnh sau:
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Chiến lược này sử dụng sự biến đổi ngẫu nhiên của Fisher và chỉ số STOCH để thực hiện một chiến lược định lượng đường ngắn đơn giản và thực tế. Ưu điểm của nó là hoạt động với tần số cao, phù hợp với giao dịch định lượng tần số cao phổ biến gần đây. Đồng thời, chiến lược này cũng có một số rủi ro chiến lược chỉ số kỹ thuật phổ biến, cần tối ưu hóa các tham số và điều kiện lọc, giảm rủi ro và tăng sự ổn định.
/*backtest
start: 2022-12-26 00:00:00
end: 2024-01-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("IFT Stochastic + Trailing Stop", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
//INPUTS
stochlength=input(19, "STOCH Length")
wmalength=input(4, title="Smooth")
ul = input(0.64,step=0.01, title="UP line")
dl = input(-0.62,step=0.01, title="DOWN line")
uts = input(true, title="Use trailing stop")
tsi = input(title="trailing stop actiation pips",defval=245)
tso = input(title="trailing stop offset pips",defval=20)
//CALCULATIONS
v1=0.1*(stoch(close, high, low, stochlength)-50)
v2=wma(v1, wmalength)
INVLine=(exp(2*v2)-1)/(exp(2*v2)+1)
//CONDITIONS
sell = crossunder(INVLine,ul)? 1 : 0
buy = crossover(INVLine,dl)? 1 : 0
//PLOTS
plot(INVLine, color=aqua, linewidth=1, title="STOCH")
hline(ul, color=red)
hline(dl, color=green)
bgcolor(sell==1? red : na, transp=30, title = "sell signal")
bgcolor(buy==1? lime : na, transp=30, title = "buy signal")
plotchar(buy==1, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(sell==1, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)
//STRATEGY
strategy.entry("BUY", strategy.long, when = buy==1)
strategy.entry("SELL", strategy.short, when = sell==1)
if (uts)
strategy.entry("BUY", strategy.long, when = buy)
strategy.entry("SELL", strategy.short, when = sell)
strategy.exit("Close BUY with TS","BUY", trail_points = tsi, trail_offset = tso)
strategy.exit("Close SELL with TS","SELL", trail_points = tsi, trail_offset = tso)