Quantitative Handelsstrategie mit doppelter Bestätigung


Erstellungsdatum: 2024-01-15 15:21:39 zuletzt geändert: 2024-01-15 15:21:39
Kopie: 0 Klicks: 628
1
konzentrieren Sie sich auf
1617
Anhänger

Quantitative Handelsstrategie mit doppelter Bestätigung

Überblick

Die Double Confirmation Quantity Trading Strategie reduziert das Trading-Risiko durch die Kombination der 123 Reversal Strategie und der beiden Substrategien des Prozentsatz der Transaktionsvolumen-Schock-Indikator (PVO). Sie ermöglicht die doppelte Bestätigung von Handelssignalen. Die Strategie ist hauptsächlich für den Handel mit mittleren und langen Positionen geeignet.

Strategieprinzip

123 Umkehrung

Die 123 Umkehrstrategie basiert auf einer K-Linienform des Zufallsindikators. Konkret handelt es sich um eine Übernahme, wenn der Schlusskurs 2 Tage in Folge unter dem Schlusskurs des Vortages liegt und der schnelle Zufallsindikator am 9. Tag unter 50 liegt; eine Ausnahme, wenn der Schlusskurs 2 Tage in Folge über dem Schlusskurs des Vortages liegt und der schnelle Zufallsindikator am 9. Tag über 50 liegt.

Prozentsatz der Transaktionsvolumen-Schwankungen (PVO)

PVO ist ein dynamischer Schwankungsindikator, der auf den Umsatz basiert. Er misst die Differenz zwischen den Moving Averages der Umsatzindizes zweier verschiedener Perioden und den Verhältnissen zwischen den längerperiodischen Durchschnittswerten in Prozent. Er ist positiv, wenn der kurzfristige Durchschnitt höher ist als der langfristige Durchschnitt, und negativ, wenn er höher ist.

Analyse der Stärken

Die Strategie kombiniert Preis- und Volumenindikatoren, um falsche Durchbrüche zu filtern. Durch die Doppelbestätigung kann die Handelsfrequenz reduziert und das Handelsrisiko verringert werden.

Risikoanalyse

Die Strategie ist auf eine längere Haltedauer angewiesen und birgt das Risiko eines Rückzugs. Darüber hinaus kann eine falsche Einstellung der Parameter zu einer zu hohen Handelsfrequenz oder zu fehlenden Signalen führen.

Optimierungsrichtung

Das Risiko kann durch die Anpassung der Parameter der Zufallsindikatoren und der PVO optimiert werden. Es kann auch ein Stop-Loss-Mechanismus eingeführt werden, um das Risiko zu kontrollieren. Zusätzlich kann die Strategie in Kombination mit anderen Indikatoren und Filtersignalen weiter verbessert werden.

Zusammenfassen

Die Doppelbestätigung der Quantifizierungsstrategie berücksichtigt sowohl die Preis- als auch die Transaktionsmenge. Die Rückmessung ist ideal. Die Strategie soll die Stabilität durch die Optimierung der Parameter und die Optimierung der Signalfilterung weiter verbessern und ein leistungsfähiges Instrument für den Quantifizierungshandel werden.

Strategiequellcode
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/04/2021
// 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 Percentage Volume Oscillator (PVO) is a momentum oscillator for volume. 
// PVO measures the difference between two volume-based moving averages as a 
// percentage of the larger moving average. As with MACD and the Percentage Price 
// Oscillator (PPO), it is shown with a signal line, a histogram and a centerline. 
// PVO is positive when the shorter volume EMA is above the longer volume EMA and 
// negative when the shorter volume EMA is below. This indicator can be used to define 
// the ups and downs for volume, which can then be use to confirm or refute other signals. 
// Typically, a breakout or support break is validated when PVO is rising or positive. 
//
// 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


PVO(LengthShortEMA,LengthLongEMA,LengthSignalEMA) =>
    pos = 0.0
    xShortEMA = ema(volume , LengthShortEMA)
    xLongEMA = ema(volume , LengthLongEMA)
    xPVO = ((xShortEMA - xLongEMA) / xLongEMA) * 100
    xSignalEMA = ema(xPVO , LengthSignalEMA)
    xPVOHisto = xPVO - xSignalEMA
    pos := iff(xSignalEMA < xPVO, -1,
    	      iff(xSignalEMA > xPVO, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Percentage Volume Oscillator (PVO)", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Percentage Volume OscillatorA ----")
LengthShortEMA = input(12, minval=1)
LengthLongEMA = input(26, minval=1)
LengthSignalEMA = input(9, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPVO = PVO(LengthShortEMA,LengthLongEMA,LengthSignalEMA)
pos = iff(posReversal123 == 1 and posPVO == 1 , 1,
	   iff(posReversal123 == -1 and posPVO == -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 )