Quantitative Handelsstrategie auf der Grundlage gleitender Durchschnitte und Bollinger-Bänder

Schriftsteller:ChaoZhang, Datum: 2024-04-26 11:45:05 Uhr
Tags:SMAWMAEMA

img

Übersicht

Diese Strategie verwendet hauptsächlich gleitende Durchschnitte und Bollinger Bands, um Markttrends und Volatilität zu erfassen. Sie verwendet drei verschiedene Arten von gleitenden Durchschnitten: einfacher gleitender Durchschnitt (SMA), gewichteter gleitender Durchschnitt (WMA) und exponentieller gleitender Durchschnitt (EMA). Gleichzeitig verwendet sie Bollinger Bands, um Preiskanäle zu setzen, wobei die oberen und unteren Bande als Signale für die Eröffnung und Schließung von Positionen dienen. Wenn der Preis durch den oberen Bollinger Band bricht, öffnet er eine kurze Position; wenn er durch den unteren Band bricht, öffnet er eine lange Position.

Strategieprinzipien

  1. Berechnen Sie drei gleitende Durchschnitte mit unterschiedlichen Perioden: langsame SMA, schnelle EMA und mittlere WMA, die die langfristigen, kurzfristigen und mittelfristigen Markttrends widerspiegeln.
  2. Berechnen Sie zwei Sätze von Bollinger Bands basierend auf der Preisstandardabweichung: Einstiegs-Bollinger Bands (mit engerem Abstand zwischen oberen und unteren Bands) und Stop-Loss-Bollinger Bands (mit größerer Entfernung).
  3. Wenn die schnelle EMA über den oberen Bollinger-Band überschreitet, öffnen Sie eine Short-Position; wenn die schnelle EMA unter den unteren Bollinger-Band überschreitet, öffnen Sie eine Long-Position. Dies bedeutet, dass der Preis erheblich vom Mittel abweicht und ein Trend entstehen kann.
  4. Wenn der Kurs die oberen Stop-Loss-Bollinger-Bänder weiter überschreitet, schließen Sie alle Long-Positionen; wenn der Kurs die unteren Stop-Loss-Bollinger-Bänder weiter überschreitet, schließen Sie alle Short-Positionen, um Verluste zu kontrollieren und den Trend umzukehren.
  5. Der oben genannte Prozess wird kontinuierlich wiederholt, so dass die Strategie Positionen flexibel an die Marktentwicklung anpassen und Verluste rechtzeitig stoppen kann, um robuste Renditen zu erzielen.

Strategische Vorteile

  1. Es handelt sich um drei gleitende Durchschnitte mit unterschiedlichen Geschwindigkeiten, die die Marktentwicklung auf verschiedenen Ebenen umfassend abbilden.
  2. Es werden Bollinger-Bänder als Bedingungen für die Eröffnung und Schließung von Positionen eingeführt, die sich dynamisch an die Marktvolatilität anpassen und sich flexibel an die Marktbedingungen anpassen lassen.
  3. Es setzt Stop-Loss-Bollinger-Bänder, um Abzüge zu kontrollieren, und schließt Positionen entschieden, wenn der Markt dramatisch schwankt, um verstärkte Verluste zu vermeiden.
  4. Die Logik ist klar und die Regeln sind einfach, einfach umzusetzen und zu optimieren.
  5. Es hat eine breite Palette von Anwendungen und kann für verschiedene Märkte und Zeiträume wirksam sein.

Strategische Risiken

  1. In einem seitlichen Markt kann häufiges Öffnen und Schließen von Positionen zu erheblichen Transaktionskosten führen und die Gewinne beeinträchtigen.
  2. In der Anfangsphase einer Trendumkehr kann die Strategie immer noch in Richtung des ursprünglichen Trends handeln, was zu gewissen Verlusten führt.
  3. Bei extremen Marktbedingungen, wie z. B. schnellen Preisunterschieden, können die Stop-Loss-Bollinger-Bänder die Risiken möglicherweise nicht wirksam kontrollieren.
  4. Eine unsachgemäße Parameterwahl (z. B. gleitende Durchschnittsperioden, Bollinger-Bandbreiten usw.) kann die Strategie ungültig machen.
  5. Wenn der Markt weiterhin schwankt, kann die Strategie möglicherweise nicht in der Lage sein, für einen längeren Zeitraum signifikante Trendchancen zu erfassen.

Strategieoptimierungsrichtlinien

  1. Erhöhen Sie die Parameter der gleitenden Durchschnittsperioden und der Bollinger-Bandbreiten angemessen, um die Handelsfrequenz und die Kosten in einem seitlichen Markt zu reduzieren.
  2. Einführung mehrer technischer Indikatoren oder Marktstimmungsindikatoren als Filter zur Verbesserung der Genauigkeit der Eintrittssignale und Vermeidung von Verlusten bei Trends.
  3. Festlegen von besonderen Vorschriften für extreme Marktbedingungen, z. B. Aussetzung neuer Positionen bei Lücken, um Risiken zu kontrollieren.
  4. Optimierung der Parameter, um die für den aktuellen Markt am besten geeignete Kombination zu finden und so die Robustheit der Strategie zu erhöhen.
  5. Um die Risiken der Strategie weiter zu kontrollieren, werden Positionsmanagement- und Kapitalverwaltungsregeln wie die Anpassung von Positionen anhand der Trendstärke oder Rentabilität, die Festlegung allgemeiner Stop-Loss-Linien usw. hinzugefügt.

Zusammenfassung

Der Marina Parfenova School Project Bot ist eine quantitative Handelsstrategie, die auf gleitenden Durchschnitten und Bollinger Bands basiert. Er versucht, durch die Erfassung von Markttrends und die Kontrolle von Drawdowns durch Bollinger Band Stop-Loss-Linien zu profitieren. Die Strategielogik ist einfach und unkompliziert, mit einer breiten Palette von Anwendungen, und die Parameter können flexibel nach den Merkmalen des Marktes angepasst werden.


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

//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)

sma(price, n) =>
    result = 0.0
    for i = 0 to n - 1
        result := result + price [i] / n    
    result

wma(price, n) =>
    result = 0.0
    sum_weight = 0.0
    weight = 0.0
    for i = 0 to n - 1
        weight := n - 1
        result := result + price [i]*weight
        sum_weight := sum_weight + weight
    result/sum_weight

ema(price, n) =>
    result = 0.0
    alpha = 2/(n + 1)
    prevResult = price 
    if (na(result[1]) == false)
        prevResult := result[1]
    result := alpha * price + (1 - alpha) * prevResult

/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)

// ----- Линии индикаторов -----

// Медленная скользящая 
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)

// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)

bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)

// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)

// ----- Сигналы для запуска стратегии -----

// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
    strategy.entry("short", strategy.short)

// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
    strategy.entry("long", strategy.long)

// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера 
if (high >= close_short_line)
    strategy.close("long")

// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
    strategy.close("short")

Verwandt

Mehr