モメンタム指標に基づく適応型取引戦略


作成日: 2024-01-05 11:43:25 最終変更日: 2024-01-05 11:43:25
コピー: 0 クリック数: 564
1
フォロー
1619
フォロワー

モメンタム指標に基づく適応型取引戦略

概要

この戦略は,動量指標に基づく自己適応型株取引戦略である. ブリン帯,ケルトナー通路,価格圧縮指標を統合し,トレンド判断,ブレークポイント識別,ストラスト・エグゼットの全自動取引を実現している.

戦略原則

この戦略は,主にブリン帯とケルトナー通路を通じて価格通路を構築し,通路の突破を識別して取引信号を形成する.価格が下から上へ通路を破るとき,看板操作を行う.価格が上から下へ通路を破るとき,看板操作を行う.さらに,この戦略は,価格圧縮指標を使用して,現在価格通路内にいるかどうかを判断し,指標差値の正負に応じて,対応する操作を行う.

具体的には,ブリン帯は,価格の標準差を計算することによって,上下軌道を得ている.ケルトナーチャネルは,価格の平均値±平均波動範囲を計算することによって,上下軌道を得ている.両チャネルがfdopenの発生時に,取引が収束に入ると考え,次の突破を待つ.価格圧縮指標は,価格が両チャネル内で圧縮されているかどうかを反映し,圧縮指標の差値の正負の状況に基づいて取引の方向を判断する.

全体として,この戦略は,価格の動きを判断する複数の指標を融合させ,明確な長短論理を形成し,偽の突破を効果的にフィルターし,高い確率の取引機会を識別することができます.

戦略的優位性

  1. 複数の指標を統合し,判断力を強める.指標の組み合わせは互補し,識別精度を向上させる.

  2. 圧縮指数差値の判定,偽突破の軽減.指数差値の補助条件として,無意味な取引を避ける.

  3. 自動適応通路のストップ,効率的なリスク管理. 通路は,ストップポジションとして,市場の変動に応じて自動的に調整し,損失を減らすことができます.

  4. 簡単なパラメータ設定,自動化に適した. テスト・最適化に便利で,自動取引システムへの統合に容易な,いくつかの主要なパラメータのみ.

戦略リスク

  1. 多空変換が頻繁であれば,取引回数が増加する.市場が揺れ動いているときは,頻繁にポジション開設や平仓につながる可能性がある.

  2. 指数パラメータが不適切である場合,訓練された良い機会が逃れることがあります. 十分なテストと最適化が必要であり,最適なパラメータを見つける必要があります.

  3. 明確な方向性のある株価のみに適し,極端に変動する市場には適さない.指標は容易に迷惑され,誤った信号を生成する.

戦略最適化の方向性

  1. ポジション制御モジュールを追加し,資金利用の効率を最適化する.例えば,突破強度に応じて資金を分配するなど.

  2. 機械学習モデルの追加で,指数パラメータを動的に調整する.指数パラメータを周期や株に自動的に適応させる.

  3. 止損戦略の強化,止損のタイミングを判断する補助指標の導入. 改善すると,重要なポイントで止損の回数を減らすことができる.

要約する

この戦略はブリン帯,ケルトナー通路,価格圧縮指標を統合し,明確な判断論理とリスク制御システムを形成する.それは,トレンド判断と突破操作を融合し,状況に自動的に適応し,高確率の取引機会を識別する.パラメータの最適化と補助条件の追加により,この戦略はさらに強化され,取引の量化のための重要なツールになる.

ストラテジーソースコード
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juliopetronilo

//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)

// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")

source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")

dirmov(len) =>
    up = change(high)
    down = -change(low)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
    [adx_val, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)

// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")