
이 전략은 VWMA 지표를 사용하여 트렌드 방향을 판단하고 ATR 지표를 사용하여 스톱 로드 라인을 설정하여 트렌드 추적을 수행합니다. 이 전략은 명백한 트렌드가있는 시장 환경에 적합합니다.
VWMA 지표를 사용하여 트렌드 방향을 판단하십시오. 가격이 VWMA보다 높을 때 상승 추세로 판단하고, 더 많은 것을하십시오. 가격이 VWMA보다 낮을 때 하향 추세로 판단하고, 공백을하십시오.
가짜 돌파구를 필터링하기 위해 RSI 오실로터 판단에 참여하십시오. RSI가 30 이상일 때만 다중 신호를 발산합니다.
ATR 지수를 사용하여 스톱 라인을 계산한다. ATR 길이는 VWMA와 동일하게 설정되어 있고, 배수는 3.5으로 설정되어 있다. 스톱 라인은 가격에 따라 실시간으로 업데이트된다.
ATR 배수의 설정은 스톱 라인의 수축에 영향을 미칩니다. 배수가 클수록 스톱 라인이 업데이트되는 빈도가 낮아지고, 트렌드를 추적하는 효과가 더 좋습니다.
전략 내의 중지 손실 비율과 계정 권리 이익에 따라 포지션 크기를 계산하십시오.
가격이 스톱로스 라인을 넘어갈 때 스톱로스는 외출한다.
VWMA 지표를 사용하여 트렌드 방향을 판단하여 트렌드 기회를 지속적으로 잡을 수 있습니다.
RSI 필터를 추가하여 일부 가짜 돌파 신호를 필터링 할 수 있습니다.
ATR 중지 라인은 트렌드 추적을 구현하여 반전되는 것을 피합니다.
계정 적당금과 정지 손실 비율에 따라 포지션을 계산하여 위험을 통제하는 데 도움이 됩니다.
트렌드 전환점에는 손실 위험이 있습니다. 단일 손실을 줄이기 위해 포지션을 적절하게 축소해야합니다.
ATR 매개 변수 설정이 잘못되면, 막전선이 너무 민감하거나 느려질 수 있다. 적절한 매개 변수를 확인하기 위해 테스트를 해야 한다.
만약 트렌드가 너무 빨리 역전되면, 스톱 라인 업데이트가 늦어지고 손실이 커질 수 있다.
낮은 변동성이 있는 시장에서는 포지션을 낮추고 스톱 라인을 수축하는 횟수를 늘려야 한다.
다양한 VWMA 파라미터 조합을 테스트하여 신호를 가장 잘 생성하는 파라미터를 선택할 수 있다.
RSI 오스실레이터의 다른 파라미터 설정을 테스트할 수 있습니다.
ATR의 배수 변수를 테스트하여 철회와 추적 사이의 트레이드오프의 최적의 지점을 찾을 수 있다.
다른 지표인 MACD, KD 등과 결합하여 신호 품질을 향상시킬 수 있다.
시장의 변동에 따라 포지션 관리 및 중지 손실 비율을 최적화 할 수 있습니다.
이 전략은 전체적인 편향성이며, 명백한 가격 트렌드를 포착하는 데 적합하다. 이 전략은 트렌드 판단, 신호 필터링, 손실 추적 등의 장점을 가지고 있으며, 트렌드 반전의 위험도 존재한다. 최적화된 매개 변수 설정 및 포지션 관리로 더 나은 전략 효과를 얻을 수 있다.
/*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 )