Multi-Timeframe-Pivot-Reversal-Strategie und prozentuales dynamisches Stop-Profit- und Stop-Loss-System

MTF Pivot TP SL
Erstellungsdatum: 2025-02-08 15:04:47 zuletzt geändert: 2025-02-08 15:04:47
Kopie: 1 Klicks: 412
1
konzentrieren Sie sich auf
1617
Anhänger

Multi-Timeframe-Pivot-Reversal-Strategie und prozentuales dynamisches Stop-Profit- und Stop-Loss-System

Überblick

Die Strategie ist ein hochmodernes Handelssystem, das auf mehreren Zeitzyklus-Analysen basiert und die Chancen auf eine Marktumkehr durch die Identifizierung von wichtigen Pivot-Punkten in höheren Zeitzyklen erfasst. Die Strategie kombiniert einen dynamischen Prozentsatz Stop-Loss-Mechanismus, um Risiken effektiv zu kontrollieren und gleichzeitig nach stabilen Erträgen zu streben. Das System enthält auch eine Handelsintervallkontrolle und eine Zeiträumetestfunktion, die es besser für die reale Handelsumgebung geeignet macht.

Strategieprinzip

Die Kernlogik der Strategie basiert auf den folgenden Schlüsselelementen:

  1. Die Pivot-Analyse wird in höheren Zeiträumen (default 60 Minuten) verwendet, um die Pivot-Bildungsbedingungen durch die Parameter leftBars und rightBars zu definieren.
  2. Die Risiken und Ertragsziele für jeden Handel werden durch dynamisch berechnete prozentuale Stop-Loss-Positionen verwaltet.
  3. Mehrzeit-Perioden-Analysen bieten zuverlässigere Beurteilungen über die Marktstruktur und reduzieren falsche Signale.
  4. Die Intervallsteuerung (Standard 1440 Minuten) verhindert übermäßige Transaktionen und verbessert die Signalqualität.
  5. Die Zeiträume-Testfunktion ermöglicht die Validierung von Strategien in bestimmten historischen Zeitabschnitten.

Strategische Vorteile

  1. Mehrzeit-Zyklus-Analysen bieten eine umfassendere Sicht auf den Markt und reduzieren die Zahl der Falsch-Breakouts.
  2. Die dynamische Stop-Loss-Prozent-Anpassung an unterschiedliche Marktumstände erhöht die Strategie-Stabilität.
  3. Die Intervallkontrolle verhindert übermäßige Transaktionen und senkt die Transaktionskosten.
  4. Die Zeiträume-Tests ermöglichen die Optimierung von Strategien und die Analyse der historischen Performance.
  5. Der Code ist klar strukturiert und leicht zu pflegen und zu ändern.

Strategisches Risiko

  1. In einem sehr schwankenden Markt kann ein fester Stop-Loss-Prozentsatz nicht flexibel genug sein.
  2. Längere Handelsintervalle können ein Teil des effektiven Signals verpassen.
  3. Die Verzögerung bei der Identifizierung von Knotenpunkten kann zu einer unvorhergesehenen Zeit für die Einreise führen.
  4. Es könnte zu viele falsche Signale in den OTC-Märkten geben.

Richtung der Strategieoptimierung

  1. Die Einführung von Adaptive Volatility Indicators zur dynamischen Anpassung des Stop-Loss-Prozentsatzes.
  2. Hinzufügen von Filtern für die Marktumgebung, um die Strategieparameter an die Stärke der Trends anzupassen.
  3. Integrierte Traffic-Analysen zur Verbesserung der Zuverlässigkeit der Eingangssignale.
  4. Um eine dynamische Intervall-Anpassung der Transaktionen auf Basis von Marktschwankungen zu ermöglichen.
  5. Die Einführung eines mobilen Stop-Loss-Schutzes ist bereits vorteilhaft.

Zusammenfassen

Die Strategie bietet einen vollständigen Rahmen für das Handelssystem durch mehrere Zeitzyklenanalyse und dynamische Risikomanagement. Obwohl es einige Optimierungsbedürfnisse gibt, ist die Gesamtkonzeption vernünftig und hat eine gute Praktikabilität. Durch die empfohlene Optimierungsrichtung wird die Strategie eine stabilere Leistung in verschiedenen Marktumgebungen erwarten.

Strategiequellcode
/*backtest
start: 2025-01-01 00:00:00
end: 2025-01-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Pivot Reversal Strategy with MTF TP & SL in Percent and Test Range", overlay=true)

// Входные параметры
higher_tf = input.timeframe("60", title="Higher Timeframe for Breakout Check")  // Таймфрейм для анализа пробоя
leftBars = input(4, title="Left Bars")
rightBars = input(2, title="Right Bars")
TP_percent = input.float(1.0, title="Take Profit (%)", minval=0.1, step=0.1)   // Тейк-профит в процентах
SL_percent = input.float(0.5, title="Stop Loss (%)", minval=0.1, step=0.1)    // Стоп-лосс в процентах
trade_interval = input.int(1440, title="Minimum Time Between Trades (Minutes)") // Интервал между сделками

// Диапазон тестирования (используем UNIX timestamps)
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")  // Стартовая дата для тестирования
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")    // Конечная дата для тестирования

// Проверка, попадает ли текущая свеча в указанный диапазон времени
in_test_range = true

// Определение пивотов на более крупном таймфрейме
higher_tf_high = request.security(syminfo.tickerid, higher_tf, ta.pivothigh(leftBars, rightBars))
higher_tf_low = request.security(syminfo.tickerid, higher_tf, ta.pivotlow(leftBars, rightBars))

// Последнее время открытия сделки
var float last_trade_time = na

// Логика для лонга
swh_cond = not na(higher_tf_high)
hprice = 0.0
hprice := swh_cond ? higher_tf_high : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if le and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_long = hprice * (1 + TP_percent / 100)  // Тейк-профит в процентах
    sl_price_long = hprice * (1 - SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevLE", strategy.long, stop=hprice + syminfo.mintick)
    strategy.exit("TP_SL_Long", from_entry="PivRevLE", 
                  limit=tp_price_long, 
                  stop=sl_price_long)
    last_trade_time := time

// Логика для шорта
swl_cond = not na(higher_tf_low)
lprice = 0.0
lprice := swl_cond ? higher_tf_low : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if se and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_short = lprice * (1 - TP_percent / 100)  // Тейк-профит в процентах
    sl_price_short = lprice * (1 + SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevSE", strategy.short, stop=lprice - syminfo.mintick)
    strategy.exit("TP_SL_Short", from_entry="PivRevSE", 
                  limit=tp_price_short, 
                  stop=sl_price_short)
    last_trade_time := time

// Для наглядности отображаем уровни на графике
plot(le and in_test_range ? hprice * (1 + TP_percent / 100) : na, color=color.green, title="Long Take Profit")
plot(le and in_test_range ? hprice * (1 - SL_percent / 100) : na, color=color.red, title="Long Stop Loss")
plot(se and in_test_range ? lprice * (1 - TP_percent / 100) : na, color=color.green, title="Short Take Profit")
plot(se and in_test_range ? lprice * (1 + SL_percent / 100) : na, color=color.red, title="Short Stop Loss")