
Strategi ini adalah sistem perdagangan pelacakan tren yang menggabungkan beberapa indikator teknis. Ini melakukan perdagangan ketika tren pasar jelas dengan mengintegrasikan beberapa indikator teknis seperti RSI (indicator kekuatan relatif), MACD (indicator dispersi tren rata-rata bergerak), dan SMA (indicator rata-rata bergerak sederhana). Strategi ini juga mencakup mekanisme manajemen risiko seperti stop loss, stop loss, dan pelacakan stop loss untuk manajemen uang yang lebih baik.
Strategi ini didasarkan pada beberapa kriteria utama:
Sistem akan mengirimkan beberapa sinyal ketika kondisi di atas terpenuhi secara bersamaan. Selain itu, strategi menetapkan target stop loss sebesar 5%, batas stop loss sebesar 3%, dan tracking stop loss sebesar 2% untuk melindungi keuntungan yang diperoleh. Desain kondisi perdagangan bertingkat ini membantu meningkatkan akurasi dan keamanan perdagangan.
Strategi ini membangun sistem perdagangan yang relatif sempurna dengan penggunaan kombinasi dari beberapa indikator teknis. Tidak hanya mencakup logika inti dari pelacakan tren, tetapi juga mempertimbangkan manajemen risiko. Meskipun ada beberapa tempat yang perlu dioptimalkan, kerangka keseluruhan memiliki skalabilitas dan fleksibilitas yang baik.
/*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")