
Chiến lược này sử dụng chỉ số VWMA để xác định hướng xu hướng và sử dụng chỉ số ATR để thiết lập đường dừng để theo dõi xu hướng. Chiến lược này áp dụng cho môi trường thị trường có xu hướng rõ ràng.
Sử dụng chỉ số VWMA để đánh giá xu hướng. Khi giá cao hơn VWMA, đánh giá là xu hướng tăng, làm nhiều; Khi giá thấp hơn VWMA, đánh giá là xu hướng giảm, làm trống.
Để lọc sự phá vỡ giả mạo, hãy tham gia đánh giá của dao động RSI. Chỉ khi RSI vượt quá 30 thì sẽ phát ra nhiều tín hiệu.
Sử dụng chỉ số ATR để tính toán đường dừng. Độ dài của ATR được đặt giống như VWMA, và số nhân được đặt là 3.5. Đường dừng sẽ được cập nhật theo giá cả trong thời gian thực.
Cài đặt ATR sẽ ảnh hưởng đến mức độ thu hẹp của đường dừng. Càng lớn, tần suất cập nhật đường dừng càng thấp, theo dõi xu hướng hiệu quả hơn.
Kích thước của vị thế được tính dựa trên tỷ lệ phần trăm dừng lỗ trong chiến lược và quyền lợi tài khoản.
Khi giá giảm xuống đường dừng lỗ, hãy rút khỏi lệnh dừng lỗ.
Sử dụng chỉ số VWMA để đánh giá xu hướng, bạn có thể tiếp tục nắm bắt cơ hội xu hướng.
Thêm bộ lọc RSI để lọc các tín hiệu đột phá giả.
ATR Stop Lines thực hiện theo dõi xu hướng, tránh bị đảo ngược
Tính toán vị trí dựa trên tỷ lệ lợi nhuận và lỗ hổng của tài khoản, có lợi cho việc kiểm soát rủi ro.
Có nguy cơ mất mát ở điểm chuyển hướng. Cần giảm vị trí phù hợp để giảm tổn thất đơn.
Thiết lập tham số ATR không đúng, có thể dẫn đến dây dừng quá nhạy hoặc chậm. Các tham số thích hợp nên được thử nghiệm.
Nếu xu hướng đảo ngược quá nhanh, việc cập nhật đường dừng có thể không kịp và sẽ làm tăng tổn thất.
Trong thị trường có biến động thấp, bạn nên giảm vị trí và tăng tần suất thu hẹp đường dừng.
Có thể thử nghiệm các kết hợp các tham số VWMA khác nhau để chọn tham số tạo ra tín hiệu tốt nhất.
Các tham số khác của dao động RSI có thể được đặt để thử nghiệm, chẳng hạn như đường mua quá mức và đường bán quá mức.
Bạn có thể kiểm tra tham số nhân của ATR để tìm điểm tốt nhất để tradeoff giữa rút và theo dõi.
Có thể kết hợp với các chỉ số khác để lọc tín hiệu, chẳng hạn như MACD, KD, v.v., để cải thiện chất lượng tín hiệu.
Có thể tối ưu hóa quản lý vị trí và tỷ lệ dừng lỗ theo biến động của thị trường.
Chiến lược này có lợi thế trong việc phán đoán xu hướng, lọc tín hiệu, theo dõi dừng lỗ, và có nguy cơ đảo ngược xu hướng. Bằng cách thiết lập tham số tối ưu hóa và quản lý vị trí, có thể có hiệu quả chiến lược tốt hơn.
/*backtest
start: 2023-10-07 00:00:00
end: 2023-10-13 00:00:00
period: 1h
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/
// © mohanee
//@version=4
//strategy("", overlay=true)
strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed,
float xATRTrailingStop=na
int pos=na
vwmalength = input(33, title="VWMA Length", minval=1, maxval=365)
//vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365)
nATRPeriod = input(33, title="ATR length", minval=1, maxval=365)
nATRMultip = input(3.5, title="ATR Multiplier")
rsiofVwmaLength=input(14, title="RSI of VWMA Length")
riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)
vwmaVal=vwma(close, vwmalength)
//vwmaVal2=vwma(close, vwmalength2)
//maVal=sma(close, vwmalength)
plot(vwmaVal, color=color.orange, linewidth=2, title="VWMA")
//plot(vwmaVal2, color=color.blue, title="VWMA Short Term")
//plot(maVal, color=color.blue, title="MA")
//rsi of vwma Longterm
rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength)
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos:= iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
//plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop")
//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100)
//check if cash is sufficient to buy qty1 , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1
//Long Entry
//strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop> vwmaVal)
strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and close>open and close>vwmaVal and pos == 1 ) ///pos == 1 means ATRStop line is green
//vwmaVal2>vwmaVal and
plot(strategy.position_size>=1 ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop")
bgcolor(strategy.position_size>=1 ? color.blue : na )
//Exit
strategy.close(id="VWMA LE", when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop) )
//strategy.close(id="VWMA LE", when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )