Fibonacci-Durchschnittskerze mit gleitender Durchschnittsstrategie für den quantitativen Handel

Schriftsteller:ChaoZhang, Datum: 2024-01-19 14:36:45
Tags:

img

Übersicht

Diese Strategie konstruiert durchschnittliche Kerzen und gleitende Durchschnitte auf der Grundlage der Fibonacci-Sequenz, um quantitativen Handel mit nur Long-Positionen und keine Short-Positionen zu implementieren.

Strategieprinzip

Die wichtigsten Schritte dieser Strategie sind:

  1. Berechnen Sie die durchschnittlichen Schlusskurs, Höchst-, Tief- und Offenkurs der letzten 10 Fibonacci-Zyklen, um eine durchschnittliche Kerze zu konstruieren.

  2. Berechnen Sie die 1-, 2-, 3-, 5-, 8-, 13-, 21-, 34- und 55-Perioden exponentiellen gleitenden Durchschnittswerte (EMA) des durchschnittlichen Schlusskurses und nehmen Sie deren Durchschnitt, um den durchschnittlichen EMA zu erhalten.

  3. Lange und schließende Konditionen festlegen: eine lange Position öffnen, wenn die durchschnittliche Kerze bullische Muster zeigt (z. B. Schließung über dem offenen, bullischen Abwärtstrend) und Schließen über dem durchschnittlichen EMA liegt; eine lange Position schließen, wenn die durchschnittliche Kerze bearische Muster zeigt (z. B. Schließen unter dem offenen, bearischen Abwärtstrend) und Schließen unter dem durchschnittlichen EMA liegt.

Durch die Berechnung der durchschnittlichen Kerzen, um Preisschwankungen zu filtern, und durch die Kombination mit gleitenden Durchschnittsindikatoren zur Erzeugung von Handelssignalen kann diese Strategie Trends effektiv erkennen und Handelsrisiken kontrollieren.

Vorteile

  1. Durchschnittliche Kerzen, die auf der Fibonacci-Sequenz basieren, können zufälliges Preisgeräusch effektiv filtern und Trendsignale identifizieren.

  2. Durchschnitt der mehrfachen EMA erhöht die Stabilität der Unterstützungs-/Widerstandsniveaus und verbessert die Signalqualität.

  3. Nur lange Positionen reduzieren die Anzahl der Geschäfte, die Handelskosten und die Auswirkungen von Slippage.

  4. Er ist für den mittelfristigen bis langfristigen Handel geeignet.

Risiken

  1. Eine nur langfristige Strategie kann erhebliche Verluste auf Bärenmärkten verursachen.

  2. EMA-Linien sind anfällig für Verzögerungen, da möglicherweise die besten Einstiegspunkte fehlen.

  3. Übermäßig große Zeitrahmen zu verfolgen, kann dazu führen, dass man in kürzeren Zeitrahmen Chancen verpasst.

  4. Der begrenzte Raum für die Optimierung von Parametern bedeutet, dass die tatsächliche Handelsleistung unter den Rücktestresultaten liegen kann.

Verbesserungsbereiche

  1. Kann testen, indem er angemessene Stop-Loss-Positionen zu Exit-Positionen hinzufügt, wenn Verluste zunehmen.

  2. Kann Volatilitätsmaßnahmen wie ATR kombinieren, um die Positionsgröße dynamisch anzupassen.

  3. Kann kurzfristige Positionen während Abwärtstrends testen, um den Gewinn zu steigern.

  4. Kann die EMA-Periodenparameter optimieren, um die besten Kombinationen zu finden.

Schlussfolgerung

Diese Strategie identifiziert Trendsignale für den quantitativen Handel, indem sie Fibonacci-Durchschnittskerzen und gleitende Durchschnittsindikatoren konstruiert. Sie profitiert davon, Preislärm mit durchschnittlichen Kerzen zu filtern und die Handelskosten zu reduzieren, indem sie nur lang geht. Sie birgt auch die Risiken von Bärenmärkten für nur lange Positionen und EMA-Verzögerungsprobleme. Insgesamt kontrolliert diese Strategie Handelsrisiken aus mehreren Aspekten und funktioniert gut in größeren Zeitrahmen, die für den mittelfristigen bis langfristigen Handel geeignet sind. Weitere Optimierungen können die Robustheit und Rentabilität verbessern.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("Fibonacci candle", overlay=false  )


//plot of our fibonacci candle
// Fibonacci 
// Fn = Fn-1 + Fn-2
// F10 = 55
// 0 1 2 3 5 8 13 21 34 55

avg_close = (close[0] + close[1] + close[2] + close[3] +close[5] + close[8] + close[13]+ close[21] + close[34] + close[55]) / 10
avg_high = (high[0] + high[1] + high[2] + high[3] +high[5] + high[8] + high[13]+ high[21] + high[34] + high[55]) / 10
avg_low = (low[0] + low[1] + low[2] + low[3] +low[5] + low[8] + low[13]+ low[21] + low[34] + low[55]) / 10
avg_open = (open[0] + open[1] + open[2] + open[3] +open[5] + open[8] + open[13]+ open[21] + open[34] + open[55]) / 10


src = avg_close//input(avg_close, title="Source")


out55 = ema(src, 55)
out1 = ema(src, 1)
out2 = ema(src, 2)
out3 = ema(src, 3)
out5 = ema(src, 5)
out8 = ema(src, 8)
out13 = ema(src, 13)
out21 = ema(src, 21)
out34 = ema(src, 34)

avg_ema = (out55 + out1 + out2 + out3+ out5 + out8 + out13 + out21 + out34)/9

plot(avg_ema)

plotcandle(avg_open, avg_high, avg_low, avg_close, title='Title', color = avg_open < avg_close ? color.green : color.red, wickcolor=color.white)

long = avg_open < avg_close and avg_close > avg_close[1] and avg_high > avg_high[1] and  avg_close[1] > avg_close[2] and avg_high[1] > avg_high[2]
short = avg_open > avg_close and avg_close < avg_close[1] and avg_low < avg_low[1] and avg_close[1] < avg_close[2] and avg_low[1] < avg_low[2]

strategy.entry("long",1,when=long and avg_close > avg_ema)
strategy.close('long',when=short and avg_close < avg_ema)


Mehr