マルチレベルフィボナッチ移動平均トレンド追跡戦略

FIB EMA MA SMA
作成日: 2024-11-29 15:09:56 最終変更日: 2024-11-29 15:09:56
コピー: 0 クリック数: 486
1
フォロー
1617
フォロワー

マルチレベルフィボナッチ移動平均トレンド追跡戦略

概要

この戦略は,フィボナッチ逆転,複数の指数移動平均,取引量の組み合わせでトレンドを追跡する取引システムである. この戦略は,価格が異なるフィボナッチ逆転レベル ((0.382,0.618,1) の位置を分析し,多周期的なEMA ((20/50/100/200) と組み合わせてトレンドを確認し,取引量の値フィルターで潜在的な取引機会を識別する.

戦略原則

戦略の核心的な論理は,複数のレベルの技術分析方法に基づいています.

  1. 30サイクルを回顧区間として使用してフィボナッチ・リトラクションレベルを計算し,価格運動のサポート・レジスタンス枠組を確立する
  2. 20/50/100/200周期の指数移動平均を用いた多層のトレンド確認システム構築
  3. 価格が0.382のフィボナッチレベルに近づいて取引量が減值より大きい場合,価格が平均線上にある場合は,多信号をトリガーします.
  4. 価格が0.618フィボナッチレベルに近づいて,取引量が減值より大きい場合,価格が平均線以下であれば空白シグナルをトリガーします.
  5. パーセンテージベースのストップ・ストップ・メカニズムが設定され,それぞれ6%と3%

戦略的優位性

  1. 多次元分析:価格の形状,傾向,取引量の3次元を組み合わせ,信号の信頼性を高めます.
  2. 優れたリスク管理: 明確なストップ・ストップ・ロスの条件を設定し,各取引のリスクを効果的に制御します.
  3. トレンド確認:多重均線システムにより,トレンドの強さと方向をより正確に判断できます.
  4. 信号フィルタリングの厳しさ:価格,平均線,取引量条件を同時に満たすように要求し,偽突破の確率を下げる
  5. 高可視化: 分析と最適化に役立つタグシステムによる入場・出場地点の明確な表示

戦略リスク

  1. 振動市場リスク:横盤振動市場では頻繁に偽信号が生じることがあるため,振動指標のフィルタリングを増やすことを推奨する
  2. スリップポイントリスク:交付量条件の制約の下で,交付量値を実際の状況に合わせて調整する必要があるスリップポイントを実行する可能性があります.
  3. 資金管理のリスク: 固定パーセントのストロップは,特定の状況では柔軟性がない場合があり,変動率の動向に合わせて調整することが推奨されます.
  4. トレンド依存性: 戦略は明らかなトレンドでうまく機能しますが,トレンド転換期には連続した損失が発生する可能性があります.
  5. パラメータの感受性:複数のパラメータの組み合わせは,異なる時間周期で反テストを検証する必要のある過適合のリスクを増加させる

戦略最適化の方向性

  1. ダイナミックストップ最適化:市場変動への適応性を高めるため,ATR指標のダイナミックストップ距離の導入を提案
  2. トレンド強度量化: トレンド強度指標であるADXを追加して,強いトレンドの間,ポジションを増やし,弱いトレンドの間,取引を減らすことができます.
  3. 取引量分析の深化:取引量分析の精度を高めるために,取引量平均線と異常取引量分析を増やすことを提案
  4. 入場タイミングの最適化:RSIなどの振動指標を組み合わせて,トレンドの方向で超買超売のチャンスを探す
  5. ポジション管理の改善:トレンドの強さと市場の変動率の動向に応じてポジション保持比率の調整を推奨

要約する

これは,クラシックな技術分析ツールを組み合わせて立体的な分析フレームワークを構成する,設計された多層のトレンド追跡戦略である.この戦略の優点は,シグナル確認の厳密さとリスク管理の整体性にあるが,同時に,波動的な市場でのパフォーマンスにも注意が必要である.この戦略の安定性と収益性は,特にダイナミックなリスク管理とトレンドの強さの量化における改善によって,提案された最適化の方向によってさらに向上する見込みがある.

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ALD Fib Ema SAKALAM", overlay=true)

// Inputs
lookback = input.int(30, title="Lookback Period for Fibonacci", minval=10)
volumeThreshold = input.float(500000, title="24h Volume Threshold", step=50000)
stopLossPct = input.float(3.0, title="Stop Loss %", minval=0.5)
takeProfitPct = input.float(6.0, title="Take Profit %", minval=1.0)
maLength = input.int(50, title="Trend Filter MA Length", minval=1)

// Moving Average (Trend Filter)
ma = ta.sma(close, maLength)

// High and Low for Fibonacci Levels
var float swingHigh = na
var float swingLow = na

if bar_index > lookback
    swingHigh := ta.highest(high, lookback)
    swingLow := ta.lowest(low, lookback)

// Fibonacci Levels Calculation
fib0 = swingLow
fib1 = swingHigh
fib382 = swingHigh - 0.382 * (swingHigh - swingLow)
fib618 = swingHigh - 0.618 * (swingHigh - swingLow)

// 24-hour Volume Calculation
volume24h = ta.sma(volume, 24)

// Plot Fibonacci Levels
plot(fib0, title="Fib 0", color=color.new(color.red, 80))
plot(fib382, title="Fib 0.382", color=color.new(color.green, 50))
plot(fib618, title="Fib 0.618", color=color.new(color.blue, 50))
plot(fib1, title="Fib 1", color=color.new(color.red, 80))
plot(ma, title="Trend Filter MA", color=color.orange)

// Entry Condition: Buy Signal
longCondition = (close <= fib382) and (volume24h > volumeThreshold) and (close > ma)
if (longCondition)
    strategy.entry("Buy", strategy.long)
    label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)

// Exit Conditions
takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPct / 100)
stopLossPrice = strategy.position_avg_price * (1 - stopLossPct / 100)

// Place Exit Orders
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=takeProfitPrice, stop=stopLossPrice)

// Add Labels for Exits
if (strategy.position_size > 0)
    if (high >= takeProfitPrice)
        label.new(bar_index, high, "EXIT (Take Profit)", style=label.style_label_down, color=color.blue, textcolor=color.white)

    if (low <= stopLossPrice)
        label.new(bar_index, low, "EXIT (Stop Loss)", style=label.style_label_down, color=color.red, textcolor=color.white)

// Short Selling Conditions
shortCondition = (close >= fib618) and (volume24h > volumeThreshold) and (close < ma)
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)

// Short Exit Conditions
if (strategy.position_size < 0)
    strategy.exit("Short Take Profit/Stop Loss", from_entry="Sell", limit=strategy.position_avg_price * (1 - takeProfitPct / 100), stop=strategy.position_avg_price * (1 + stopLossPct / 100))

// Add EMA 20/50/100/200
shortest = ta.ema(close, 20)
short = ta.ema(close, 50)
longer = ta.ema(close, 100)
longest = ta.ema(close, 200)

plot(shortest, color=color.orange, title="EMA 20")
plot(short, color=color.red, title="EMA 50")
plot(longer, color=color.black, title="EMA 100")
plot(longest, color=color.green, title="EMA 200")