移動平均の確認と回転式クロス戦略

作者: リン・ハーンチャオチャン開催日:2024年2月2日14時50分08秒
タグ:

img

概要

この戦略は,ヴォルテックス指標と移動平均線を組み合わせて,価格動向の方向性と強さを特定し,潜在的な長短信号を生成する. ヴォルテックスポジティブライン (VI+) がヴォルテックスネガティブライン (VI-) の上を横切ると,各クロスオーバーがチャートに強調される. 閉値が移動平均線よりも高くなった場合,長い信号が生成される. VI-が移動平均線よりも高くなった場合,閉値が移動平均線よりも低くなった場合,短い信号が生成される.

戦略の論理

  1. ヴォルテックス インディケーター: ヴォルテックス ポジティブ (VI+) と ヴォルテックス ネガティブ (VI-) の 2 つの線で構成されています. 価格動向の方向性と強さを特定するために使用されます.

  2. 移動平均 (MA): 価格データを平滑させるために選択した移動平均方法 (SMA,EMA,SMMA,WMAまたはVWMA) を使用する.平滑した線は平滑線と呼ばれます.

  3. 長い信号と短い信号を決定する.VI+がVI−を超えると,それぞれの交差点が強調される.閉じるがスムージングラインを超えると,長い信号が生成される.VI−がVI+を超えると,閉じるがスムージングラインを下ると,短い信号が生成される.

利点

  1. トレンド識別とスムージングを組み合わせて,トレンド市場におけるトレンドを把握し,不安定な市場における誤った信号を避ける.

  2. 渦輪指標は,トレンドの方向と強さを効果的に識別します.移動平均は,いくつかのノイズをフィルターします.

  3. シンプルで明快な戦略論理 分かりやすく実行できます

  4. パラメータをカスタマイズし 異なる市場環境に適応します

リスク

  1. 範囲やトレンドのない市場では 誤った信号やウィップソーを生む可能性があります

  2. 不適切なパラメータ設定は戦略のパフォーマンスに影響を与えます.例えば,短すぎる移動平均値はスムージング能力が低下し,トレンドの変化を認識するのに遅くなる.

  3. 予期せぬ大事件による極端な価格変動から守れない.

改良

  1. トレンドの信頼性を判断するために 容量などの他の指標を組み込む

  2. 移動平均値のトレンドフォローとノイズフィルタリングをバランスさせるパラメータを最適化する.

  3. ストップ損失をコントロール損失に追加します

  4. 自動パラメータ最適化のために機械学習を利用する.

  5. リスク管理モジュールを組み込むこと

結論

この戦略は,トレンドを把握するために,ヴォルテックスインジケーターと移動平均を効果的に組み合わせます. 誤った信号を減らすためのノイズフィルタリング能力を備えてトレンド方向を特定します. 論理は使いやすくて柔軟で,トレンド市場ではうまく機能します. より多くのフィルタを組み込み,パラメータを最適化し,ストップ損失を追加することでリスク管理のさらなる改善を達成することができます.


/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

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

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

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP

もっと