이 전략은 상대적 강도 지수 (RSI) 와 마틴게일 포지션 평균화 원칙을 결합한다. RSI가 과판 라인 이하로 떨어지면 긴 포지션을 시작하고 가격이 계속 하락하면 포지션을 두 배로 낮춰준다. 이윤 취득은 작은 목표와 함께 달성된다. 이 전략은 안정적인 이익을 위해 스팟 거래에서 높은 시가총액 동전에 적합하다.
이 전략은 RSI 지표와 마틴게일 포지션 평균을 결합하여 적절한 평균화로 과판 상황을 활용하고 안정적인 이익을 위해 작은 수익을 취합니다. 중지 손실, 매개 변수 조정 등을 통해 줄일 수있는 위험이 있습니다.
/*backtest start: 2024-01-06 00:00:00 end: 2024-02-05 00:00:00 period: 1h basePeriod: 15m 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/ // © Stavolt //@version=5 strategy("RSI Martingale Strategy", overlay=true, default_qty_type=strategy.cash, currency=currency.USD) // Inputs rsiLength = input(14, title="RSI Length") oversoldThreshold = input(30, title="Oversold Threshold") // Keeping RSI threshold profitTargetPercent = input(0.5, title="Profit Target (%)") / 100 initialInvestmentPercent = input(5, title="Initial Investment % of Equity") // Calculating RSI rsiValue = ta.rsi(close, rsiLength) // State variables for tracking the initial entry var float initialEntryPrice = na var int multiplier = 1 // Entry condition based on RSI if (rsiValue < oversoldThreshold and na(initialEntryPrice)) initialEntryPrice := close strategy.entry("Initial Buy", strategy.long, qty=(strategy.equity * initialInvestmentPercent / 100) / close) multiplier := 1 // Adjusting for errors and simplifying the Martingale logic // Note: This section simplifies the aggressive position size adjustments without loops if (not na(initialEntryPrice)) if (close < initialEntryPrice * 0.995) // 0.5% drop from initial entry strategy.entry("Martingale Buy 1", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 2) multiplier := 2 // Adjusting multiplier for the next potential entry if (close < initialEntryPrice * 0.990) // Further drop strategy.entry("Martingale Buy 2", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 4) multiplier := 4 // Additional conditional entries could follow the same pattern // Checking for profit target to close positions if (strategy.position_size > 0 and (close - strategy.position_avg_price) / strategy.position_avg_price >= profitTargetPercent) strategy.close_all(comment="Take Profit") initialEntryPrice := na // Reset for next cycle