
Die Strategie erfasst Markttrends durch die Identifizierung der Momente, in denen die Preise die SuperTrend-Merklinie überschreiten. Die Strategie kombiniert mehrere Filtermechanismen, darunter die Moscow-Zeit-MSK-Filter, die Filterung der Preisniveaus und die Festsetzung der Prozentsatzstop-Funktionen. Die System ist in mehreren Funktionen ausgelegt, die sowohl einzeln als auch in mehreren oder leeren Bereichen gehandelt werden können.
Die Strategie basiert auf folgenden zentralen Mechanismen:
Berechnung der SuperTrend-IndikatorenStrategie: Die SuperTrend-Linie wird mit dem ATR-Indikator ((Standard-Zyklus 23) und dem Multiplikator ((Standard 1.8) berechnet. Diese Linie passt sich automatisch an die Marktvolatilität an und bildet dynamische Unterstützung und Widerstand.
Handelssignale erzeugt:
HandelsmodellDie Strategie bietet drei Arten von Transaktionen:
Mehrfachfilterung:
Dynamische BremsvorrichtungenDie Strategie implementiert einen festen Prozentsatz Stop-Off basierend auf dem Einstiegspreis (default 1,5%), sobald der Preis den Stop-Off-Level erreicht hat, wird die Strategie automatisch platziert und die Gewinne gesperrt. Der Stop-Off-Level kann intuitiv auf der Grafik angezeigt werden, und der Benutzer kann diese Visualisierungsfunktion nach Bedarf aktivieren oder ausschalten.
Ich habe den Code analysiert und folgende Vorteile festgestellt:
Anpassungsfähigkeit der SchwankungenDer SuperTrend-Indikator basiert auf der ATR-Berechnung und kann die Tracking-Distanz automatisch an die Marktschwankungen anpassen. Er erhöht die Schutzdistanz in hoch- und niedrig-schwankenden Märkten und verfolgt die Preise näher in niedrig-schwankenden Märkten, was die Anpassungsfähigkeit der Strategie an verschiedene Marktumstände erhöht.
Mehrere RisikokontrollenDie Strategie integriert drei Ebenen des Risikomanagements: Zeit-Filter, Preis-Filter und Stop-Setting. Diese mehrdimensionale Risikokontrolle erhöht die Sicherheit des Handels erheblich.
Flexible HandelsrichtungDie Strategie kann an unterschiedliche Marktpräferenzen und Handelsbeschränkungen angepasst werden.
Optimierung der ZeitintelligenzDer einzigartige Moskauer Zeitfilter ermöglicht den Handel in bestimmten Zeitabschnitten und hilft dabei, die ineffizienten Zeiten des Marktes zu umgehen und die effizienten Handelsfenster gezielt zu erfassen, was besonders für Händler geeignet ist, die internationale Handelszeiten berücksichtigen müssen.
Vorteile der VisualisierungDie Anzeige von Hintergrundfarben, SuperTrend-Linienfarben und Stop-Horizontale Markierungen bieten intuitive visuelle Handelsreferenzen und reduzieren die Analyse-Komplexität.
KommissionsoptimierungDie Strategie beinhaltet die Berücksichtigung der in der Strategie eingebauten Provisionen (0,06%), die die Rückmeldungsergebnisse näher an die tatsächliche Handelsumgebung bringen.
Einführung von SchlusspreisenStrategie: Durch die Verwendung von Prozess_orders_on_close=true reduziert sich der Einfluss von Rutschpunkten und erhöht die Zuverlässigkeit der Rückmessung.
Obwohl die Strategie so gut konzipiert ist, gibt es folgende potenzielle Risiken:
Trendwende verzögertDer SuperTrend-Indikator ist im Wesentlichen ein rückläufiger Indikator, der bei einer starken Marktausweichung ein verzögertes Signal erzeugen kann, was zu einem verspäteten Ein- oder Ausstieg führt und das Risiko für einen Rückzug erhöht. Die Lösung besteht darin, die ATR-Zyklen und den Multiplikator anzupassen, um die Empfindlichkeit und die Stabilität auszugleichen.
Festgeschaltete BeschränkungEs wird empfohlen, die Stop-Percentage-Anpassung an die dynamische Marktfluktuation oder die Optimierung der Stop-Strategie in Kombination mit anderen technischen Indikatoren anzupassen.
ParameterempfindlichkeitStrategie-Performance hängt stark von den Parameter-Einstellungen ab (ATR-Zyklen, Multiplikatoren, Stop-Percentage usw.), falsche Parameter können zu übermäßigen Transaktionen oder Signalfehlern führen. Die optimale Kombination von Parametern sollte durch Rückverfolgung der historischen Daten gefunden werden.
Übermäßige Einschränkung des FiltersZu strenge Zeit- und Preisfilter können zu verpassten, effektiven Handelschancen führen. Es wird empfohlen, die Filterbedingungen an die tatsächlichen Handelsarten und Marktmerkmale anzupassen.
Abhängigkeit von MarktbedingungenDie Strategie funktioniert in deutlich trendigen Märkten hervorragend, kann aber in unruhigen Märkten häufig falsche Signale erzeugen. Es kann in Betracht gezogen werden, die Marktstaat-Erkennung zu erweitern und die Strategie nur in trendigen Märkten zu aktivieren.
Fehlende SchadensbegrenzungEs wird empfohlen, ein hartes Stop-Mechanismus hinzuzufügen.
Aufgrund der Analyse des Codes empfehle ich folgende Optimierungsmöglichkeiten:
Dynamische Parameter werden angepasstEs kann eine Funktion geschrieben werden, die automatisch die ATR-Periode und den Multiplikator für den SuperTrend anpasst, um die Strategieadaptivität zu verbessern. Der Vorteil besteht darin, dass die optimale Kombination von Parametern automatisch in verschiedenen Marktphasen gefunden werden kann.
Bestätigung mehrerer ZeiträumeDie Einführung eines Mehrzeit-Zyklus-Bestätigungsmechanismus, der den Handel nur dann ausführt, wenn der größere Zeitrahmen und der aktuelle Zeitrahmen in der SuperTrend-Richtung übereinstimmen, reduziert die Anzahl der Falschsignale und verbessert die Signalqualität erheblich.
Intelligente BremssystemeEs wurden folgende Maßnahmen ergriffen: Umstellung der festen Prozentsatz-Stopps auf ATR-basierte dynamische Stopps oder auftriebene Stopps (einige Positionen wurden bei niedrigeren Zielen profitiert, andere Positionen suchten nach höheren Erträgen), Optimierung der Kapitalmanagementstrategie.
Identifizierung der MarktlageErhöhung der Trendstärke (z. B. ADX) oder der Volatilität, um nur dann zu handeln, wenn bestimmte Marktbedingungen erfüllt sind, und um den Handel in einer ineffizienten Marktumgebung zu vermeiden.
Erweiterte RisikomanagementDie Einführung von Per-Transaction-Risikobegrenzungen und Konto-Risikomanagement-Logiken, um ein einzelnes und ein Gesamtrisiko in kontrollierbaren Bereichen zu gewährleisten.
Mehrindikatorische FusionIn Kombination mit anderen technischen Indikatoren (z. B. MACD, RSI oder Bollinger Bands) als zusätzliche Bestätigung wird der Handel nur bei Resonanz mehrerer Indikatoren ausgeführt, was die Signalzuverlässigkeit erhöht.
Volumen angepasste LogikDie Größe des Handels wird entsprechend der Marktliquidität und der Volatilität der Dynamik angepasst. Bei starker Volatilität werden Positionen reduziert, bei stabiler Tendenz werden Positionen erhöht.
Erweiterung der RücklaufphaseDie Strategie wird in den folgenden Kategorien analysiert:
Die SuperTrend Dynamic Stop and Time Filter Strategie ist ein integriertes quantitatives Handelssystem, das technische Analyse und Risikomanagement kombiniert. Es fängt Trends mit SuperTrend-Indikatoren ein und verbessert die Signalqualität durch die Nutzung mehrerer Filtermechanismen. Die Hauptvorteile der Strategie liegen in der Anpassungsfähigkeit der Schwankungsrate und der mehrschichtigen Risikokontrolle, während das potenzielle Risiko hauptsächlich aus der Rückständigkeit der Indikatoren und der Parameter-Sensitivität resultiert.
Die Strategie kann durch die Implementierung von empfohlenen Optimierungsmaßnahmen wie dynamische Parameteranpassungen, Multi-Zeit-Zyklus-Bestätigung und intelligente Stop-Systems ihre Anpassungsfähigkeit und Profitabilität weiter verbessern. Wichtig ist, dass der Trader die Konstruktionsprinzipien und Einschränkungen dieser Strategie versteht und die Parameter in Verbindung mit seinen eigenen Risikopräferenzen und Markterkenntnissen individuell anpasst, um optimale Handelsergebnisse zu erzielen.
Insgesamt handelt es sich um eine klar strukturierte, logisch fundierte Handelsstrategie mit hohem Wert und Anpassungspotenzial, die für quantitative Anleger mit einer gewissen Handelserfahrung geeignet ist.
/*backtest
start: 2024-03-26 00:00:00
end: 2024-07-11 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Supertrend Fixed TP Unified with Time Filter (MSK)", overlay=true,
default_qty_value=0.01,
commission_type=strategy.commission.percent,
commission_value=0.06,
pyramiding=0,
process_orders_on_close=true)
// Настройки индикатора
atrPeriod = input(23, "ATR Length")
factor = input.float(1.8, "Factor", step=0.1, minval=0.1)
tradeMode = input.string("Both", "Trade Mode", options=["Long Only", "Short Only", "Both"])
// Общий параметр тейк-профита
takeProfitPercent = input.float(1.5, "Take Profit (%)", minval=0.01)
showTP = input.bool(true, "▲▼ Показывать ТП") // Добавлен переключатель
// Фильтр цены
price_param = input.float(10000.0, "Цена фильтра", step=1.0)
use_price_filter = input.bool(false, "Использовать фильтр цены")
// Фильтр по времени (Московское время)
useTimeFilter = input.bool(true, "▲▼ Использовать фильтр по времени") // Переключатель фильтра времени
timeFrom = input.int(0, "Время С (часы MSK)", minval=0, maxval=23, step=1)
timeTo = input.int(23, "Время ДО (часы MSK)", minval=0, maxval=23, step=1)
// Функция проверки времени (с учетом Московского времени UTC+3)
isTimeInRange() =>
if not useTimeFilter
true // Фильтр отключен
else
// Переводим время сервера (UTC) в Московское время (UTC+3)
mskHour = (hour(time) + 3) % 24 // Добавляем 3 часа для MSK
if timeFrom <= timeTo
mskHour >= timeFrom and mskHour < timeTo // До timeTo (не включая timeTo)
else
mskHour >= timeFrom or mskHour < timeTo // До timeTo (не включая timeTo)
// Расчет Supertrend
[supertrend, dir] = ta.supertrend(factor, atrPeriod)
// Визуализация Supertrend
plot(supertrend, "Supertrend",
color = dir < 0 ? color.green : color.red,
linewidth = 2,
style = plot.style_linebr)
bgcolor(dir < 0 ? color.new(color.green, 90) : color.new(color.red, 90))
// Сигналы входа с фильтром по времени
longEntry = (dir < 0 and dir[1] > 0) and (use_price_filter ? close > price_param : true) and isTimeInRange()
shortEntry = (dir > 0 and dir[1] < 0) and (use_price_filter ? close < price_param : true) and isTimeInRange()
// Логика стратегии
if tradeMode == "Both"
if longEntry
strategy.close("Short", comment="Close Short")
strategy.entry("Long", strategy.long)
if shortEntry
strategy.close("Long", comment="Close Long")
strategy.entry("Short", strategy.short)
else if tradeMode == "Long Only"
if longEntry
strategy.entry("Long", strategy.long)
if shortEntry
strategy.close("Long", comment="Close Long")
else if tradeMode == "Short Only"
if shortEntry
strategy.entry("Short", strategy.short)
if longEntry
strategy.close("Short", comment="Close Short")
// Управление тейк-профитом
var color tpColor = na
var float tpLevel = na
var label tpLabel = na
// Сброс при закрытии позиции
if strategy.position_size == 0 and strategy.position_size[1] != 0
tpLevel := na
tpColor := na
label.delete(tpLabel)
tpLabel := na
// Обновление ТП при открытии позиции
if strategy.position_size > 0
entryPrice = strategy.opentrades.entry_price(0)
tpLevel := entryPrice * (1 + takeProfitPercent/100)
tpColor := color.green
// Закрытие лонга по TP на закрытии бара
if close >= tpLevel
strategy.close("Long", comment="TP Long")
// Обновление метки
if showTP
label.delete(tpLabel)
tpLabel := label.new(
bar_index, tpLevel,
text = str.tostring(tpLevel, "#.##"),
color = color.green,
textcolor = color.white,
style = label.style_label_down,
yloc = yloc.price)
if strategy.position_size < 0
entryPrice = strategy.opentrades.entry_price(0)
tpLevel := entryPrice * (1 - takeProfitPercent/100)
tpColor := color.red
// Закрытие шорта по TP на закрытии бара
if close <= tpLevel
strategy.close("Short", comment="TP Short")
// Обновление метки
if showTP
label.delete(tpLabel)
tpLabel := label.new(
bar_index, tpLevel,
text = str.tostring(tpLevel, "#.##"),
color = color.red,
textcolor = color.white,
style = label.style_label_up,
yloc = yloc.price)
// Визуализация ТП
plot(showTP ? tpLevel : na, "Take Profit",
color = tpColor,
linewidth = 1,
style = plot.style_circles)
// Обновление позиции метки
if showTP and not na(tpLevel)
label.set_xy(tpLabel, bar_index, tpLevel)