
Die Multi-Faktor-Modell-Dynamik-Umkehr-Strategie ermöglicht eine stabilere und höhere Rendite durch die Kombination von Multi-Faktor-Modell und Dynamik-Umkehr-Strategie. Die Strategie verwendet 123 Umkehr- und Resonanz-Indikatoren als zwei unabhängige Signale und eröffnet Positionen, wenn die beiden Signale übereinstimmen.
Die Dynamik-Umkehr-Strategie des Multifaktormodells besteht aus zwei Unterstrategien: der Umkehr-Strategie 123 und der Resonanzindikator-Strategie.
Die 123 Umkehrstrategie basiert auf einem Anstieg oder Fall der Preise in 2 aufeinanderfolgenden Tagen und kombiniert mit dem STOCH-Indikator, um zu entscheiden, ob der Markt zu kalt oder zu heiß ist, um ein Handelssignal zu erzeugen. Insbesondere, wenn die Preise in 2 aufeinanderfolgenden Tagen steigen und die STOCH-Schnelllinie am 9. Tag unter 50 liegt, ist es eine Übersicht; wenn die Preise in 2 aufeinanderfolgenden Tagen fallen und die STOCH-Schnelllinie am 9. Tag über 50 liegt, ist es eine Übersicht.
Die Synchronisation-Strategie verwendet die Überschneidung verschiedener periodischer Mittellinien und Schwingungsindikatoren, um die Richtung und Stärke des Trends zu bestimmen. Sie umfasst lineare Gewichtszunahme, Synchronisierung und andere Methoden, um die Mehrraumlage zu beurteilen. Der Indikator wird nach einer Rangfolge unterteilt und kehrt 1 bis 9 als starkes Mehrwert zurück, 1 bis 9 als starkes Mehrwert.
Schließlich wird die Strategie ausgewählt, ob die Positionen mit mehreren oder mit leeren Köpfen aufgestellt werden sollen, wenn beide Signale übereinstimmen.
Die Dynamikumkehrstrategie des Multifaktormodells kombiniert die Umkehrfaktoren mit den Dynamikfaktoren, um die Umkehrchancen in gleichzeitiger Reihenfolge zu erfassen und falsche Durchbrüche zu vermeiden, wodurch eine höhere Gewinnrate erzielt wird. Die Vorteile der Strategie bestehen aus:
123 Umkehrstrategie als Umkehrsignalquelle, die kurzfristige Umkehrungen mit zusätzlichen Erträgen erfasst.
Die Synchronisierungskennzahlen beurteilen die Richtung und Stärke des Trends und vermeiden die Gefahr von Verlusten, die durch einen zu großen Umkehrraum verursacht werden.
Die Kombination von beiden ergänzt die Vorteile und die Mängel und verbessert die Signalqualität.
Eine Kombination aus mehreren Faktoren kann die Strategie-Stabilität im Vergleich zu einem einzigen Modell verbessern.
Obwohl die Dynamikumkehrstrategie des Multifaktormodells einige Vorteile hat, gibt es folgende Risiken:
Die Verluste, die durch die Rückführung des Kurses entstehen, können entsprechend an die Stop-Loss-Vorbeugung angepasst werden.
Wenn die beiden Signale nicht übereinstimmen, kann die Richtung nicht bestimmt werden. Die Parameter können durch Anpassung der Parameter verbessert werden.
Die Modelle sind zu komplex, mit vielen Parametern, und es ist nicht leicht, sie anzupassen und zu optimieren.
Dabei ist es schwierig und psychologisch belastend, mehrere Submodelle gleichzeitig zu betreiben. Es können bestimmte Elemente des automatischen Handels eingeführt werden, um die Betriebslast zu verringern.
Die Dynamik-Umkehr-Strategie des Multifaktormodells kann in folgenden Bereichen optimiert werden:
Anpassung der Parameter der 123 Umkehrstrategie, um die Umkehrsignale genauer und zuverlässiger zu machen.
Anpassung der Parameter des Resonanzindikators, damit die beurteilte Tendenz näher an die tatsächliche Tendenz kommt.
Einführung eines automatisch optimierbaren Parameterpakets für Machine Learning-Algorithmen.
Ein weiteres Modul zur Positionsverwaltung wurde hinzugefügt, um die Positionsanpassung zu quantifizieren und zu systematisieren.
Ein zusätzliches Stop-Loss-Modul. Durch die vorherige Einstellung des Stop-Loss-Preises wird der Einzelschaden wirksam kontrolliert.
Die Multi-Faktor-Modell-Dynamik-Umkehr-Strategie kombiniert die Umkehr-Faktor und Dynamik-Faktor, auf der Grundlage der Gewährleistung einer höheren Signalqualität, durch Multi-Faktor-Überschlagung eine höhere Siegertrag. Die Strategie hat die doppelte Vorteile der Erfassung Umkehr-Chancen, Schritt für Schritt, ist eine hocheffiziente stabilisierte quantitative Strategie.
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 11/11/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
// This is modified version of Dale Legan's "Confluence" indicator written by Gary Fritz.
// ================================================================
// Here is Gary`s commentary:
// Since the Confluence indicator returned several "states" (bull, bear, grey, and zero),
// he modified the return value a bit:
// -9 to -1 = Bearish
// -0.9 to 0.9 = "grey" (and zero)
// 1 to 9 = Bullish
// The "grey" range corresponds to the "grey" values plotted by Dale's indicator, but
// they're divided by 10.
//
// 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
Confluence(Harmonic, BuyBand, SellBand) =>
pos = 0.0
Price = close
STL = round((Harmonic * 2) - 1 - 0.5)
ITL = round((STL * 2) - 1 - 0.5)
LTL = round((ITL * 2) - 1 - 0.5)
HOFF = round(Harmonic / 2 - 0.5)
SOFF = round(STL / 2 - 0.5)
IOFF = round(ITL / 2 - 0.5)
xHavg = sma(Price, Harmonic)
xSavg = sma(Price, STL)
xIavg = sma(Price, ITL)
xLavg = sma(Price, LTL)
xvalue2 = xSavg - xHavg[HOFF]
xvalue3 = xIavg - xSavg[SOFF]
xvalue12 = xLavg - xIavg[IOFF]
xmomsig = xvalue2 + xvalue3 + xvalue12
xLavgOHLC = sma(ohlc4, LTL - 1)
xH2 = sma(Price, Harmonic - 1)
xS2 = sma(Price, STL - 1)
xI2 = sma(Price, ITL - 1)
xL2 = sma(Price, LTL - 1)
DerivH = (xHavg * 2) - xHavg[1]
DerivS = (xSavg * 2) - xSavg[1]
DerivI = (xIavg * 2) - xIavg[1]
DerivL = (xLavg * 2) - xLavg[1]
SumDH = Harmonic * DerivH
SumDS = STL * DerivS
SumDI = ITL * DerivI
SumDL = LTL * DerivL
LengH = Harmonic - 1
LengS = STL - 1
LengI = ITL - 1
LengL = LTL - 1
N1H = xH2 * LengH
N1S = xS2 * LengS
N1I = xI2 * LengI
N1L = xL2 * LengL
DRH = SumDH - N1H
DRS = SumDS - N1S
DRI = SumDI - N1I
DRL = SumDL - N1L
SumH = xH2 * (Harmonic - 1)
SumS = xS2 * (STL - 1)
SumI = xI2 * (ITL - 1)
SumL = xLavgOHLC * (LTL - 1)
xvalue5 = (SumH + DRH) / Harmonic
xvalue6 = (SumS + DRS) / STL
xvalue7 = (SumI + DRI) / ITL
xvalue13 = (SumL + DRL) / LTL
value9 = xvalue6 - xvalue5[HOFF]
value10 = xvalue7 - xvalue6[SOFF]
value14 = xvalue13 - xvalue7[IOFF]
xmom = value9 + value10 + value14
HT = sin(xvalue5 * 2 * 3.14 / 360) + cos(xvalue5 * 2 * 3.14 / 360)
HTA = sin(xHavg * 2 * 3.14 / 360) + cos(xHavg * 2 * 3.14 / 360)
ST = sin(xvalue6 * 2 * 3.14 / 360) + cos(xvalue6 * 2 * 3.14 / 360)
STA = sin(xSavg * 2 * 3.14 / 360) + cos(xSavg * 2 * 3.14 / 360)
IT = sin(xvalue7 * 2 * 3.14 / 360) + cos(xvalue7 * 2 * 3.14 / 360)
ITA = sin(xIavg * 2 * 3.14 / 360) + cos(xIavg * 2 * 3.14 / 360)
xSum = HT + ST + IT
xErr = HTA + STA + ITA
Condition2 = (((xSum > xSum[SOFF]) and (xHavg < xHavg[SOFF])) or ((xSum < xSum[SOFF]) and (xHavg > xHavg[SOFF])))
Phase = iff(Condition2 , -1 , 1)
xErrSum = (xSum - xErr) * Phase
xErrSig = sma(xErrSum, SOFF)
xvalue70 = xvalue5 - xvalue13
xvalue71 = sma(xvalue70, Harmonic)
ErrNum = iff (xErrSum > 0 and xErrSum < xErrSum[1] and xErrSum < xErrSig, 1,
iff (xErrSum > 0 and xErrSum < xErrSum[1] and xErrSum > xErrSig, 2,
iff (xErrSum > 0 and xErrSum > xErrSum[1] and xErrSum < xErrSig, 2,
iff (xErrSum > 0 and xErrSum > xErrSum[1] and xErrSum > xErrSig, 3,
iff (xErrSum < 0 and xErrSum > xErrSum[1] and xErrSum > xErrSig, -1,
iff (xErrSum < 0 and xErrSum < xErrSum[1] and xErrSum > xErrSig, -2,
iff (xErrSum < 0 and xErrSum > xErrSum[1] and xErrSum < xErrSig, -2,
iff (xErrSum < 0 and xErrSum < xErrSum[1] and xErrSum < xErrSig, -3, 0))))))))
momNum = iff (xmom > 0 and xmom < xmom[1] and xmom < xmomsig , 1,
iff (xmom > 0 and xmom < xmom[1] and xmom > xmomsig, 2,
iff (xmom > 0 and xmom > xmom[1] and xmom < xmomsig, 2,
iff (xmom > 0 and xmom > xmom[1] and xmom > xmomsig, 3,
iff (xmom < 0 and xmom > xmom[1] and xmom > xmomsig, -1,
iff (xmom < 0 and xmom < xmom[1] and xmom > xmomsig, -2,
iff (xmom < 0 and xmom > xmom[1] and xmom < xmomsig, -2,
iff (xmom < 0 and xmom < xmom[1] and xmom < xmomsig, -3, 0))))))))
TCNum = iff (xvalue70 > 0 and xvalue70 < xvalue70[1] and xvalue70 < xvalue71, 1,
iff (xvalue70 > 0 and xvalue70 < xvalue70[1] and xvalue70 > xvalue71, 2,
iff (xvalue70 > 0 and xvalue70 > xvalue70[1] and xvalue70 < xvalue71, 2,
iff (xvalue70 > 0 and xvalue70 > xvalue70[1] and xvalue70 > xvalue71, 3,
iff (xvalue70 < 0 and xvalue70 > xvalue70[1] and xvalue70 > xvalue71, -1,
iff (xvalue70 < 0 and xvalue70 < xvalue70[1] and xvalue70 > xvalue71, -2,
iff (xvalue70 < 0 and xvalue70 > xvalue70[1] and xvalue70 < xvalue71, -2,
iff (xvalue70 < 0 and xvalue70 < xvalue70[1] and xvalue70 < xvalue71, -3,0))))))))
value42 = ErrNum + momNum + TCNum
Confluence = iff (value42 > 0 and xvalue70 > 0, value42,
iff (value42 < 0 and xvalue70 < 0, value42,
iff ((value42 > 0 and xvalue70 < 0) or (value42 < 0 and xvalue70 > 0), value42 / 10, 0)))
Res1 = iff (Confluence >= 1, Confluence, 0)
Res2 = iff (Confluence <= -1, Confluence, 0)
Res3 = iff (Confluence == 0, 0, iff (Confluence > -1 and Confluence < 1, 10 * Confluence, 0))
pos := iff(Res2 >= SellBand and Res2 != 0, -1,
iff(Res1 <= BuyBand and Res1 != 0, 1,
iff(Res3 != 0, 2, nz(pos[1], 0))))
pos
strategy(title="Combo Backtest 123 Reversal & Confluence", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Harmonic = input(10, minval=1)
BuyBand = input(9)
SellBand = input(-9)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posConfluence = Confluence(Harmonic, BuyBand, SellBand)
pos = iff(posReversal123 == 1 and posConfluence == 1 , 1,
iff(posReversal123 == -1 and posConfluence == -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 )