Recursive Moving Trend Average kombiniert mit 123 Umkehrmusterstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-21 16:02:32
Tags:

img

Übersicht

Diese Strategie kombiniert den Recursive Moving Trend Average und das 123 Reversal Pattern zu einem zusammengesetzten Signal, um die Stabilität und Rentabilität zu verbessern.

Grundsätze

123 Umkehrmuster

Dieser Teil ist inspiriert vom Buch How I Triple My Money in the Futures Market von Ulf Jensen. Es kauft, wenn der Schlusskurs zwei aufeinanderfolgende Tage steigt und der 9-tägige STO SLOWK unter 50 liegt. Es verkauft, wenn der Schlusskurs zwei aufeinanderfolgende Tage fällt und der 9-tägige STO FASTK über 50 liegt.

Recursive gleitende Trenddurchschnitt

Diese Technik nennt sich recursive polynomial fitting. Sie verwendet die Preise der letzten Tage und den heutigen Preis, um den Preis von morgen vorherzusagen. Sie geht kurz, wenn der vorhergesagte Preis höher ist als der tatsächliche Preis von gestern, und geht sonst lang.

Vorteile

Die kombinierte Strategie nutzt die Stärken beider Strategien aus, um die Einschränkungen einer einzigen zu vermeiden. Das 123 Reversal Pattern kann wichtige Trends erfassen, wenn eine Preisumkehr stattfindet. Der Recursive Moving Trend Average kann die Kursbewegungsrichtung genauer beurteilen. Zusammen bilden sie stärkere zusammengesetzte Signale.

Risiken und Lösungen

  • Das 123 Reversal Pattern kann aufgrund von kurzfristigen Kursschwankungen falsche Signale erzeugen.
  • Der Recursive Moving Trend Average kann auf plötzliche Ereignisse langsam reagieren.
  • Die beiden Strategien können manchmal inkonsistente Signale geben. Eine Lösung besteht darin, Positionen nur zu eröffnen, wenn doppelte Signale auftauchen, oder nur einem Signal auf der Grundlage der Marktbedingungen zu folgen.

Anweisungen zur Verbesserung

  • Versuche verschiedene Kombinationen von Periodenparametern, um das optimale Paar zu finden.
  • Einführung von automatischen Stop-Loss-Mechanismen.
  • Anpassung der Parameter anhand verschiedener Produkte und Marktbedingungen.
  • Es sollte in Betracht gezogen werden, diese mit anderen Strategien oder Indikatoren zu kombinieren, um robustere Systeme zu bilden.

Schlussfolgerung

Diese Strategie kombiniert zwei verschiedene Arten von Strategien und erzeugt zusammengesetzte Signale, um die Stabilität zu verbessern. Sie nutzt beide ihre Vorteile, um Preisumkehrpunkte zu erfassen und zukünftige Preistrends zu beurteilen. Weitere Optimierungen können zu noch besseren Leistungen führen.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 01/06/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
// Taken from an article "The Yen Recused" in the December 1998 issue of TASC, 
// written by Dennis Meyers. He describes the Recursive MA in mathematical terms 
// as "recursive polynomial fit, a technique that uses a small number of past values 
// of the estimated price and today's price to predict tomorrows price."
// Red bars color - short position. Green is long.
//
// 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


RMTA(Length) =>
    pos = 0.0
    Bot = 0.0
    nRes = 0.0
    Alpha = 2 / (Length+1)
    Bot := (1-Alpha) * nz(Bot[1],close) + close
    nRes := (1-Alpha) * nz(nRes[1],close) + (Alpha*(close + Bot - nz(Bot[1], 0)))
    pos:= iff(nRes > close[1], -1,
    	     iff(nRes < close[1], 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Recursive Moving Trend Average", 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, "---- Recursive Moving Trend Average ----")
LengthRMTA = input(21, minval=3)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRMTA = RMTA(LengthRMTA)
pos = iff(posReversal123 == 1 and posRMTA == 1 , 1,
	   iff(posReversal123 == -1 and posRMTA == -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