이 전략은 금전 흐름 지수 (MFI) 를 기반으로 한 자동화 거래 시스템으로, 주로 과판된 구역에서의 자산 행동을 식별함으로써 잠재적 인 반전 기회를 포착하도록 설계되었습니다. 핵심 메커니즘은 MFI 지표가 과판된 구역 (전환 20 이하) 에서 반등될 때 구매 신호를 생성하며, 무역 위험과 수익을 관리하기 위해 제한 주문, 스톱-로스 및 영업 메커니즘을 사용합니다. 이 전략은 특히 시장 과판 반등 중 포지셔닝에 적합합니다.
이 전략은 다음의 주요 단계에 기반합니다. 1. MFI 값의 변화를 지속적으로 모니터링하고, MFI가 미리 설정된 임계치 (20 기본값) 아래로 떨어지면 과잉판매 구역에 진입하는 것을 표시합니다. 2. MFI가 리바운드하여 과잉 판매 구역의 문턱을 넘어서면 시스템은 현재 가격 이하의 구매 제한 주문을 배치하며, 특정 가격은 사용자 정의 비율로 결정됩니다. 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