VWAPとクロス期間シグナルに基づくロングとショートのダイナミックストッププロフィットとストップロス戦略


作成日: 2024-03-08 17:37:21 最終変更日: 2024-03-08 17:37:21
コピー: 7 クリック数: 693
1
フォロー
1617
フォロワー

VWAPとクロス期間シグナルに基づくロングとショートのダイナミックストッププロフィットとストップロス戦略

概要

この戦略は,日線のVWAP (取引量重平均価格) を入場と出場の信号として使用する.閉じる価格のVWAPを突破すると多し,止損はVWAPの下の前K線低点に設定され,ターゲット価格は開場価格の3ポイント上に設定される.閉じる価格のVWAPを突破すると空し,止損はVWAPの上の前K線高点に設定され,ターゲット価格は開場価格の3ポイント下に設定される.この戦略には出場条件が含まれていないので,逆転の信号が出るまで取引が続けられる.

戦略原則

  1. トレンド判断と取引シグナルの基礎として,日線のVWAPデータを取得する.
  2. VWAPの上昇/下落を判断し,順番に多額の取引や空白の取引を誘発する.
  3. 利回りは,前K線がVWAPの下の低点であれば,それをストップポイントとして使用し,そうでなければVWAPをストップポイントとして直接使用する.空調は,その逆である.
  4. ポジション開設後,それぞれ3つの固定ストップを設定します.
  5. 戦略は,逆転シグナルを誘発し,新しいポジションを開くまで継続的に実行されます.

動的ストップと固定ポイントストップを活用しながら,周期間のVWAPデータでトレンドを判断することで,トレンドの動きを効果的に把握し,撤回リスクを制御し,利益をタイムリーにロックすることができます.

優位分析

  1. シンプルで有効:戦略の論理が明確で,VWAPの1つの指標だけで,トレンド判断とシグナルトリガーを実現し,簡単に実行し,最適化できます.
  2. ダイナミックストップ:前Kラインの高低点によるストップ設定により,市場の変動に適応し,リスクを低減する.
  3. 固定ポイント数ストップ: 固定ポイント数でターゲット価格を設定し,利益をタイムリーにロックし,利益の反転を避けるのに役立ちます.
  4. タイムリーストップ: 戦略は,逆転シグナルを誘発すると,すぐにポジションをクリアし,すでに有利なポジションに追加的な損失を及ぼすことなく,新しいポジションを開き,新しいトレンドの動きを捕捉します.

リスク分析

  1. パラメータ最適化: 戦略は固定3点をストップとして使用し,実際の取引では,異なる指標と市場の特徴に応じて最適化する必要があり,最適なパラメータを選択する.
  2. 変動状況:変動状況下では,頻繁な出入は取引コストを高くし,収益に影響を及ぼす可能性があります.
  3. トレンド継続性: 戦略はトレンドの動きに依存し,市場が区間振動,またはトレンドの持続性が弱ければ,取引信号が多く現れ,より多くのリスクがもたらされる可能性があります.

最適化の方向

  1. トレンドフィルター:移動平均,MACDなどの他のトレンド指標を加え,トレンドを二次確認し,信号の信頼性を向上させる.
  2. ダイナミックストップ:市場の波動性,ATRなどの指標に基づいて,市場に適したストップポイントを動的に調整する.
  3. ポジション管理:口座の資金,リスクの好みなどの要因に応じて,取引毎のポジションサイズに動的に調整する.
  4. 取引時間の選択:指標の特徴と取引活動の程度に応じて,最適の取引時間を選択し,戦略の効率性を高める.

要約する

この戦略は,クロスサイクルVWAPデータを使用してトレンド判断とシグナルを誘発し,動的ストップと固定ポイント数ストップの方法でリスクを制御し,利益をロックする.これは,シンプルで効果的な定量取引戦略である.トレンドフィルタリング,動的ストップ,ポジション管理,取引時間選択などの側面の最適化により,戦略の安定性と収益の可能性をさらに向上させることができます.しかし,実際のアプリケーションでは,市場の特徴,取引コスト,パラメータ最適化などの要因を注意する必要があります.

ストラテジーソースコード
/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)

// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")

enterLong = ta.crossover(close, vwap_1d)
exitLong  = ta.crossunder(close, vwap_1d)

enterShort = ta.crossunder(close, vwap_1d)
exitShort  = ta.crossover(close, vwap_1d)

if enterLong
    sl := low[1]>vwap_1d ?low[1]:vwap_1d
    tgt:=close+3
    strategy.entry("EL", strategy.long, qty=posSize)
    strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
    sl := high[1]<vwap_1d ?high[1]:vwap_1d
    tgt := close-3
    strategy.entry("ES", strategy.short, qty=posSize)
    strategy.exit('exitES', 'ES', stop=sl, limit=tgt)

// if exitLong
//     strategy.close("EL")
// if exitShort
//     strategy.close("ES")





// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low[1]
//     takeProfit = close+3
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))