資源の読み込みに... 荷物...

多期移動平均のクロスオーバー戦略をフォローするダイナミックな傾向

作者: リン・ハーンチャオチャン開催日:2024年12月13日10時30分
タグ:SMAエイママルチ

img

概要

この戦略は,複数の期間の移動平均値に基づいたトレンドフォローする取引システムである. 市場全体のトレンド方向を決定するために89期および21期間のシンプル・ムービング・平均値 (SMA) を利用し,特定の取引信号を特定するために5期間の指数関数移動平均値 (EMA) の高値と低値を組み込む. この戦略は,固定ストップ・ロストとトレーリング・テイク・プロフィートメカニズムと組み合わせた二重ポジション管理アプローチを採用している.

戦略の原則

基本論理には次の主要な要素が含まれます.

  1. トレンド決定: 89 期間のSMAと 21 期間のSMAの相対位置と価格位置を使用してトレンドを識別する.価格と 5 期間のEMAが89 期間のSMAよりも高い 21 期間のSMAを超えると上昇傾向が確認される.その反対は下落傾向を確認する.
  2. 入力シグナル: 上向きのトレンドでは,価格が5期間のEMAの低値に戻るとロングポジションを入れ,下向きのトレンドでは,価格が5期間のEMAの高値に戻るとショートポジションを入れます.
  3. ポジション管理: 発信された信号ごとに2つの同一の契約ポジションを開く.
  4. リスク管理:第1ポジションの固定ストップ損失と利益目標,第2ポジションのトラッキングストップ損失を適用する.

戦略 の 利点

  1. 複数のタイムフレームの確認: 異なる期間の移動平均の組み合わせにより,より包括的な傾向評価が提供され,誤った信号が減少します.
  2. 柔軟な利益取得: 短期変動と長期的傾向の両方を把握するために,固定および後続的な利益取得方法を組み合わせます.
  3. 制御リスク:各取引信号に対して固定リスクの露出で明確なストップ・ロスのレベルを設定する.
  4. 体系的な操作: 明確な取引規則は主観的な判断を最小限に抑え,プログラム的に実装しやすくします.

戦略リスク

  1. 統合リスク:横向市場における移動平均の頻繁なクロスオーバーは,過剰な誤った信号を生む可能性があります.
  2. スリップリスク:高変動期間の理論的価格と実際の実行価格の間の重要な価格偏差.
  3. 資金管理リスク: 固定契約量取引はすべての口座サイズに合致しない場合があります.
  4. パラメータ感度:戦略の業績は移動平均期間の選択に大きく依存し,異なる市場向けに最適化が必要である.

オプティマイゼーションの方向性

  1. ポジションのダイナミック・サイジング: 口座の自己資本と市場の変動に基づいて契約量の調整を推奨する.
  2. 市場環境フィルタリング:トレンド強度指標 (ADXのような) を追加して,変動する市場での取引頻度を減らす.
  3. ストップ・ロスの強化: 異なる市場条件における適応性を向上させるため,動的ストップ・ロスの調整のためにATRを使用することを検討する.
  4. シグナル確認: 信号の信頼性を高めるため,音量とモメント指標を組み込む.

概要

この戦略は,柔軟なポジションマネジメントとリスク管理方法を実装しながら,複数の期間の移動平均値を通じて市場の傾向を把握する包括的なトレンドフォローシステムを表しています.最適化のための余地があるにもかかわらず,基本的なフレームワークは良い実用性と拡張性を示しています. 戦略の安定性は,パラメータを調整し,異なる取引手段と市場環境のためのフィルタリング条件を追加することによって強化できます.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
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/
// © tobiashartemink2

//@version=5
strategy("High 5 Trading Technique", overlay=true)

// --- Input parameters ---
sma89Length = input.int(title="SMA 89 Length", defval=89)
sma21Length = input.int(title="SMA 21 Length", defval=21)
ema5HighLength = input.int(title="EMA 5 High Length", defval=5)
ema5LowLength = input.int(title="EMA 5 Low Length", defval=5)
contracts = input.int(title="Aantal Contracten", defval=1)
stopLossPoints = input.int(title="Stop Loss Points per Contract", defval=25)
takeProfitPoints = input.int(title="Take Profit Points per Contract", defval=25)

// --- Calculate moving averages ---
sma89 = ta.sma(close, sma89Length)
sma21 = ta.sma(close, sma21Length)
ema5High = ta.ema(high, ema5HighLength)
ema5Low = ta.ema(low, ema5LowLength)

// --- Identify trend and order of moving averages ---
longSetup = close > sma89 and close > sma21 and ema5High > sma21 and sma21 > sma89
shortSetup = close < sma89 and close < sma21 and ema5Low < sma21 and sma21 < sma89

// --- Entry signals ---
longTrigger = longSetup and close <= ema5Low
shortTrigger = shortSetup and close >= ema5High

// --- Entry orders ---
if (longTrigger)
    strategy.entry("Long 1", strategy.long, qty=contracts)
    strategy.entry("Long 2", strategy.long, qty=contracts)

if (shortTrigger)
    strategy.entry("Short 1", strategy.short, qty=contracts)
    strategy.entry("Short 2", strategy.short, qty=contracts)

// --- Stop-loss and take-profit for long positions ---
if (strategy.position_size > 0)
    strategy.exit("Exit Long 1", "Long 1", stop=strategy.position_avg_price - stopLossPoints, limit=strategy.position_avg_price + takeProfitPoints)
    strategy.exit("Exit Long 2", "Long 2", stop=strategy.position_avg_price - stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Stop-loss and take-profit for short positions ---
if (strategy.position_size < 0)
    strategy.exit("Exit Short 1", "Short 1", stop=strategy.position_avg_price + stopLossPoints, limit=strategy.position_avg_price - takeProfitPoints)
    strategy.exit("Exit Short 2", "Short 2", stop=strategy.position_avg_price + stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Plot moving averages ---
plot(sma89, color=color.blue, linewidth=2)
plot(sma21, color=color.red, linewidth=2)
plot(ema5High, color=color.green, linewidth=2)
plot(ema5Low, color=color.orange, linewidth=2)


関連性

もっと