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

2つの移動平均の遅延ブレイクストラテジー

作者: リン・ハーンチャオチャン,日付: 2024-04-01 11:58:55
タグ:

img

概要

ダブル・ムービング・アベレージ・ラグニング・ブレイクアウト戦略 (Dual Moving Average Lagging Breakout Strategy) は,一般的に使用される技術分析の取引戦略である.この戦略は,異なる期間の2つの単純なムービング・アベレージ (SMAs) と平均真数範囲 (ATR) インジケーターを組み合わせ,市場のトレンドのターニングポイントを把握し,低リスクで高リターン取引を達成することを目的としている.その基本的なアイデアは,ムービング・アベレージと市場の変動の遅滞性を利用し,価格がムービング・アベレージを突破し,変動が制御可能な範囲内にあるときに取引信号を生成することである.

戦略原則

この戦略の主な原則は以下のとおりです.

  1. 異なる期間の2つの単純な移動平均値 (SMA) を計算し,デフォルト期間の値は 14 と 50 です.
  2. 市場変動を測定するためのATR指標を計算し,デフォルト期間が14である.
  3. 価格変動の基準範囲として,ATR上位および下位帯をグラフ化します.上位帯は,ATRを因数で掛け合わせた値 (デフォルト1.5) を最高価格に足し,下位帯は,ATRを因数で掛け合わせた値を最低価格から引いて得られます.
  4. 閉じる価格が短期移動平均値を超え,短期移動平均値が長期移動平均値を超えると,ロングシグナルが生成され,上向き矢印がキャンドルスティックの下に描かれます.
  5. 閉じる価格が短期移動平均を下回り,短期移動平均が長期移動平均を下回ると,ショート信号が生成され,下向き矢印がキャンドルスタイルの上に描かれます.
  6. ストップ・ロストとテイク・プロフィートのレベルを設定します.ストップ・ロストレベルは最低価格マイナスATRを因数で掛け,テイク・プロフィートのレベルはエントリー価格プラス (エントリー価格 - ストップ・ロストレベル) を2で掛けます.

上記の原則から,この戦略は,動向平均システムの傾向判断とATR指標の変動測定を組み合わせて,トレンドフォローに重点を置き,引き上げリスクを制御することを目的として,トレンドフォロー戦略であることがわかります.

利点分析

二重移動平均遅延ブレイクアウト戦略には以下の利点があります:

  1. トレンドトラッキング:移動平均システムを通してトレンド方向を判断し,主要市場傾向を把握し,市場をフォローします.
  2. リスク管理: ATR指標を使用して市場の変動を測定し,引き下げを許容範囲内にとどめるために合理的なストップロスのレベルを設定します.
  3. 柔軟なパラメータ: 移動平均期,ATR期,倍数値などのパラメータは,異なる市場や機器に応じて最適化され調整され,一定の普遍性があります.
  4. シンプルで直接的な: 取引シグナルはシンプルで明確で,さまざまなレベルの投資家に適しています.

リスク分析

この戦略にはいくつかの利点がありますが,以下のリスクもあります.

  1. 頻繁な取引:市場が非常に不安定で,トレンドが不明である場合,この戦略は頻繁な取引信号を生成し,取引コストを増加させる可能性があります.
  2. 遅延: 移動平均システムには固有の遅延があり,市場のターニングポイントの開始時に一定の引き下げがある可能性があります.
  3. パラメータ最適化: 異なるパラメータ設定は戦略のパフォーマンスに大きな影響を与え,異なる市場や楽器のためのパラメータ最適化が必要になり,実装の難易度は増加します.

上記のリスクに対処するために,戦略は以下の側面から最適化および改善することができます:

  1. トレンドフィルタリングを導入します. 取引信号を生成する前に,まず,より大きなタイムフレームのトレンド方向を決定し,より大きなタイムフレームでトレンドが明確になったときにのみ取引し,頻繁な取引を減らす.
  2. ストップ・ロストとテイク・プロフィートを最適化: ストップ・ロストを遅らせたり,波動性ストップ・ロストなどのダイナミックなストップ・ロスト方法の導入を検討し,戦略の柔軟性を高めるため,市場の波動性に基づくテイク・プロフィートのレベルを動的に調整する.
  3. 組み合わせの最適化: この戦略を他の技術指標や基本的な要因と組み合わせて戦略の信頼性を向上させる.

最適化方向

この戦略は,次の側面から最適化できます.

  1. アダプティブパラメータ最適化: 異なる楽器やタイムフレームに対して,手動パラメータ調整の作業負荷を減らすために最適なパラメータ組み合わせを自動的に探す. 遺伝子アルゴリズムやグリッド検索などの方法が最適化に使用できます.
  2. シグナルフィルタリング: 取引シグナルを生成した後,シグナル品質を改善するために,シグナルを二次的に確認するための他の技術指標または基本的な要因をさらに導入します.例えば,トレンド強さを判断するためのボリューム指標を追加します.トレンド継続に全体的な環境が有利かどうかを決定するために,マクロ経済データを追加します.
  3. ポジション管理: ポジションを開設する際,市場変動や口座リスクなどの要因に基づいてポジションサイズを動的に調整し,単一取引リスクを制御します.ケリー式や固定比率方法などの方法がポジション管理に使用できます.
  4. トレイリング・ストップ・ロスト:初期ストップ・ロストレベルは固定されている.価格が有利な方向に動くと,引き下げを削減し,資本利用効率を改善するために有利な方向にストップ・ロストレベルを移動することを検討する.一般的な方法には,トレーリング・ストップ・ロストとブレイク・ストップ・ロストが含まれます.

上記の最適化は戦略の適応性,強度,収益性を向上させることができるが,過度に最適化は曲線フィッティングにつながり,結果としてサンプル外でのパフォーマンスが低下する可能性があることに注意すべきである.したがって,十分なバックテストと検証は,サンプル内およびサンプル外の両方で実施されるべきである.

概要

ダブル・ムービング・アベア・ラグリング・ブレイクアウト戦略は,動平均システムを通じてトレンド方向を決定し,ATR指標を使用してリスクを制御し,リスクを管理しながらトレンド動きを把握する古典的なトレンドフォロー戦略である.特定の遅れと頻繁な取引問題があるにもかかわらず,ストップ・ロストとテイク・プロフィートレベルを最適化すること,シグナルフィルタリング,適応性パラメータ最適化,ポジション管理などの方法によって戦略のパフォーマンスをさらに改善することができ,実践的な定量的な取引戦略となっています.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="2 Moving Averages", shorttitle="2MA", overlay=true)

// Moving Averages
len = input(14, minval=1, title="Length MA1")
src = input(close, title="Source MA1")
ma1 = sma(src, len)

len2 = input(50, minval=1, title="Length MA2")
src2 = input(close, title="Source MA2")
ma2 = sma(src2, len2)

// Plotting Moving Averages
plot(ma1, color=#0b6ce5, title="MA1")
plot(ma2, color=#00ff80, linewidth=2, title="MA2")

// ATR Bands
atrLength = input(14, title="ATR Length")
atrMultiplier = input(1.5, title="ATR Multiplier")
upperBand = high + atr(atrLength) * atrMultiplier
lowerBand = low - atr(atrLength) * atrMultiplier

u =plot(upperBand, color=color.rgb(217, 220, 223, 84), title="ATR Upper Band")
l = plot(lowerBand, color=color.rgb(217, 220, 223, 84), title="ATR Lower Band")
fill(u, l, color=#471eb821, title="ATR Background")

// Conditions for plotting arrows
upArrowCondition = ma1 > ma2 and crossover(close, ma1)
downArrowCondition = ma1 < ma2 and crossunder(close, ma1)

// Plotting arrows
plotshape(upArrowCondition, style=shape.arrowup, color=color.rgb(66, 45, 255), size=size.normal, location=location.belowbar, title="Up Arrow")
plotshape(downArrowCondition, style=shape.arrowdown, color=color.red, size=size.normal, location=location.abovebar, title="Down Arrow")
// Checkbox for trade execution
showTrades = input(true, title="Hiển thị giao dịch")

// Buy Condition
if (upArrowCondition and showTrades)
    strategy.entry("Buy", strategy.long)

// Sell Condition
if (downArrowCondition and showTrades)
    strategy.entry("Sell", strategy.short)

// Stop Loss and Take Profit
stopLossBuy = low - atr(14) * atrMultiplier
takeProfitBuy = close + (close - stopLossBuy) * 2

stopLossSell = high + atr(14) * atrMultiplier
takeProfitSell = close - (stopLossSell - close) * 2

strategy.exit("Exit Buy", "Buy", stop=stopLossBuy, limit=takeProfitBuy)
strategy.exit("Exit Sell", "Sell", stop=stopLossSell, limit=takeProfitSell)



もっと