
Ini adalah strategi perdagangan kuantitatif berdasarkan kaedah analisis Markttechnik (MT) yang digunakan secara meluas oleh institusi kewangan Jerman. Strategi ini menggabungkan berbilang dimensi seperti penjejakan arah aliran purata bergerak (SMA), pengenalan tahap sokongan dan rintangan, analisis corak garis K pembalikan dan penambahan kedudukan gaya piramid untuk mencapai dagangan yang teguh melalui kawalan risiko yang ketat. Teras strategi adalah untuk menentukan arah aliran pasaran melalui pertimbangan komprehensif isyarat pelbagai dimensi, dan untuk mengembangkan keuntungan melalui kedudukan gaya piramid apabila arah aliran terbentuk.
Strategi menggunakan komponen utama berikut untuk membina sistem perdagangan:
Strategi ini membina sistem perdagangan yang lengkap melalui analisis isyarat pelbagai dimensi dan kawalan risiko yang ketat. Kelebihan teras strategi terletak pada kebolehpercayaan isyarat dan kebolehkawalan risiko, tetapi pengoptimuman parameter masih diperlukan untuk persekitaran pasaran yang berbeza. Melalui arahan pengoptimuman yang disyorkan, kestabilan dan keuntungan strategi dijangka akan dipertingkatkan lagi. Strategi ini sesuai untuk digunakan dalam pasaran dengan arah aliran yang jelas dan merupakan pilihan yang patut dipertimbangkan untuk pedagang yang mencari pulangan yang stabil.
/*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)