Quantitative Handelsstrategie basierend auf doppeltem EMA und Preisvolatilitätsindikatoren


Erstellungsdatum: 2023-12-18 11:26:49 zuletzt geändert: 2023-12-18 11:26:49
Kopie: 0 Klicks: 649
1
konzentrieren Sie sich auf
1621
Anhänger

Quantitative Handelsstrategie basierend auf doppeltem EMA und Preisvolatilitätsindikatoren

Überblick

Diese Strategie, die als “Combination of Average Line Indicator and Price Volatility Strategy” bezeichnet wird, kombiniert den DEMA (Double Exponential Moving Average) mit dem Price Volatility Indicator, um ein integriertes Handelssignal zu erzeugen.

Strategieprinzip

Die Strategie besteht aus zwei Teilen:

  1. Der DEMA-Indikator. Der Indikator berechnet die 20-Tage- und 2-Tage-Indikator-Moving Averages und erzeugt ein Handelssignal, wenn der Preis die 2-Tage-Linie von oben nach unten oder die 20-Tage-Linie von unten durchbricht.

  2. (Höchster Preis - niedriger Preis) / Schlusskurs Volatilitätsindikator. Der Indikator spiegelt die Schwankungsbreite der Preise in einem Zeitraum wider. Hier berechnen wir einen 16-Tage-Simplemoving-Average der Volatilitätsindikatoren der letzten 20 K-Linien, die ein Handelssignal erzeugen, wenn die aktuellen K-Linien über oder unter diesem Durchschnitt schwanken.

Die Kombination der beiden Signals erzeugt die endgültige Mehrkopf- oder Leerkopf-Handelsanweisung, wenn DEMA und der Volatilitätsindikator gleichzeitig signalisiert werden.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Kombination von mehreren Indikatoren reduziert Falschsignale und erhöht die Zuverlässigkeit der Signale.

  2. Die 20-Tage-Linie kann die mittleren und langen Trends effektiv identifizieren, die 2-Tage-Linie kann die kurzfristigen Schwankungen erfassen, und die Kombination kann auf verschiedene Marktumstände reagieren.

  3. Der Volatilitätsindikator kann die Volatilität des Marktes und die Handelsmöglichkeiten effektiv widerspiegeln.

  4. Durch die Anpassung der Parameter kann der Markt für verschiedene Sorten und Zyklen angepasst werden.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. In Trendmärkten mit geringer Volatilität kann ein Volatilitätsindikator ein falsches Signal erzeugen. Die Filterung kann in Kombination mit anderen Liquiditätsindikatoren durchgeführt werden.

  2. Bei schnellen einseitigen Verläufen kann ein doppeltes EMA zu Verzögerungen führen. Die Parameter können entsprechend verkürzt oder mit anderen Indikatoren kombiniert werden.

  3. Die Kombination von mehreren Indikatoren erhöht die Komplexität der Strategie und erhöht das Risiko einer Überoptimierung. Umfassende Rückmeldungen und Parameterstabilitätstests sind erforderlich.

Optimierungsrichtung

Die Strategie kann auch in folgenden Bereichen optimiert werden:

  1. Ein zusätzlicher Schadensbegrenzungsmechanismus, der jeden einzelnen Schaden wirksam kontrolliert.

  2. Optimierung nach verschiedenen Sorten und Periodenparametern, um die Parameter anpassungsfähiger zu machen

  3. Erhöhung der Liquidität und der Schwankungsrate in Kombination mit Signalqualität.

  4. Hinzufügen von Machine-Learning-Algorithmen, um dynamische Parameter und Gewichtsanpassungen zu ermöglichen.

Zusammenfassen

Die Strategie kombiniert die doppelte EMA und die Volatilitätsindikatoren, um eine gute Handelsperformance in trendigen und schwankenden Märkten zu erzielen. Gleichzeitig besteht ein gewisses Risiko, das weitere Optimierungen und Verbesserungen erfordert. Im Allgemeinen ist die Strategie jedoch klar konzipiert und hat praktischen Betriebswert.

Strategiequellcode
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//  This histogram displays (high-low)/close
//  Can be applied to any time frame.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


HLCH(input_barsback,input_percentorprice,input_smalength) =>
    pos = 0.0
    xPrice = (high-low)/close
    xPriceHL = (high-low)
    xPrice1 = input_percentorprice ? xPrice * 100: xPriceHL
    xPrice1SMA = ta.sma(math.abs(xPrice1), input_smalength)
    pos := xPrice1SMA[input_barsback] > math.abs(xPrice1) ? 1 :
    	     xPrice1SMA[input_barsback] < math.abs(xPrice1) ? -1 : nz(pos[1], 0)
    pos

strategy(title='Combo 2/20 EMA & (H-L)/C Histogram', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ (H-L)/C Histogram  ═════●'
input_barsback = input(20, title="Look Back", group=I2)
input_percentorprice = input(false, title="% change", group=I2)
input_smalength = input(16, title="SMA Length", group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosHLCH = HLCH(input_barsback,input_percentorprice,input_smalength)
iff_1 = posEMA20 == -1 and prePosHLCH == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosHLCH == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)