Kombi Umgekehrte EMA Volumengewichtung Optimierung Handelsstrategien

Schriftsteller:ChaoZhang, Datum: 2023-12-07 16:39:50
Tags:

img

Übersicht

Diese Strategie ist eine doppelt optimierte Kombination umgekehrter EMA-gewichteter Handelsstrategie. Sie kombiniert umgekehrte Strategie und EMA-gewichtete Strategie, zwei verschiedene Arten von Strategien, und erzeugt zuverlässigere Handelssignale, indem beurteilt wird, ob die Signale der beiden Strategien konsistent sind.

Strategieprinzip

Der Umkehrteil verwendet die 123 Umkehrstrategie. Diese Strategie kombiniert die Beziehung zwischen den Schlusskurs der vorangegangenen zwei Tage und dem stochastischen Oszillator, um Signale zu erzeugen.

  • Wenn der heutige Schlusskurs höher als der gestrige ist und der gestrige Schlusskurs niedriger als der Vorabend ist; gleichzeitig ist die 9-tägige stochastische langsame Linie unter 50, gehen Sie lang;
  • Wenn der heutige Schlusskurs niedriger als der gestrige ist und der gestrige Schlusskurs höher als der Tag zuvor ist; gleichzeitig ist die 9-tägige stochastische Schnelllinie höher als 50, gehen Sie kurz.

Der gewichtete Teil der EMA verwendet die Berechnung des exponentiellen gleitenden Durchschnitts und der volumengewichteten Berechnung.

xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)
nRes = xMAVolPrice / xMAVol

Die spezifischen Handelsregeln sind: Wenn der nRes-Indikator niedriger/höher ist als der Schlusskurs von gestern, geht man Long/Short.

Schließlich beurteilt die Strategie, ob die Signale der beiden Teile konsistent sind, bevor das tatsächliche Handelssignal generiert wird.

Analyse der Vorteile

Die Strategie kombiniert zwei verschiedene Arten von Strategien, um sich gegenseitig zu überprüfen und die Zuverlässigkeit von Signalen zu verbessern und falsche Signale zu reduzieren.

Risikoanalyse

Die Strategie hat eine gewisse Zeitverzögerung und ist anfällig, kurzfristige Handelsmöglichkeiten zu verpassen. Außerdem ist die EMA-gewichtet für oszillierende Märkte nicht wirksam. Darüber hinaus muss auch die Zuverlässigkeit der Umkehrsignale überprüft werden.

Verkürzen Sie die Parameter angemessen, um die Reaktion zu beschleunigen. Fügen Sie Stop-Loss hinzu, um Risiken zu kontrollieren. Fügen Sie mehr Faktoren ein, um Umkehrsignale zu überprüfen.

Optimierung

  1. Testen Sie mehr Umkehrfaktorkombinationen, um die optimalen Parameter zu finden.
  2. Versuchen Sie verschiedene Arten von EMA-Gewichtungsmethoden.
  3. Fügen Sie Stop-Loss hinzu, Trailing Stop-Loss.
  4. Optimieren Sie die Parameter für eine schnellere Reaktion.

Zusammenfassung

Die Strategie integriert die Vorteile zweier verschiedener Arten von Strategien, die die Signalqualität verbessern und die Nachteile einer einzelnen Strategie bis zu einem gewissen Grad überwinden können.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/10/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The related article is copyrighted material from Stocks & Commodities 2009 Oct 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

EMA_VW(Length) =>
    pos = 0.0
    xMAVolPrice = ema(volume * close, Length)
    xMAVol = ema(volume, Length)
    nRes = xMAVolPrice / xMAVol
    pos := iff(nRes < close[1], 1,
             iff(nRes > close[1], -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & EMA & Volume Weighting", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthEMA_VM = input(22, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMA_VW = EMA_VW(LengthEMA_VM)
pos = iff(posReversal123 == 1 and posEMA_VW == 1 , 1,
	   iff(posReversal123 == -1 and posEMA_VW == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
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