리소스 로딩... 로딩...

금융자산 MFI 기반 과잉판매구역 출구 및 신호 평균화 시스템

저자:차오장, 날짜: 2024-12-05 16:40:47
태그:MFIRSISLTPMA

img

전반적인 설명

이 전략은 금전 흐름 지수 (MFI) 를 기반으로 한 자동화 거래 시스템으로, 주로 과판된 구역에서의 자산 행동을 식별함으로써 잠재적 인 반전 기회를 포착하도록 설계되었습니다. 핵심 메커니즘은 MFI 지표가 과판된 구역 (전환 20 이하) 에서 반등될 때 구매 신호를 생성하며, 무역 위험과 수익을 관리하기 위해 제한 주문, 스톱-로스 및 영업 메커니즘을 사용합니다. 이 전략은 특히 시장 과판 반등 중 포지셔닝에 적합합니다.

전략 원칙

이 전략은 다음의 주요 단계에 기초합니다.

  1. MFI 값의 변화를 지속적으로 모니터링하고, MFI가 미리 설정된 임계치 (20 기본값) 아래로 떨어지면 과잉판매 구역에 진입하는 것을 표시합니다.
  2. MFI가 반등하여 과반 판매 구역의 문턱을 넘어서면 시스템은 현재 가격 이하의 구매 한도 주문을 합니다. 특정 가격은 사용자 정의 비율로 결정됩니다.
  3. 시스템은 제한 주문의 유효 기간을 모니터링하고, 미리 설정된 관찰 기간 내에 채우지 않으면 자동으로 취소합니다. (전산 5 개의 촛불).
  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













관련

더 많은