Đây là một 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 sử dụng rộng rãi bởi các tổ chức tài chính Đức. Chiến lược kết hợp nhiều khía cạnh bao gồm theo xu hướng SMA, xác định hỗ trợ và kháng cự, phân tích mô hình nến đảo ngược và kích thước vị trí kim tự tháp, đạt được giao dịch ổn định thông qua kiểm soát rủi ro nghiêm ngặt.
Chiến lược sử dụng các thành phần chính sau đây để xây dựng hệ thống giao dịch: 1. Xác định xu hướng: Sử dụng trung bình di chuyển đơn giản 10 giai đoạn (SMA) làm chỉ số xu hướng chính, với giá trên SMA cho thấy xu hướng tăng và ngược lại. 2. Hỗ trợ và kháng cự: Xác định các vùng hỗ trợ và kháng cự ngắn hạn bằng cách sử dụng giá cao và thấp 3 giai đoạn. 3. Mô hình đảo ngược: Phân tích mô hình nến búa và sao bắn như các chỉ số đảo ngược quan trọng. 4. Các tín hiệu giao dịch: Khởi động các tín hiệu giao dịch dựa trên xác nhận hướng xu hướng kết hợp với các mức hỗ trợ / kháng cự và mô hình đảo ngược. 5. Quản lý vị trí: Sử dụng chiến lược kích thước vị trí kim tự tháp cho phép tích lũy vị trí lên đến 2 lần. 6. Kiểm soát rủi ro: Thiết lập giới hạn rút tiền tối đa 5% và sử dụng tỷ lệ rủi ro-lợi nhuận 2.0 cho mức dừng lỗ và lấy lợi nhuận.
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 nghiêm ngặt. Những lợi thế cốt lõi nằm ở độ tin cậy tín hiệu và khả năng kiểm soát rủi ro, mặc dù 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, sự ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa. Chiến lược này phù hợp với các thị trường có xu hướng rõ ràng và là một cân nhắc đáng giá cho các nhà giao dịch tìm kiếm 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)