MFI 지표를 기반으로 한 금융자산 과매도 영역에 대한 종료 및 신호 평균화 시스템

MFI RSI SL TP MA
생성 날짜: 2024-12-05 16:40:47 마지막으로 수정됨: 2024-12-05 16:40:47
복사: 2 클릭수: 107
1
집중하다
1166
수행원

MFI 지표를 기반으로 한 금융자산 과매도 영역에 대한 종료 및 신호 평균화 시스템

개요

이 전략은 자금 흐름 지표 ((MFI) 를 기반으로 한 자동화 된 거래 시스템으로, 자산이 과매도 지역에서 수행되는 것을 식별하여 잠재적인 역전 기회를 포착합니다. 전략의 핵심은 MFI 지표가 과매도 지역에서 (설정값 20 이하) 다시 올랐을 때 구매 신호를 발생시키고, 제한 가격 주문, 중지 손실 및 이익 결제와 같은 여러 가지 메커니즘을 통해 거래 위험과 수익을 관리합니다. 이 전략은 특히 시장에서 과하 반전이 발생할 때 배치하는 데 적합합니다.

전략 원칙

이 전략은 다음과 같은 몇 가지 중요한 단계에 기반합니다.

  1. 계속적으로 자금흐름 지표 (MFI) 의 수학적 변화를 모니터링합니다. MFI가 기본 초매한 임계 (default 20) 이하로 떨어지면 시스템 표기는 초매한 영역에 진입합니다.
  2. MFI가 과매도 지역에서 다시 올라와 마이너스를 돌파할 때, 시스템은 현재 가격 아래의 구매 제한 가격을 설정합니다. 특정 가격은 사용자가 정의한 비율에 의해 결정됩니다.
  3. 시스템은 제한 가격 표의 유효 기간을 모니터링하고, 미리 설정된 관찰 주기 (설정된 5K선) 내에 거래가 이루어지지 않으면 주문이 자동으로 취소됩니다.
  4. 주문이 완료되면, 시스템은 즉시 입시 가격의 비율에 따라 Stop Loss 및 Take Profit 목표 가격을 설정합니다.
  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