Ý tưởng cốt lõi của chiến lược này là kết hợp biến đổi ngẫu nhiên của Fisher và chỉ số STOCH tạm thời để đưa ra quyết định mua và bán.
Chiến lược này đầu tiên tính toán chỉ số STOCH tiêu chuẩn, sau đó thực hiện biến đổi Fisher trên nó để có được INVLine. Khi INVLine vượt qua ngưỡng dưới dl, một tín hiệu mua được tạo ra. Khi INVLine vượt qua ngưỡng trên ul, một tín hiệu bán được tạo ra. Đồng thời, chiến lược này cũng thiết lập một cơ chế dừng lại để khóa lợi nhuận và giảm lỗ.
Cụ thể, logic cốt lõi của chiến lược này là:
Những lợi thế chính của chiến lược này là:
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, hãy xem xét tối ưu hóa các khía cạnh sau:
Các hướng chính để tối ưu hóa chiến lược này bao gồm:
Chiến lược này kết hợp 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ắn hạn đơn giản và thực tế. Ưu điểm của nó nằm ở tần số hoạt động cao, phù hợp với giao dịch định lượng tần số cao phổ biến hiện nay. Đồ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 chung. Các thông số và điều kiện lọc cần được tối ưu hóa để giảm rủi ro và cải thiện sự ổn định. Nói chung, chiến lược này cung cấp một ý tưởng tốt cho giao dịch định lượng đơn giản và đáng nghiên cứu sâu hơn.
/*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)