이 전략은 가격의 ATR 변동성을 계산하고 다른 기간 VWAP를 결합하여 주식 트렌드 거래에 대한 긴 입시 및 출시 조건을 설정합니다.
이 전략은 주로 주식 상품의 트렌드 추적에 사용됩니다. ATR 변동성을 계산하고 다른 기간의 VWAP 가격을 결합하여 트렌드를 판단하고 추적하기 위해 구매 및 판매 조건을 설정합니다. 이 전략은 중장기 및 장기 트렌드를 포착하는 데 적합한 장기 및 단기간에 전환 할 수있는 충분한 유연성입니다.
이 전략은 ATR 지표를 사용하여 가격 변동성을 계산하고 가격이 변동성 채널을 통과하는지 여부에 따라 트렌드 방향을 판단합니다. 동시에 장기 및 단기 트렌드의 일관성을 결정하기 위해 다양한 주기의 VWAP 가격을 도입합니다. 구체적인 논리는 다음과 같습니다.
위의 것은 전략의 핵심 논리입니다. ATR 변동성은 단기 트렌드를 판단하고 VWAP 가격은 장기 트렌드를 판단합니다. 둘은 트렌드의 일관성을 결정하고 따라서 거래 신호를 생성하기 위해 결합됩니다.
이 전략은 ATR 변동성 및 VWAP의 이중 확인을 통해 주식 트렌드 추적을 실현합니다. 매개 변수를 조정하거나 다른 기술적 인 지표를 통합하여 최적화 할 수있는 충분한 공간이 있습니다. 전반적으로 전략 논리는 중장기 트렌드를 추적하는 데 명확하고 견고합니다.
/*backtest start: 2023-12-17 00:00:00 end: 2024-01-16 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/ // © exlux99 //@version=4 strategy(title="VWAP MTF STOCK STRATEGY", overlay=true ) // high^2 / 2 - low^2 -2 h=pow(high,2) / 2 l=pow(low,2) / 2 o=pow(open,2) /2 c=pow(close,2) /2 x=(h+l+o+c) / 4 y= sqrt(x) source = y useTrueRange = false length = input(27, minval=1) mult = input(0, step=0.1) ma = sma(source, length) range = useTrueRange ? tr : high - low rangema = sma(range, length) upper = ma + rangema * mult lower = ma - rangema * mult crossUpper = crossover(source, upper) crossLower = crossunder(source, lower) bprice = 0.0 bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1]) sprice = 0.0 sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) crossBcond = false crossBcond := crossUpper ? true : na(crossBcond[1]) ? false : crossBcond[1] crossScond = false crossScond := crossLower ? true : na(crossScond[1]) ? false : crossScond[1] cancelBcond = crossBcond and (source < ma or high >= bprice ) cancelScond = crossScond and (source > ma or low <= sprice ) longOnly = true fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true srcX = input(ohlc4) t = time("W") start = na(t[1]) or t > t[1] sumSrc = srcX * volume sumVol = volume sumSrc := start ? sumSrc : sumSrc + sumSrc[1] sumVol := start ? sumVol : sumVol + sumVol[1] vwapW= sumSrc / sumVol //crossUpper = crossover(source, upper) //crossLower = crossunder(source, lower) shortCondition = close < vwap and time_cond and (close < vwapW) longCondition = close > vwap and time_cond and (close > vwapW) if(longOnly and time_cond) if (crossLower and close < vwapW ) strategy.close("long") if (crossUpper and close>vwapW) strategy.entry("long", strategy.long, stop=bprice)