
Đây là chiến lược giao dịch định lượng dựa trên phương pháp phân tích Markttechnik (MT) được các tổ chức tài chính Đức sử dụng rộng rãi. Chiến lược này kết hợp nhiều chiều như theo dõi xu hướng đường trung bình động (SMA), xác định mức hỗ trợ và kháng cự, phân tích mô hình đường K đảo ngược và thêm vị thế theo kiểu kim tự tháp để đạt được giao dịch mạnh mẽ thông qua kiểm soát rủi ro chặt chẽ. Cốt lõi của chiến lược này là xác định hướng đi của xu hướng thị trường thông qua việc đánh giá toàn diện các tín hiệu đa chiều và mở rộng lợi nhuận thông qua các vị thế theo kiểu kim tự tháp khi xu hướng được hình thành.
Chiến lược này sử dụng các thành phần chính sau đây để xây dựng một hệ thống giao dịch:
Chiến lược này xây dựng một hệ thống giao dịch hoàn chỉnh thông qua phân tích tín hiệu đa chiều và kiểm soát rủi ro chặt chẽ. Ưu điểm cốt lõi của chiến lược này nằm ở độ tin cậy của tín hiệu và khả năng kiểm soát rủi ro, nhưng việc tối ưu hóa tham số vẫn cần thiết cho các môi trường thị trường khác nhau. Thông qua các hướng tối ưu hóa được đề xuất, tính ổn định và lợi nhuận của chiến lược dự kiến sẽ được cải thiện hơn nữa. Chiến lược này phù hợp để sử dụng trên thị trường có xu hướng rõ ràng và là lựa chọn đáng cân nhắc cho các nhà giao dịch muốn có lợi nhuận ổn định.
/*backtest
start: 2025-01-02 00:00:00
end: 2025-01-09 00:00:00
period: 30m
basePeriod: 30m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("Markttechnik Strategie mit Pyramiding und Drawdown-Limit", overlay=true, pyramiding=2)
// Eingabewerte
lengthSupport = input.int(3, title="Unterstützungs-/Widerstandsfenster", minval=1)
lengthSMA = input.int(10, title="SMA Länge für Trends", minval=1)
riskRewardRatio = input.float(2.0, title="Risk-Reward-Ratio", minval=0.1, step=0.1)
maxDrawdown = input.float(5.0, title="Maximaler Drawdown (%)", minval=0.1, step=0.1)
// Unterstützungs- und Widerstandszonen berechnen
support = ta.lowest(low, lengthSupport)
resistance = ta.highest(high, lengthSupport)
// Trendindikator (SMA-basierter Trend)
sma = ta.sma(close, lengthSMA)
trendUp = close > sma
trendDown = close < sma
// Umkehrstäbe erkennen
isHammer = close > open and (low < open) and ((open - low) > 2 * (close - open))
isShootingStar = open > close and (high > open) and ((high - open) > 2 * (open - close))
// Kauf- und Verkaufssignale
buySignal = isHammer and close > support and trendUp
sellSignal = isShootingStar and close < resistance and trendDown
// Strategiefunktionen: Pyramiding und Drawdown
equityPeak = na(strategy.equity[1]) or strategy.equity > strategy.equity[1] ? strategy.equity : strategy.equity[1] // Höchster Kontostand
drawdown = equityPeak > 0 ? (strategy.equity - equityPeak) / equityPeak * 100 : 0 // Drawdown in Prozent
if buySignal and drawdown > -maxDrawdown
strategy.entry("Buy", strategy.long)
strategy.exit("Sell", "Buy", stop=low - (high - low) * riskRewardRatio, limit=close + (close - low) * riskRewardRatio)
if sellSignal and drawdown > -maxDrawdown
strategy.entry("Sell", strategy.short)
strategy.exit("Cover", "Sell", stop=high + (high - low) * riskRewardRatio, limit=close - (high - close) * riskRewardRatio)
// Unterstützungs- und Widerstandslinien zeichnen
plot(support, color=color.new(color.green, 80), linewidth=1, title="Unterstützungszone")
plot(resistance, color=color.new(color.red, 80), linewidth=1, title="Widerstandszone")
// Trendlinie (SMA)
plot(sma, color=color.blue, linewidth=2, title="SMA-Trend")
// Umkehrstäbe hervorheben
bgcolor(buySignal ? color.new(color.green, 90) : na, title="Kaufsignal Hintergrund")
bgcolor(sellSignal ? color.new(color.red, 90) : na, title="Verkaufssignal Hintergrund")
// Debugging: Drawdown anzeigen
plot(drawdown, title="Drawdown (%)", color=color.purple, linewidth=2, style=plot.style_line)