Strategi ini adalah sistem perdagangan trend-mengikuti yang menggabungkan beberapa penunjuk teknikal. Ia mengintegrasikan RSI (Relative Strength Index), MACD (Moving Average Convergence Divergence), dan SMA (Simple Moving Average) untuk melaksanakan perdagangan apabila trend pasaran ditakrifkan dengan jelas. Strategi ini juga menggabungkan mengambil keuntungan, menghentikan kerugian, dan mekanisme berhenti menyusul untuk pengurusan risiko yang lebih baik.
Strategi melaksanakan perdagangan berdasarkan syarat teras berikut:
Apabila semua syarat ini dipenuhi secara serentak, sistem menghasilkan isyarat panjang. Di samping itu, strategi menetapkan sasaran keuntungan 5%, had stop loss 3%, dan stop trailing 2% untuk melindungi keuntungan terkumpul. Pendekatan pelbagai lapisan ini untuk keadaan perdagangan membantu meningkatkan ketepatan dan keselamatan.
Strategi ini menubuhkan sistem perdagangan yang komprehensif melalui gabungan beberapa penunjuk teknikal. Ia merangkumi kedua-dua logik trend berikut dan pertimbangan pengurusan risiko. Walaupun terdapat bidang untuk pengoptimuman, kerangka keseluruhan menyediakan skalabiliti dan kesesuaian yang baik. Pelaksanaan yang berjaya memerlukan peniaga untuk mengoptimumkan parameter dan meningkatkan strategi berdasarkan keadaan pasaran sebenar.
/*backtest start: 2024-12-03 00:00:00 end: 2024-12-10 00:00:00 period: 45m basePeriod: 45m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Flexible Swing Trading Strategy with Trailing Stop and Date Range", overlay=true) // Input parameters rsiPeriod = input.int(14, title="RSI Period") macdFastLength = input.int(12, title="MACD Fast Length") macdSlowLength = input.int(26, title="MACD Slow Length") macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing") smaShortPeriod = input.int(20, title="Short-term SMA Period") smaLongPeriod = input.int(50, title="Long-term SMA Period") takeProfitPercent = input.float(5.0, title="Take Profit Percentage") stopLossPercent = input.float(3.0, title="Stop Loss Percentage") trailingStopPercent = input.float(2.0, title="Trailing Stop Percentage") // Date range inputs startDate = input(timestamp("2023-01-01 00:00"), title="Start Date") endDate = input(timestamp("2023-12-31 23:59"), title="End Date") // Calculate RSI rsi = ta.rsi(close, rsiPeriod) // Calculate MACD [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing) // Calculate SMAs smaShort = ta.sma(close, smaShortPeriod) smaLong = ta.sma(close, smaLongPeriod) // Buy condition buyCondition = ta.crossover(macdLine, signalLine) and rsi < 70 and close > smaShort and smaShort > smaLong // Execute buy orders within the date range if (buyCondition ) strategy.entry("Buy", strategy.long) // Calculate take profit and stop loss levels takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent / 100) stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent / 100) // Set take profit, stop loss, and trailing stop strategy.exit("Take Profit", "Buy", limit=takeProfitLevel) strategy.exit("Stop Loss", "Buy", stop=stopLossLevel) strategy.exit("Trailing Stop", "Buy", trail_price=close * (1 - trailingStopPercent / 100), trail_offset=trailingStopPercent / 100) // Plot Buy signals plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") // Plot SMAs plot(smaShort, color=color.blue, title="20 SMA") plot(smaLong, color=color.red, title="50 SMA") // Plot MACD and Signal Line plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Plot RSI hline(70, "Overbought", color=color.red) hline(30, "Oversold", color=color.green) plot(rsi, color=color.purple, title="RSI") // Debugging plots plotchar(buyCondition , char='B', location=location.belowbar, color=color.green, size=size.small) plotchar(strategy.opentrades > 0, char='T', location=location.abovebar, color=color.blue, size=size.small) plot(stopLossLevel, color=color.red, title="Stop Loss Level") plot(takeProfitLevel, color=color.green, title="Take Profit Level")