価格チャネル VWAP トレーディング戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-19 14:25:18
タグ:

img

概要

この戦略は"Price Channel VWAP Trading Strategy"と呼ばれる.これは価格チャネルに基づいたVWAP取引を実装する戦略である.この戦略の主なアイデアは:価格チャネル内では,VWAP指標の移動平均線とその上下オフセットチャネルラインを使用して購入・販売ポイント判断する.チャネルラインが割れたとき,総資産の固定パーセントに応じてポジションを開き,価格がVWAP移動平均線に戻るとポジションを閉じる.

戦略原則

この戦略は,現在の平均取引価格をVWAP指標で計算する.VWAPは平均価格を表し,取引量に対する売上高の比率である.VWAP指標は,現在の価格と歴史的な平均取引価格の間の偏差を反映する.

この戦略は,VWAP指標の移動平均線とそのオフセットチャネルラインを使用する.オフセットチャネルラインの比率は,パラメータlonglevel1shortlevel1を通じて設定される.価格が上方オフセットチャネルラインを突破すると,パラメータlotsizelongによって設定されたポジションの割合に応じて長ポジションを開く.価格が下方オフセットチャネルラインを突破すると,パラメータlotsizeshortによって設定されたポジションの割合に応じて短ポジションを開く.価格を開く後に,VWAP移動平均線を回転するとポジションを閉じる.

この戦略のパラメータ設定は,チャネル取引のアイデアを完全に反映しています.ユーザーは,自分の好みに応じて,チャネル幅とポジションのサイズを総資産の割合として調整し,それによって異なるレベルの取引頻度を実現できます.

利点分析

この取引戦略には以下の利点があります

  1. VWAP指標を用いて値の中間点を決定することは,主流の市場方向性を把握できる.
  2. チャンネル範囲内での取引は,より明確な操作のために騒音の干渉を避ける
  3. 異なるレベルのチャネルを組み合わせて,バッチで展開することでリスクが減少します
  4. 利回りによる利得の適正な取り上げは,急速な逆転による損失を回避する

VWAP指標は平均価格レベルをよく反映できるため,チャネルラインに基づく取引は,価値の中間点を効果的にロックし,短期変動によって偏見を避けることができます.同時に,異なるパラメータを持つチャネルを組み合わせ,バッチでポジションを構築することで,リスクを効果的に制御し,強制清算につながる一方的なリスク集中を防ぐことができます.最後に,VWAP移動平均線の回帰に近いポジションをタイミングで利益を得て閉鎖することで,価格逆転による損失を削減することができます.

リスク分析

この戦略には注意すべきリスクもあります.

  1. VWAP指標は高周波取引に敏感ではなく,極端な価格異常を反映できない.
  2. チャンネル幅パラメータの設定が正しくない場合,過剰に攻撃的な取引につながる可能性があります.
  3. ポジションを閉じる回帰操作の範囲があまりにも広い場合,それは閉じ込められた損失を引き起こす可能性があります.

VWAP指標は,高周波取引の変動に敏感ではない.極端な価格格差や短期的異常の場合,それでも不必要な取引信号と損失を誘発する.また,チャネルパラメータがあまりにも緩やかに設定されている場合,無効な価格浸透信号を容易に形成する.最後に,レグレッションオペレーションで閉じるポジションの範囲があまりにも広く設定されている場合,利益を得るために最適なタイミングを逃し,捕らえた損失を引き起こす可能性があります.

対策は,パラメータ設定を合理的に評価し,チャネルパラメータを適切に調整すること,他の指標を組み合わせて価格異常を判断し,盲目信号を避けること,そして,最終的に,より良い利益を得る効果を達成するために,異なるレベルのチャネルと回帰範囲のパラメータ最適化を評価することです.

オプティマイゼーションの方向性

この戦略は以下の方向で最適化できます.

  1. チャンネルレベルを高め パラメータの組み合わせを最適化
  2. 突破値の有効性を決定するために取引量指標を組み合わせる
  3. ストップ・ロスの戦略を追加し,ストップ・ロスの引き上げ率を設定する.

チャンネルのラインのレベルをさらに増やし,より安定した取引効果を達成するために最適化のためにパラメータを組み合わせることができます.また,取引損失を引き起こす無効な価格ギャップを避けるために取引量判断ルールを追加することができます.最後に,ストップ・ロスのルールは,ポジションの損失が一定パーセントに達すると,リスクを効果的に制御して,ポジションの終了にストップ・ロスを設定することができます.

概要

この戦略は,比較的安定した取引戦略を達成するために,VWAP指標と価格チャネルを組み合わせます. 戦略パラメータ設定は,ユーザーが自分の好みに合わせて調整できるように柔軟です. この戦略は,価値ミッドポイントの方向性を効果的に決定することができます. パラメータ組み合わせとバッチ構築を通じて,安定した収益性を達成できます. 戦略にはまだ改善の余地があるものの,全体的には,高度な実用性を持つ定量的な取引戦略です.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %")
lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
shortlevel1 = input(1.0, title = "Short line 1")
longlevel1 = input(-1.0, title = "Long line 1")
needoffset = input(true, title = "Offset")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
truetime = true

//VWAP
ma = vwap(hlc3)

//Levels
longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close


//Lines
colorlong1 = long1 ? color.lime : na
colorshort1 = short1 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")


//Trading
lotlong = 0.0
lotshort = 0.0
lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1]
lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1]


if ma > 0
    if lotlong > 0
        lotslong = 0.0
        lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0
        strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime))
    if lotshort > 0
        lotsshort = 0.0
        lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0
        strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime))
if strategy.position_size > 0
    strategy.exit("TPL", "L1", limit = ma)
if strategy.position_size < 0
    strategy.exit("TPS", "S1", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("S1")
    strategy.cancel("TPL")
    strategy.cancel("TPS")

もっと