Strategi ini adalah sistem perdagangan penunjuk multi-teknik yang terutamanya menggunakan persilangan EMA, keadaan oversold RSI, dan salib emas MACD untuk pengesahan perdagangan. Ia menggunakan pesanan had dinamik untuk kemasukan dan pelbagai mekanisme keluar untuk pengurusan risiko. Strategi ini menggunakan Purata Bergerak Eksponen (EMA) 9 tempoh dan 21 tempoh sebagai penunjuk trend utama, digabungkan dengan Indeks Kekuatan Relatif (RSI) dan Divergensi Convergensi Purata Bergerak (MACD) untuk menapis isyarat perdagangan.
Logik perdagangan teras merangkumi komponen utama berikut:
Strategi ini menggunakan pesanan had untuk kemasukan untuk mencapai harga kemasukan yang lebih baik dan menggabungkan beberapa penunjuk teknikal untuk meningkatkan ketepatan perdagangan.
Ini adalah strategi perdagangan pelbagai penunjuk yang terstruktur dengan baik yang mengenal pasti trend menggunakan purata bergerak, menapis isyarat dengan RSI dan MACD, dan mengawal risiko melalui pesanan had dan mekanisme berhenti berbilang. Kekuatan strategi terletak pada kebolehpercayaan isyarat dan kawalan risiko yang komprehensif, walaupun ia menghadapi cabaran dengan kelewatan isyarat dan pengoptimuman parameter. Terdapat ruang yang signifikan untuk penambahbaikan melalui penyesuaian parameter dinamik dan penunjuk tambahan. Ia sesuai untuk pelabur konservatif dalam keadaan pasaran trend.
/*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)