この戦略は,価格の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)