
Chiến lược này là một hệ thống giao dịch tự điều chỉnh tích hợp nhiều phương pháp giao dịch, thích ứng với các môi trường thị trường khác nhau bằng cách kết hợp linh hoạt ba chiến lược theo dõi xu hướng, giao dịch khoảng thời gian và giao dịch đột phá. Hệ thống sử dụng các chỉ số kỹ thuật như EMA, RSI, OBV để đánh giá tình trạng thị trường và kết hợp với chỉ số ADX để xác nhận cường độ xu hướng, kiểm soát rủi ro bằng cách dừng lỗ động ATR.
Chiến lược bao gồm ba mô-đun giao dịch chính:
Mỗi mô-đun sử dụng phương án dừng lỗ động dựa trên ATR và đặt mục tiêu lợi nhuận thông qua tỷ lệ lợi nhuận rủi ro tùy chỉnh của người dùng. Hệ thống đảm bảo giao dịch diễn ra trong môi trường có tính thanh khoản đầy đủ thông qua bộ lọc khối lượng giao dịch.
Các biện pháp sau đây được đề xuất để kiểm soát rủi ro:
Tăng cơ chế thích ứng với biến động thị trường:
Tóm lại, các chiến lược chuyển đổi sẽ được cải thiện:
Củng cố hệ thống quản lý tài chính:
Tối ưu hóa cơ chế lọc tín hiệu:
Chiến lược này thực hiện giao dịch thích ứng với các môi trường thị trường khác nhau thông qua việc kết hợp nhiều chiến lược và hệ thống kiểm soát rủi ro nghiêm ngặt. Thiết kế mô đun của hệ thống cho phép cấu hình linh hoạt, trong khi cơ chế quản lý tiền hoàn hảo đảm bảo an toàn giao dịch. Bằng cách tối ưu hóa và hoàn thiện liên tục, chiến lược này dự kiến sẽ duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ceulemans Trading Bot met ADX, Trendfilter en Selecteerbare Strategieën", overlay=true)
// Parameters voor indicatoren
emaLength = input.int(50, title="EMA Lengte")
rsiLength = input.int(14, title="RSI Lengte")
obvLength = input.int(20, title="OBV Lengte")
rsiOverbought = input.int(65, title="RSI Overbought")
rsiOversold = input.int(35, title="RSI Oversold")
atrLength = input.int(14, title="ATR Lengte")
adxLength = input.int(14, title="ADX Lengte")
adxSmoothing = input.int(14, title="ADX Smoothing") // Voeg de smoothing parameter toe
// Money Management Parameters
capitalRisk = input.float(1.0, title="Percentage van kapitaal per trade", step=0.1)
riskReward = input.float(3.0, title="Risk/Reward ratio", step=0.1)
stopLossMultiplier = input.float(1.2, title="ATR Stop-Loss Multiplier", step=0.1)
// Strategieën selecteren (aan/uit schakelaars)
useTrendTrading = input.bool(true, title="Gebruik Trend Trading")
useRangeTrading = input.bool(true, title="Gebruik Range Trading")
useBreakoutTrading = input.bool(true, title="Gebruik Breakout Trading")
// Berekening indicatoren
ema = ta.ema(close, emaLength)
rsi = ta.rsi(close, rsiLength)
obv = ta.cum(ta.change(close) * volume)
atr = ta.atr(atrLength)
[diplus, diminus, adx] = ta.dmi(adxLength, adxSmoothing) // ADX berekening met smoothing
avgVolume = ta.sma(volume, obvLength)
// Huidige marktsituatie analyseren
isTrending = close > ema and adx > 25 // Trend is sterk als ADX boven 25 is
isOversold = rsi < rsiOversold
isOverbought = rsi > rsiOverbought
isBreakout = close > ta.highest(close[1], obvLength) and obv > ta.cum(ta.change(close[obvLength]) * volume)
isRange = not isTrending and (close < ta.highest(close, obvLength) and close > ta.lowest(close, obvLength))
volumeFilter = volume > avgVolume
// Strategie logica
// 1. Trend Trading met tight stop-loss en ADX filter
if (useTrendTrading and isTrending and isOversold and volumeFilter)
strategy.entry("Koop Trend", strategy.long)
strategy.exit("Exit Trend", stop=strategy.position_avg_price - stopLossMultiplier * atr, limit=strategy.position_avg_price + riskReward * stopLossMultiplier * atr)
// 2. Range Trading
if (useRangeTrading and isRange and rsi < rsiOversold and volumeFilter)
strategy.entry("Koop Range", strategy.long)
strategy.exit("Verkoop Range", stop=strategy.position_avg_price - stopLossMultiplier * atr, limit=strategy.position_avg_price + riskReward * stopLossMultiplier * atr)
if (useRangeTrading and isRange and rsi > rsiOverbought and volumeFilter)
strategy.entry("Short Range", strategy.short)
strategy.exit("Exit Short Range", stop=strategy.position_avg_price + stopLossMultiplier * atr, limit=strategy.position_avg_price - riskReward * stopLossMultiplier * atr)
// 3. Breakout Trading met volume
if (useBreakoutTrading and isBreakout and volumeFilter)
strategy.entry("Koop Breakout", strategy.long)
strategy.exit("Exit Breakout", stop=strategy.position_avg_price - stopLossMultiplier * atr, limit=strategy.position_avg_price + riskReward * stopLossMultiplier * atr)
// Indicatoren plotten
plot(ema, title="EMA", color=color.blue, linewidth=2)
hline(rsiOverbought, "RSI Overbought", color=color.red)
hline(rsiOversold, "RSI Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)
plot(adx, title="ADX", color=color.orange)