VWAP取引戦略

EMA VWAP
作成日: 2024-04-29 14:20:39 最終変更日: 2024-04-29 14:20:39
コピー: 6 クリック数: 842
1
フォロー
1617
フォロワー

VWAP取引戦略

概要

この戦略は,EMA,VWAP,取引量に基づいた取引戦略である.主な考え方は,特定の取引時間の中で,閉盘価格がVWAPとEMAを突破し,取引量が前K線の取引量より大きいときに開場シグナルを生成することである.同時に,停止損失と止まりを設定し,特定の時間内にポジションを平らにする条件がある.

戦略原則

  1. EMAとVWAPの指標を計算する.
  2. 指定された取引時間内に
  3. 多頭開設条件:閉じる価格はVWAPとEMAより大きい,取引量は前K線より大きい,閉じる価格は開設価格より大きい.
  4. 空頭開設条件:閉じる価格はVWAPとEMAより小さい,取引量は前K線より大きい,開設価格は閉じる価格より大きい.
  5. 多頭平仓条件:閉盘価格がVWAPまたはEMAを下回り,ストップポイントまたはストップ・ロスの位に達し,または指定された出場時間に達する.
  6. 空頭平仓条件:閉盘価格がVWAPまたはEMAを突破し,ストップポイントまたはストップ損失ポイントに達し,または指定された出場時間に達する.

戦略的優位性

  1. 価格傾向 (EMA),市場公正価値 (VWAP) と取引量も考慮し,ポジション開設条件がより厳格になり,戦略の勝率を向上させるのに役立ちます.
  2. リスクの管理と利益の確保のために,ストップ・ロスとストップ・フードが設定されています.
  3. 取引時間や出場時間を制限し,非取引時間や夜間取引のリスクを回避します.

戦略リスク

  1. この戦略は,頻繁に突破と撤回が,取引コストと滑り点を増加させるため,複数の開設と撤回につながる可能性があるため,不安定な市場ではうまく機能しない可能性があります.
  2. ストップポイントは固定であり,市場が急激に波動すると,提前にトリガーされ,戦略が大きな損失を被る可能性があります.
  3. この戦略は,実際の市場深さや委託状況を考慮していないため,現場取引では滑り点やポジション開設の失敗などの問題に直面する可能性がある.

戦略最適化の方向性

  1. ATR,RSIなどのフィルタリング条件の追加は,トレンドと動力の強さをさらに確認するために考慮することができます.
  2. ストップとストップポイントは,ATRやパーセンテージ・ストップなど,異なる市場の変動に対応するために動的に設定できます.
  3. 戦略の安定性と収益性を高めるために,EMAの長さ,VWAPの源,ストップ・ストップ・ポイントの位置などのパラメータを最適化することができます.
  4. ポジション管理の追加は考えられます.例えば,波動率または資金比率に応じてポジションの量を調整して,全体的なリスクを制御します.

要約する

この戦略は,価格の傾向,市場公正価値および取引量を総合的に考慮して,特定の取引時間内に取引する. ストップ・ローズ・ストップと限られた取引時間を設定したものの,実際の適用では,揺動市場や滑り場などのリスクに注意する必要があります. 将来,より多くのフィルタリング条件,最適化パラメータおよびポジション管理などの方法で戦略の安定性と収益性を向上させることができます.

ストラテジーソースコード
/*backtest
start: 2024-04-27 00:00:00
end: 2024-04-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA, VWAP, Volume Strategy", overlay=true, process_orders_on_close=true)

// Inputs
emaLength = input.int(21, title="EMA Length")
vwapSource = input.source(defval=hlc3, title='VWAP Source')
stopLossPoints = input.float(100, title="Stop Loss (points)")
targetPoints = input.float(200, title="Target (points)")
session = input("0950-1430", title='Only take entry during')
exit = input(defval='1515-1525', title='Exit Trade')

tradein = not na(time(timeframe.period, session))
exit_time = not na(time(timeframe.period, exit))

// Calculate indicators
ema = ta.ema(close, emaLength)
vwapValue = ta.vwap(vwapSource)

// Entry Conditions
longCondition = close > vwapValue and close > ema and volume > volume[1] and close > open and tradein
shortCondition = close < vwapValue and close < ema and volume > volume[1] and open > close and tradein

// Exit Conditions
longExitCondition = ta.crossunder(close, vwapValue) or ta.crossunder(close, ema) or close - strategy.position_avg_price >= targetPoints or close - strategy.position_avg_price <= -stopLossPoints or exit_time
shortExitCondition = ta.crossover(close, vwapValue) or ta.crossover(close, ema) or strategy.position_avg_price - close >= targetPoints or strategy.position_avg_price - close <= -stopLossPoints or exit_time

// Plotting
plot(vwapValue, color=color.blue, title="VWAP")
plot(ema, color=color.green, title="EMA")

// Strategy
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

if longExitCondition
    strategy.close('Long', immediately=true)

if shortExitCondition
    strategy.close("Short", immediately=true)