Extended Price Volume Trend (EPVT) 戦略は,技術指標の組み合わせ戦略である.インパクト加速指標と他の補助指標を組み合わせ,潜在的なトレンド逆転点とインパクトの変化を特定する.
この戦略の核心指標は,拡張価格量傾向 (EPVT) である.その計算方法は:累積取引量 * 価格変化の割合である.その後,基準範囲を得るために特定の期間中のEPVTの最大値と最小値を計算する.EPVT指標曲線は,EPVTとこの基準範囲の差の曲線である.
EPVT指標曲線がゼロ軸以上を横切ると,購入圧力が増加し,長信号が表示される.逆に,EPVTがゼロ軸以下を横切ると,短信号が表示されます.
信号の質を改善するために,戦略は,トレンド変化の信頼性を確認するために単純な移動平均も使用します.
この戦略は,市場情勢と強度をより包括的に判断できる,トレンド,モメンタム,取引量という3次元からの指標を組み合わせています.拡張価格ボリュームトレンド指標を使用すると,短期的に過剰なボリュームを識別する効果が非常に良好で,市場のターニングポイントを把握することができます.
脱出の3つのメリットレベルを設定すると リスクの優先順位に応じて 異なる利益率を選択できます
この戦略は,指標曲線の形状に比較的大きく依存し,トレンドが非典型的な場合,誤った信号を発信します. さらに,3バーの逆転やその他の状況も,不要な逆開に導きます.
パラメータは適切に調整したり,最適化するために他のフィルタリング指標を追加したりできます.ストップ損失戦略は,単一の損失を減らすこともできます.
パラメータ最適化 EPVTのサイクルパラメータを調整して最適なパラメータの組み合わせを見つけるなど
トレンドフィルタリング条件を追加します.例えば,EPVT信号に基づいて価格チャネルの方向または移動平均を判断します.
ストップ・ロスの戦略を最適化します.固定値ストップやATRストップを設定するなど.
モメント・アクセレレーション・エクステンデッド・プライス・ボリューム・トレンド戦略は,潜在的なトレンドターニングポイントを利用して,EPVT指標を通じて市場情勢の変化を把握する.異なる比率の3つのテイク・プロフィートレベルを設定することで,投資家の異なるリスク欲求を満たすことができる.この戦略は,市場の短期トレンド変化を特定するための効果的なツールになるために,さらなるテストと最適化に値する.
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Extended Price Volume Trend", overlay=true )//@version=5 var cumVol = 0. cumVol += nz(volume) if barstate.islast and cumVol == 0 runtime.error("No volume is provided by the data vendor.") src = close lenght = input(200,"Trend Lenght") vt = ta.cum(ta.change(src)/src[1]*volume) upx = ta.highest(vt,lenght) downx = ta.lowest(vt,lenght) basex = (upx +downx)/2 VTX = vt - basex VTY = ta.valuewhen(ta.cross(VTX,0),close,0) plot(VTY, color=color.black, title="Extended-PVT") /////////////////////// STRATEGY //////////////// /////////////////////// TAKE PROFIT SECTION //////////////// longConditionx = ta.crossover(close,VTY) ShortConditionx = ta.crossunder(close,VTY) tp1 = input.int(10, minval=1,title = "TP-1") tp2 = input.int(20, minval=1,title = "TP-2") tp3 = input.int(30, minval=1,title = "TP-3") ematp = ta.ema(close,2) TPTAKA1S = VTY*(1-tp1/100) plot(TPTAKA1S, "SELL-TP1", color=color.red,linewidth = 1) TPTAKA2S = VTY*(1-tp2/100) plot(TPTAKA2S, "SELL-TP2", color=color.red,linewidth = 1) TPTAKA3S = VTY*(1-tp3/100) plot(TPTAKA3S, "SELL-TP3", color=color.red,linewidth = 1) TPTAKA1B = VTY*(1+tp1/100) plot(TPTAKA1B, "BUY-TP1", color=color.red,linewidth = 1) TPTAKA2B = VTY*(1+tp2/100) plot(TPTAKA2B, "BUY-TP2", color=color.red,linewidth = 1) TPTAKA3B = VTY*(1+tp3/100) plot(TPTAKA3B, "BUY-TP3", color=color.red,linewidth = 1) BUYTP = ta.crossunder(close,VTY) or ta.crossunder(ematp,TPTAKA1B) or ta.crossunder(ematp,TPTAKA2B) or ta.crossunder(ematp,TPTAKA3B) SELLTP = ta.crossover(close,VTY) or ta.crossover(ematp,TPTAKA1S) or ta.crossover(ematp,TPTAKA2S) or ta.crossover(ematp,TPTAKA3S) /////////////////////// STRATEGY //////////////// // Check for Long Entry longCondition = longConditionx==true if longCondition strategy.entry('Long', strategy.long, comment = "ENTER-LONG") buyclose = ShortConditionx==true or BUYTP==true // Exit condition strategy.close('Long', when=buyclose or BUYTP==true, comment = "EXIT-LONG") // Check for Short Entry ShortCondition = ShortConditionx==true if ShortCondition strategy.entry('Short', strategy.short, comment = "ENTER-SHORT") sellclose = longConditionx==true or SELLTP ==true // Exit condition strategy.close('Short', when=sellclose or SELLTP==true, comment = "EXIT-SHORT") ///// END OF STRATEGY ///////////