
この戦略は,螺旋指数と移動平均を組み合わせて,価格トレンドの方向と強さを識別し,潜在的多価と空調のシグナルを生成する.螺旋正指数線が螺旋負指数線を突破すると,この交差点をグラフにマークし,閉盘価格が移動平均より高い場合は多価シグナルを生成する.螺旋負指数線が螺旋正指数線を突破すると,閉盘価格が移動平均より低い場合は空調シグナルを生成する.
螺旋指数:螺旋正指数線 ((VI+) と螺旋負指数線 ((VI-) を含む.これは価格トレンドの方向と強さを識別するために使用される.
移動平均:選択した移動平均方法 (SMA,EMA,SMMA,WMAまたはVWMA) を使って価格データを平滑化すると,得られた平滑線は平滑線と呼ばれます.
多数と空白の信号を決定する:VI+線がVI線を通過すると,その交差点をマークし,閉盘価格が平線より高い場合は多数信号を生成する.VI+線がVI線を通過すると,閉盘価格が平線より低い場合は空白信号を生成する.
トレンド認識とスライドフィルターの優位性を組み合わせて,トレンドマーケットでトレンドを捉え,振動市場で誤ったシグナルを回避できます.
螺旋指数は,トレンドの方向と強さを効果的に識別できます. 移動平均は,一部のノイズをフィルターすることができます.
戦略の論理はシンプルで明快で,理解し,実行しやすい.
異なる市場環境に対応するカスタマイズ可能なパラメータ
整合と明確なトレンドがない市場では,誤信号とSERIALの停止が起こり得る.
参数設定が不適切であることも戦略のパフォーマンスに影響する.例えば,移動平均の長さが短すぎるとフィルタリング効果が悪く,長すぎるとトレンドの変化が遅れていることを認識する.
大規模な金融事件の後の急激な変動など,予期せぬ事態に対して予防的な役割を果たすことができない.
傾向の信頼性を判断するために,取引量指標など,他の指標と組み合わせて導入することができます.
オプティマイゼーションパラメータを設定し,移動平均のトレンドトラッキングとノイズフィルタリングのバランスをとる.
損失を抑えるためのストップ・ラスト戦略を導入する.
機械学習などの方法を使用してパラメータを自動的に最適化します.
リスク管理モジュールと組み合わせたポジション調整
この戦略は,螺旋指数と移動平均を簡潔に効果的に組み合わせることで,優れたトレンドキャプチャ効果を達成します.トレンドの方向を認識しながら,誤った信号を減らすことができる一定のノイズフィルタリング能力があります.戦略の論理は概して簡潔で,使用の柔軟性があり,トレンド市場でのパフォーマンスは良好です.より多くのフィルタリング手段を導入し,適切なパラメータ設定を最適化することで,リスク制御性がさらに向上できます.
/*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