Kombinationshandelsstrategie auf der Grundlage von doppelten EMA- und Bandpassfiltern

Schriftsteller:ChaoZhang, Datum: 2024-01-17 11:22:30
Tags:

img

Übersicht

Diese Strategie kombiniert die Indikatoren für den doppelten exponentiellen gleitenden Durchschnitt (DEMA) und den Bandpassfilter (BPF), um das doppelte Filtern von Ausbruchkäufen und Überkauf und Überverkauf durchzuführen, um stabile Handelssignale zu erzeugen und eine maximale Rentabilität zu erzielen.

Strategieprinzip

Die Strategie besteht aus zwei Teilstrategien:

  1. DEMA-Strategie

    Er verwendet die 2-Tage- und 20-Tage-dualen exponentiellen gleitenden Durchschnitte, um Golden Cross-Kauf- und Dead Cross-Verkaufssignale zu generieren.

  2. BPF-Strategie

    Der BPF-Indikator kombiniert mathematische Transformationen, um die zyklischen Komponenten in den Preisen zu erkennen und innerhalb eines bestimmten Zeitraums überkaufte und überverkaufte Zonen zu erzeugen, um Handelssignale zu generieren.

Die Kombination der beiden ermöglicht eine stärkere Verifizierung von Trend und zyklischen Faktoren, wenn gleichzeitige Kauf-/Verkaufssignale auftauchen.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die doppelte Indikatorfilterung, die die Signale stabiler und zuverlässiger macht. DEMA glättet die Preise und identifiziert Trendrichtungen; BPF erkennt zyklische Merkmale und bestimmt überkaufte und überverkaufte Zonen. Die Quervalidierung zwischen den beiden kann falsche Signale, die durch Preislärm und zyklische Anpassungen verursacht werden, stark reduzieren.

Darüber hinaus hat die Strategie selbst eine unübliche Handelsfrequenz, wodurch übermäßige Kapital- und Provisionskosten durch Überhandel vermieden werden.

Risikoanalyse

Das größte Risiko dieser Strategie besteht darin, Marktzustände falsch zu beurteilen. Sie ist anfällig für falsche Signale in unterschiedlichen Märkten und könnte bei Trendumkehren große Stop-Losses erleiden. Darüber hinaus könnten die Parameter-Einstellungen auch die Strategieleistung erheblich beeinflussen.

Um diese Risiken abzuwenden, können Methoden wie die Optimierung der Indikatorparameter, die Einstellung von Stop-Losses/Take-Profits, die Kombination anderer Indikatoren usw. zur Kontrolle und Verbesserung angewendet werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Zeitzyklusoptimierung: Versuche verschiedene DEMA- und BPF-Parameter-Einstellungen, um die optimalen Periodenkombinationen zu ermitteln.

  2. Hinzufügen von Stop-Loss-/Take-Profit-Einstellungen; angemessene Einstellung von Stop-Loss-Amplituden, um Verlustvergrößerung zu vermeiden; angemessene Gewinnnahme, um teilweise Gewinne zu erzielen.

  3. Hinzufügen anderer Indikatorfilter wie Volumen, MACD usw., um irreführende Signale von hohem Volumen und Positionswechsel zu vermeiden.

  4. Anpassungsoptimierung der Parameter: Die DEMA- und BPF-Parameter anpassen, um die Aktualität der Indikatoren zu gewährleisten.

Schlussfolgerung

Die Strategie integriert die Stärken der doppelten EMA- und BPF-Indikatoren mit doppelter Filterung, um die Signalkwalitat zu verbessern und stabile mittelfristige bis langfristige Gewinne zu erzielen.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/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
// The related article is copyrighted material from
// Stocks & Commodities Mar 2010
//
//
// 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


BPF(Length,Delta,SellZone,BuyZone) =>
    pos = 0.0
    xPrice = hl2
    beta = math.cos(3.14 * (360 / Length) / 180)
    gamma = 1 / math.cos(3.14 * (720 * Delta / Length) / 180)
    alpha = gamma - math.sqrt(gamma * gamma - 1)
    BP = 0.0
    BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2])
    pos:= BP > SellZone ? 1 :
    	   BP <= BuyZone? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Bandpass Filter', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Bandpass Filter  ═════●'
LengthBPF = input.int(20, minval=1, group=I2)
Delta = input(0.5, group=I2)
SellZone = input.float(5, step = 0.01, group=I2)
BuyZone = input.float(-5, step = 0.01, 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)
prePosBPF = BPF(LengthBPF,Delta,SellZone,BuyZone)
iff_1 = posEMA20 == -1 and prePosBPF == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBPF == 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)

Mehr