MFI指標に基づく金融資産売られすぎエリアの終了およびシグナル平均化システム

MFI RSI SL TP MA
作成日: 2024-12-05 16:40:47 最終変更日: 2024-12-05 16:40:47
コピー: 2 クリック数: 440
1
フォロー
1617
フォロワー

MFI指標に基づく金融資産売られすぎエリアの終了およびシグナル平均化システム

概要

この戦略は,資金流動指数 (MFI) に基づく自動取引システムであり,主に,過売り区域での資産のパフォーマンスを識別することによって,潜在的な反転の機会を捉えるためのものです. この戦略の核心は,MFI指数が過売り区域 (デフォルト値20以下) から反転するときに買い信号を生じ,限値,止損,利益の結束などの複数のメカニズムを通じて取引リスクと利益を管理することです.

戦略原則

戦略は以下の重要なステップに基づいています.

  1. 資金流動指数 (MFI) の数値の変化を継続的にモニタリングし,MFIが既定の超売り値 (デフォルト20) 以下に低下すると,システムマークは超売り領域に入ります.
  2. MFIが超売り区域から上昇して値を破るとき,システムは現在の価格より下にある買入制限価格を設定し,特定の価格はユーザが定義したパーセントによって決定される.
  3. システムでは,制限価格の有効期間を監視し,既定の観察周期 (デフォルト5K線) 内で取引が失敗した場合,注文は自動的にキャンセルされます.
  4. 注文が完了すると,システムではすぐに,入場価格のパーセントに基づいて,ストップ・ロスと利益のターゲット価格を設定します.
  5. 取引は,停止損失または利益の目標に達したときに自動的に平定されます.

戦略的優位性

  1. リスク管理が完ぺき: 既定のストップ・ロスと利益目標によって,各取引に対して明確なリスク/利益の比率を提供する.
  2. 入場メカニズムは柔軟です. 限定入場券を使用すると,より優良な取引価格を得ることができ,全体的な収益空間を向上させることができます.
  3. 高度な自動化: 信号生成からポジション管理までの全プロセスを自動化し,人間の介入による感情的影響を軽減する.
  4. 参数調整性強:MFI周期,超売り値,注文有効期限などの重要な参数はいろいろな市場特性に応じて最適化できます.
  5. システム論理の明晰さ: 策略の規則が明確で,追及とリアルディスクの監視が容易である.

戦略リスク

  1. 偽信号の危険:激しい変動の市場では,MFIは偽の超売り信号を生成する可能性があります.他の技術指標と組み合わせてクロス検証を行うことが推奨されています.
  2. スリップポイントリスク:市場が急激に波動するので,予想した価格で取引ができない可能性があります. 制限価格の価格を適切に緩和したり有効期間を延長したりできます.
  3. トレンドリスク: 強い下落のトレンドでは,早めに入場すると大きな損失に直面する可能性があります. トレンドフィルターを追加することが推奨されます.
  4. パラメータ感性:戦略のパフォーマンスはパラメータ設定に敏感であり,異なる市場環境に対して最適化する必要があります.

戦略最適化の方向性

  1. 市場トレンドフィルターを追加:移動平均などのトレンド指標を導入し,上昇傾向のみで取引を開始できます.
  2. 信号確認の最適化:RSI,MACDなどの他の技術指標と組み合わせて,信号の信頼性を向上させる.
  3. ダイナミック・ストップ・メカニズム:市場の変動率に合わせてストップ・距離を動的に調整して,ストップ・レジスティビリティを高める.
  4. 倉庫の建設と収納:複数の価格の制限リストを実現し,倉庫の総コストを削減する.
  5. タイムフィルター導入: 異なる時間帯の市場特性に応じて選択的に取引を開始できます.

要約する

これは,合理的で論理的に明確な設計された自動取引戦略である. MFI指標の柔軟な使用と,完善な注文管理機構を組み合わせることで,市場の過売り後の反発の機会を効果的に捕捉することができる. 戦略の配置性が強く,異なる市場環境に応じて最適化調整を容易にする.

ストラテジーソースコード
/*backtest
start: 2024-11-04 00:00:00
end: 2024-12-04 00:00:00
period: 3h
basePeriod: 3h
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/
// © traderhub

//@version=5
strategy("MFI Strategy with Oversold Zone Exit and Averaging", overlay=true)

// Strategy parameters
mfiPeriod = input.int(title="MFI Period", defval=14) // Period for calculating MFI
mfiOS = input.float(title="MFI Oversold Level", defval=20.0) // Oversold level for MFI
longEntryPercentage = input.float(title="Long Entry Percentage (%)", minval=0.0, step=0.1, defval=0.1) // Percentage for the buy limit order
stopLossPercentage = input.float(title="Stop Loss Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage for the stop-loss
exitGainPercentage = input.float(title="Exit Gain Percentage (%)", minval=0.0, step=0.1, defval=1.0) // Percentage gain for the take-profit
cancelAfterBars = input.int(title="Cancel Order After # Bars", minval=1, defval=5) // Cancel order after a certain number of bars

// Calculate MFI
mfi = ta.mfi(close, mfiPeriod)  // MFI with specified period

// Variables for tracking state
var bool inOversoldZone = false  // Flag for being in the oversold zone
var float longEntryPrice = na  // Price for long entry
var int barsSinceEntryOrder = na  // Counter for bars after placing an order

// Define being in the oversold zone
if (mfi < mfiOS)
    inOversoldZone := true  // Entered oversold zone

// Condition for exiting the oversold zone and placing a limit order
if (inOversoldZone and mfi > mfiOS)
    inOversoldZone := false  // Leaving the oversold zone
    longEntryPrice := close * (1 - longEntryPercentage / 100)  // Calculate limit price for entry
    strategy.entry("Long Entry", strategy.long, limit=longEntryPrice)  // Place a limit order
    barsSinceEntryOrder := 0  // Reset counter for bars after placing the order

// Increase the bar counter if the order has not yet been filled
if (not na(barsSinceEntryOrder))
    barsSinceEntryOrder += 1

// Cancel order if it hasn’t been filled within the specified number of bars
if (not na(barsSinceEntryOrder) and barsSinceEntryOrder >= cancelAfterBars and strategy.position_size == 0)
    strategy.cancel("Long Entry")
    barsSinceEntryOrder := na  // Reset bar counter

// Set stop-loss and take-profit for filled positions
if (strategy.position_size > 0)
    stopLossPrice = longEntryPrice * (1 - stopLossPercentage / 100)  // Calculate stop-loss level
    takeProfitPrice = longEntryPrice * (1 + exitGainPercentage / 100)  // Calculate take-profit level
    strategy.exit("Exit Long", from_entry="Long Entry", limit=takeProfitPrice, stop=stopLossPrice)

// Visualize oversold and overbought zones
bgcolor(mfi < mfiOS ? color.new(color.green, 90) : na)  // Background in oversold zone
plot(mfi, title="MFI", color=color.blue)  // MFI plot
hline(mfiOS, "Oversold Level", color=color.red)  // Oversold level line