Chiến lược này kết hợp các chỉ số kỹ thuật STC, Moving Average MA và Average True Range ATR để đánh giá xu hướng và thực hiện giao dịch theo dõi xu hướng tương đối ổn định.
Chỉ số STC đánh giá sự đảo ngược xu hướng. Nó sử dụng đường nhanh trừ đường chậm, sau đó xử lý làm mịn thứ cấp, tạo ra các tín hiệu xu hướng nhất quán.
Moving Average MA đánh giá hướng xu hướng. Khi giá cổ phiếu vượt trên MA, nó báo hiệu xu hướng tăng, cho tín hiệu giữ vị trí dài. Khi giá vượt dưới MA, nó báo hiệu xu hướng giảm, cho tín hiệu giữ vị trí ngắn.
Chỉ số ATR thiết lập stop loss và take profit. ATR có thể điều chỉnh stop loss và take profit dựa trên biến động của thị trường. Và ATR hoạt động như một tín hiệu cho hướng giao dịch, tăng trong xu hướng tăng và giảm trong xu hướng giảm.
Chiến lược này sử dụng tín hiệu STC làm thời gian chính để vào, sử dụng MA như là phán đoán xu hướng phụ trợ và ATR để dừng lỗ và lấy lợi nhuận. Khi STC đưa ra tín hiệu mua, nếu MA cũng hiển thị xu hướng tăng và ATR tăng, nó mở vị trí dài; khi STC đưa ra tín hiệu bán, nếu MA hiển thị xu hướng giảm và ATR giảm, nó mở vị trí ngắn.
Chiến lược kết hợp nhiều chỉ số để đánh giá xu hướng và điểm đảo ngược, cải thiện độ chính xác của tín hiệu giao dịch.
STC có thể nắm bắt các tín hiệu đảo ngược và tránh bị mắc kẹt trong xu hướng. MA lọc các tín hiệu đảo ngược không chắc chắn để đảm bảo theo xu hướng chính.
ATR thiết lập stop loss động và lấy lợi nhuận dựa trên sự biến động của thị trường, tránh thua lỗ lớn.
Sự kết hợp của nhiều chỉ số tạo ra khả năng theo dõi xu hướng mạnh mẽ.
STC có thời gian trễ, có thể bỏ lỡ thời gian tối ưu để đảo ngược giá.
MA có xu hướng chậm lại trong các biến động giá mạnh mẽ, có thể tạo ra các tín hiệu sai.
Lợi nhuận dừng ATR có thể đạt được trong vài giây.
Nhiều chỉ số hơn có nghĩa là nhiều cơ hội để đạt được điểm dừng lỗ.
Điều chỉnh các thông số STC để tìm kết hợp phản ứng nhanh hơn để đảo ngược.
Tối ưu hóa tham số thời gian MA để theo dõi xu hướng tốt hơn.
Các tác động thử nghiệm của các nhân ATR khác nhau.
Hãy thử thay thế STC bằng các chỉ số khác để phù hợp hơn.
giới thiệu các thuật toán học máy cho tối ưu hóa tự động đa tham số.
Xem xét xu hướng chu kỳ lớn và phân biệt các giai đoạn khác nhau.
Chiến lược STC MA ATR kết hợp 3 chỉ số để nắm bắt các điểm đảo ngược xu hướng cho việc theo dõi xu hướng ổn định. Các kết hợp chỉ số lọc tín hiệu sai và kiểm soát rủi ro bằng dừng lỗ / lấy lợi nhuận. Nó có độ bền và ổn định mạnh mẽ.
/*backtest start: 2023-09-16 00:00:00 end: 2023-10-16 00:00:00 period: 4h 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/ // © Romedius //@version=5 strategy("My Strategy", overlay=true, margin_long=100, margin_short=100) // STC EEEEEE=input(12,"Length",group="STC") BBBB=input(26,"FastLength",group="STC") BBBBB=input(50,"SlowLength",group="STC") AAAA(BBB, BBBB, BBBBB) => fastMA = ta.ema(BBB, BBBB) slowMA = ta.ema(BBB, BBBBB) AAAA = fastMA - slowMA AAAA AAAAA(EEEEEE, BBBB, BBBBB) => //AAA=input(0.5) var AAA = 0.5 var CCCCC = 0.0 var DDD = 0.0 var DDDDDD = 0.0 var EEEEE = 0.0 BBBBBB = AAAA(close,BBBB,BBBBB) CCC = ta.lowest(BBBBBB, EEEEEE) CCCC = ta.highest(BBBBBB, EEEEEE) - CCC CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1])) DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1]))) DDDD = ta.lowest(DDD, EEEEEE) DDDDD = ta.highest(DDD, EEEEEE) - DDDD DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1])) EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1]))) EEEEE mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB) stc = mAAAAA > mAAAAA[1] ? true : false stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0 stc_long = stc_sig == 1 stc_short = stc_sig == -1 // STC end // ATR stops nATRPeriod = input(5,group="ATR Stops") nATRMultip = input(3.5,group="ATR Stops") xATR = ta.atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = 0.0 xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss pos = 0 pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) atr_sig = pos == -1 ? false : true // ATR stops end // ma ma_len = input(200, title="MA Length", group="Moving Average") ma = ta.sma(close, 200) ma_sig = close < ma ? false : true // ma end // strategy entries tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy") sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy") early_stop = input(true, title="Close position when ATR changes color") atr_stop = if close < xATRTrailingStop close - (close - xATRTrailingStop) * sl_mult else close + (xATRTrailingStop - close) * sl_mult longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop) else if atr_sig == false and early_stop strategy.close("Long") if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop) else if atr_sig == true and early_stop strategy.close("Short") // plot stuff atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue plot(atr_stop, title="ATR Stop", color=atr_color) ma_color = ma_sig ? color.green : color.red plot(ma, title="Moving Average", color=ma_color) stc_color = stc_long ? color.green : color.red plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny) plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny) // plot stuff end