適応型移動平均クロスオーバートレーリングストップ戦略

SMA MA EMA ATR SL TP
作成日: 2024-07-29 14:27:58 最終変更日: 2024-07-29 14:27:58
コピー: 0 クリック数: 544
1
フォロー
1617
フォロワー

適応型移動平均クロスオーバートレーリングストップ戦略

概要

適応型移動平均クロストラッキングストップ戦略は,複数の技術指標を組み合わせた量化取引戦略である.この戦略は,主に高速と遅いSMAの交差信号に基づいて取引し,適応型トラッキングストップを利用してリスクを管理する.この戦略は,変動率に基づくポジションサイジングや適応型ストップレベルなどのいくつかの高度な機能を組み込み,異なる市場条件下で適応性と強性を向上させる.

戦略原則

この戦略の核心的な論理には以下の重要な要素が含まれています.

  1. 移動平均の交差: 2つの異なる周期の単純な移動平均 ((SMA) を用いて,それぞれ高速SMA ((デフォルト5周期) と遅いSMA ((デフォルト50周期) がある.高速SMAが遅いSMAを上方から横切るとき,多信号が触発される.

  2. ポジションサイジング:戦略は,口座残金と現在の価格に基づく動的ポジションサイジング方法を採用する.同時に,投資資金の割合を調整できる”信頼”の要素を導入する.

  3. トラッキング・ストップ: パーセントベースのトラッキング・ストップの仕組みを導入する.ストップレベルは価格上昇に伴い上昇し,利益をロックし,撤収を制限する.

  4. 適応特性: “fancy_tests”オプションを有効にした場合,戦略は標準差に基づくダイナミックストップ損失パーセントを使用し,ストップ損失レベルは市場の変動に応じて自主的に調整することができます.

  5. 退出論理:戦略は主にストップ・ロスを追跡して平定する.固定利益の結末が設定されていない.

戦略的優位性

  1. トレンドフォロー: 移動平均の交差を使用することで,戦略は中長期のトレンドを捉え,強烈なトレンドで有意な利益を得るのに役立ちます.

  2. リスクマネジメント: 追跡可能なストップ・ロスの導入により,下行リスクが効果的に管理され,利潤は自由に成長できます.

  3. 適応性: 戦略は,変動率の要素を組み込むことにより,ストップレベルを調整することで,異なる市場環境により良く適応することができます.

  4. 資金管理:ダイナミックなポジションサイジングは,口座が成長するにつれて取引規模を増やすのに役立ちます.また,口座が縮小するときにリスクの穴を自動的に減らすこともできます.

  5. 柔軟性:戦略は,移動平均期数,ストップ・パーセンテージなど,複数の調整可能なパラメータを提供し,ユーザーは,異なる市場と個人のリスクの好みに応じて最適化することができます.

戦略リスク

  1. 偽突破:横盤または振動的な市場では,移動平均の偽突破が頻繁に起こり,複数のストップ・ロスの出場を引き起こします.

  2. 遅滞性:移動平均は本質的に遅滞の指標であり,激しい波動のある市場では十分に迅速に反応しない可能性があります.

  3. 過剰取引:パラメータが正しく設定されていない場合,頻繁に出場し,取引コストを増加させる可能性があります.

  4. 撤回リスク: 追跡可能なストップ・ローズがあるにもかかわらず,急速な反転の市場では,大きな撤回が起こる可能性があります.

  5. 一方向取引: 策略は,現在空白をしないだけで,下向きのトレンドでチャンスを逃すか,損失を被る可能性がある.

戦略最適化の方向性

  1. 多時間枠分析:偽信号を減らすために,より長い周期の移動平均のようなより長期の傾向判断指標を導入する.

  2. 短期外為のロジックへの加入:戦略を拡張して短期外為の取引を支援し,戦略の包括性と収益の機会を向上させる.

  3. 入場タイミングの最適化:入場の精度を高めるため,他の技術指標 (RSI,MACDなど) と組み合わせて取引信号をフィルターすることを考慮する.

  4. 動的パラメータ最適化:市場の波動的な動的動向に基づいて移動平均周期の調整など,適応的パラメータ調整メカニズムを実施する.

  5. 利回りメカニズムの追加: ストップ・ロスを追跡するだけでなく,技術指標または固定目標に基づく利回りルールを追加することも検討できます.

  6. ポジション管理の改善:ケリー指針または他のリスク平価化方法に基づくより複雑なポジションサイジング戦略を実施する.

  7. 基本面フィルターを追加: 株式取引については,基本面指標を追加取引フィルター条件として導入することを検討できます.

要約する

適応性のある移動平均クロストラッキングストップ戦略は,複数の量化取引コンセプトを融合した総合的な戦略である.移動平均クロストラッキングストップ戦略は,トレンドをキャプチャし,トラッキングストップリスクを利用し,動的パラメータ調整で適応性を向上させる.いくつかの固有のリスクと限界があるものの,慎重なパラメータの最適化とさらなる戦略的改善により,安定した取引システムになる可能性がある.戦略のモジュラー設計は,将来の拡張と最適化のための良い基盤を提供します.

ストラテジーソースコード
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 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/
// © chinmay.hundekari

//@version=5
//@version=5
strategy("test", overlay = true)

// Calculate two moving averages with different lengths.
SLMA = input.int(50,"SMA",minval=10,step=1)
FSMA = input.int(5,"SMA",minval=1,step=1)
fancy_tests = input.bool(true,"Enable Fancy Changes")
longLossPerc = input.float(2, title="Trailing Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01
stdMult = input.float(2.0, title="Standard Deviation Multiplier",
     minval=0.0, step=0.01)

float fastMA = ta.sma(close, FSMA)
float slowMA = ta.sma(close, SLMA)
float closMA = ta.sma(close, 25)

confidence = 1.0
if (fancy_tests)
    longLossPerc := stdMult * ta.stdev(ohlc4, 20)/close
balance = strategy.initial_capital + strategy.netprofit
balanceInContracts = balance* confidence/close

// Enter a long position when `fastMA` crosses over `slowMA`.
if ta.crossover(fastMA, slowMA)
    strategy.entry("BUY", strategy.long, qty=balanceInContracts)
//longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
//Trailing Stop loss Code
longStopPrice = 0.0
percLoss = longLossPerc
longStopPrice := if strategy.position_size > 0
    //if (strategy.openprofit_percent/100.0 > longLossPerc)
    //    percLoss := math.min(strategy.openprofit_percent/200.0, longLossPerc)
    stopValue = close * (1 - percLoss)
    math.max(stopValue, longStopPrice[1])
else
    0
if strategy.position_size > 0
    strategy.exit("STP", stop=longStopPrice)
plot(strategy.position_size > 0 ? longStopPrice : na,
     color=color.red, style=plot.style_cross,
     linewidth=2, title="Long Stop Loss")
// Enter a short position when `fastMA` crosses under `slowMA`.
//if ta.crossunder(fastMA, closMA)
//    strategy.close_all("SEL")//strategy.entry("sell", strategy.short)

// Plot the moving averages.
plot(fastMA, "Fast MA", color.aqua)
plot(slowMA, "Slow MA", color.orange)
plot((confidence)*(close), "Confidence", color=color.green, linewidth=2)