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

フィボナッチリトレースメントとエクステンション 多指標量的な取引戦略

作者: リン・ハーンチャオチャン,日付: 2024年11月12日 10:51:02
タグ:エイマ

img

概要

この戦略は,EMAのトレンド決定と組み合わせたフィボナッチリトレースメントとエクステンションレベルに基づいた複合的な定量取引システムである.この戦略は,市場の重要なサポートおよびレジスタンスレベルを特定し,トレンド信号に基づいて取引を実行する.システムは,20期および50期EMAを使用して市場のトレンドを決定し,最適な取引機会を見つけるためにフィボナッチリトレースメントレベルを使用する.

戦略の原則

基本論理は3つの主要コンポーネントで構成される. まず,過去10期間の最高値と最低値を計算し,価格範囲を決定する. 次に,この範囲に基づいて5つのキーフィボナッチリトレースメントレベル (0.236,0.382,0.5,0.618,0.786) を計算する. 最後に,20期と50期EMAのクロスオーバーを通じてトレンド方向を決定する.価格が上昇傾向でリトレースメントレベルを超えると購入信号が生成され,価格がダウントレンドでリトレースメントレベルを下回ると販売信号が起動される.

戦略 の 利点

  1. トレンドフォローと価格リトラセーションのコンセプトを組み合わせ,取引の精度を向上させる
  2. 市場における強い心理的意味を持つキー価格レベルとしてフィボナッチ配列を使用します
  3. トレンドの特定のためにEMAクロスオーバーを使用し,さまざまな市場で頻繁な取引を避けます
  4. シンプルなシステム設計があり,理解し,維持しやすい
  5. 異なる時間枠に適応し,非常に柔軟性を示しています

戦略リスク

  1. 高波動性のある市場で誤った信号を生む可能性があります
  2. トレンドの継続に依存し,様々な市場で劣悪なパフォーマンスを発揮する可能性がある
  3. 歴史的な高値と低値に基づくリトラクションレベル計算は,市場に遅れることがあります.
  4. 入口ポイントの選択が十分に正確でない場合があり,より大きなストップ損失につながる.
  5. システムには動的位置管理メカニズムがない

戦略の最適化方向

  1. トレンド決定の精度を向上させるため,ボリューム指標を組み込む
  2. リスク管理の改善のために動的なストップ・ロスのメカニズムを実施する
  3. 市場リズムに合わせてリトラセメントレベル計算期間を最適化する
  4. 高波動期間の取引を避けるため,波動性フィルターを追加する
  5. 市場状況に基づいて保有を調整するより柔軟なポジション管理システムを設計する

概要

この戦略は,古典的な技術分析ツールを組み合わせて比較的完全な取引システムを構築する.最適化の分野があるが,全体的な枠組みは良い市場適応性を示している.継続的な最適化と改善を通じて,戦略は実際の取引でより良いパフォーマンスを有することを約束している.ライブ取引の前に徹底的な歴史的データバックテストとパラメータ最適化を行うことが推奨される.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fibonacci Retracement and Extension Strategy", overlay=true)

// Define the Fibonacci levels for retracement and extension
fibRetracementLevels = array.new_float(5)
array.set(fibRetracementLevels, 0, 0.236)
array.set(fibRetracementLevels, 1, 0.382)
array.set(fibRetracementLevels, 2, 0.5)
array.set(fibRetracementLevels, 3, 0.618)
array.set(fibRetracementLevels, 4, 0.786)

fibExtensionLevels = array.new_float(5)
array.set(fibExtensionLevels, 0, 1.618)
array.set(fibExtensionLevels, 1, 2.618)
array.set(fibExtensionLevels, 2, 3.618)
array.set(fibExtensionLevels, 3, 4.236)
array.set(fibExtensionLevels, 4, 5.618)

// Calculate the high and low prices for the last 10 bars
highPrice = ta.highest(high, 10)
lowPrice = ta.lowest(low, 10)

// Calculate the Fibonacci retracement levels
fibRetracement = array.new_float(5)
for i = 0 to 4
    array.set(fibRetracement, i, highPrice - (highPrice - lowPrice) * array.get(fibRetracementLevels, i))

// Calculate the trend using the Exponential Moving Average (EMA)
shortEMA = ta.ema(close, 20)
longEMA = ta.ema(close, 50)

// Define the trend conditions
isUptrend = shortEMA > longEMA
isDowntrend = shortEMA < longEMA

// Generate buy and sell signals
var float lastFibRetracementLevel = na
var float lastFibExtensionLevel = na

// Buy condition: price crosses above the highest retracement level
if (isUptrend)
    for i = 0 to 4
        if (close > array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Buy", strategy.long)

// Sell condition: price crosses below the lowest retracement level
if (isDowntrend)
    for i = 0 to 4
        if (close < array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Sell", strategy.short)

// Plotting the Fibonacci levels on the chart
// for i = 0 to 4
//     line.new(bar_index[10], array.get(fibRetracement, i), bar_index, array.get(fibRetracement, i), color=color.new(color.blue, 70), width=1)

// Plot the EMAs
plot(shortEMA, color=color.red, title="Short EMA")
plot(longEMA, color=color.blue, title="Long EMA")

関連性

もっと