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