이 전략의 핵심은 MACD, RSI 및 Ichimoku 지표의 결합 사용에 있습니다.
/*backtest start: 2023-04-24 00:00:00 end: 2024-04-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @ Julien_Eche //@version=5 strategy("MACD RSI Ichimoku Strategy", overlay=true) string t1 = ("If checked, this strategy is suitable for those who buy and sell. If unchecked, it is suitable for those who only want to take long positions—buying and closing buys.") start_date = input(timestamp("1975-01-01T00:00:00"), title="Start Date") end_date = input(timestamp("2099-01-01T00:00:00"), title="End Date") // Input settings for Ichimoku Cloud lengths length1 = input.int(9, title="Tenkan-sen Length", minval=1) length2 = input.int(26, title="Kijun-sen Length", minval=1) length3 = input.int(52, title="Senkou Span Length", minval=1) // Calculate Ichimoku Cloud components based on input lengths tenkanSen = ta.sma(high + low, length1) / 2 kijunSen = ta.sma(high + low, length2) / 2 senkouSpanA = ((tenkanSen + kijunSen) / 2)[length2] senkouSpanB = ta.sma(high + low, length3) / 2 // Input settings for MACD parameters macdFastLength = input(12, title="MACD Fast Length") macdSlowLength = input(26, title="MACD Slow Length") macdSignalLength = input(9, title="MACD Signal Length") // Calculate MACD [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength) // Input settings for RSI length rsiLength = input(14, title="RSI Length") // Calculate RSI rsiValue = ta.rsi(close, rsiLength) // Determine Buy/Sell behavior based on input buySell = input(false, title="Buy/Sell", tooltip=t1) // More sensitive entry conditions (Buy Only) canEnter = ta.crossover(tenkanSen, kijunSen) or (close > senkouSpanA and close > senkouSpanB and macdLine > signalLine and rsiValue < 70) // Enter long position (Buy) with time condition if (canEnter) strategy.entry("Buy", strategy.long) // More sensitive exit conditions (Close Buy) with time condition canExit = ta.crossunder(tenkanSen, kijunSen) or (close < senkouSpanA and close < senkouSpanB) // Determine exit behavior based on user input if buySell // Sell to close long position (Short) with time condition if (canExit ) strategy.entry("Sell", strategy.short) else // Sell to exit long position (Buy/Sell) with time condition if (canExit ) strategy.close("Buy", comment="Sell for exit")