이 전략은 주로 EMA 크로스오버, RSI 과잉 판매 조건 및 MACD 골든 크로스를 사용하여 거래 확인을 하는 다기술 지표 거래 시스템이다. 이 전략은 진입에 대한 동적 한도 주문과 위험 관리에 대한 여러 출구 메커니즘을 사용한다. 이 전략은 트레이딩 신호를 필터링하기 위해 상대 강도 지수 (RSI) 와 이동 평균 컨버전스 디버전스 (MACD) 와 결합된 9 기간 및 21 기간 기하급수적 이동 평균 (EMA) 을 주요 트렌드 지표로 사용한다.
핵심 거래 논리는 다음의 주요 구성 요소를 포함합니다.
이 전략은 더 나은 입시 가격을 달성하기 위해 입시 제한 주문을 사용하며 거래 정확성을 향상시키기 위해 여러 기술적 지표를 결합합니다.
이 전략은 유동 평균을 사용하여 트렌드를 식별하고, RSI와 MACD로 신호를 필터하고, 리미트 오더와 여러 스톱 메커니즘을 통해 위험을 제어하는 잘 구성된 다중 지표 거래 전략입니다. 이 전략의 강점은 신호 신뢰성과 포괄적인 위험 통제에 있습니다. 그러나 신호 지연 및 매개 변수 최적화와 함께 도전에 직면합니다. 동적 매개 변수 조정 및 추가 보조 지표를 통해 개선할 수있는 상당한 공간이 있습니다. 트렌딩 시장 조건에서 보수적인 투자자에게 적합합니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true) // Inputs for Simple Moving Averages sma_short = ta.ema(close, 9) sma_long = ta.ema(close, 21) // Plotting SMA plot(sma_short, color=color.green, title="SMA 9") plot(sma_long, color=color.red, title="SMA 21") // RSI Calculation rsi_length = input.int(14, title="RSI Length") rsi_threshold = input.int(70, title="RSI Threshold") rsi = ta.rsi(close, rsi_length) // MACD Calculation macd_fast = input.int(8, title="MACD Fast Length") macd_slow = input.int(18, title="MACD Slow Length") macd_signal = input.int(6, title="MACD Signal Length") [macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal) // Inputs for Limit Order Offset limit_offset = input.int(50, title="Limit Order Offset", minval=1) // 50 points below 9 EMA // User input for specific date simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates") simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates") // Declare limit_price as float var float limit_price = na // Calculate Limit Order Price if (sma_short[1] < sma_long[1] and sma_short > sma_long) // 9 EMA crosses above 21 EMA limit_price := sma_short - limit_offset // Buy Signal Condition (only on the specified date) buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line) // Sell Signal Condition (MACD crossover down) sell_condition = ta.crossunder(macd_line, signal_line) // Track Entry Price for Point-Based Exit var float entry_price = na if (buy_condition ) strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price) label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white) entry_price := limit_price // Set entry price // Exit Conditions exit_by_macd = sell_condition exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12)) // Adjust as per exit points // Exit all positions at the end of the day if hour == 15 and minute > 10 and strategy.position_size > 0 strategy.close_all() // Close all positions at the end of the day strategy.cancel_all() // Exit based on sell signal or point movement if (exit_by_macd or exit_by_points and strategy.position_size > 0 ) strategy.close("Buy") label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)