
La stratégie est basée sur un modèle à double facteur. Elle intègre les deux facteurs de la rétrogradation de la forme 123 et de l’indice de croissance, ce qui permet d’obtenir l’effet d’addition du signal de la stratégie. La stratégie effectue une opération de plus ou de moins correspondante lorsque les deux facteurs émettent simultanément un signal d’achat ou de vente.
Ce facteur fonctionne en fonction de la forme 123 du prix. Si la relation de clôture des deux jours est basse-haute et que le Stoch est inférieur à 50, jugez que c’est un signal de revers inférieur, faites plus; si la relation de clôture des deux jours est basse-haute et que le Stoch est supérieur à 50, jugez que c’est un signal de revers supérieur, faites moins.
Ce facteur est basé sur l’augmentation ou la diminution de la gamme de fluctuation des prix pour juger de l’inversion de tendance. L’augmentation de la gamme de fluctuation augmente l’indice et la diminution de la gamme diminue l’indice.
Les signaux bidirectionnels permettent d’ouvrir des positions, de réaliser des gains stratégiques et d’éviter le risque de faux signaux causé par un seul facteur.
Le risque peut être réduit par l’élargissement des séries d’entraînement, l’arrêt strict des pertes et le filtrage combiné de plusieurs facteurs.
La stratégie combine deux facteurs de la forme des prix et de la volatilité des indicateurs, en ouvrant la position uniquement lorsque les deux facteurs émettent des signaux synchrones, évitant ainsi le risque de faux signaux apportés par un seul facteur, ce qui améliore la stabilité globale de la stratégie. Cependant, il existe également un risque que les deux facteurs de probabilité émettent simultanément des signaux erronés. Nous pouvons améliorer encore la performance de la stratégie et le taux de rendement ajusté au risque en élargissant les ensembles d’entraînement, les paramètres d’arrêt et l’optimisation de la combinaison des facteurs de pertes.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 22/02/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 Mass Index was designed to identify trend reversals by measuring
// the narrowing and widening of the range between the high and low prices.
// As this range widens, the Mass Index increases; as the range narrows
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey.
//
// 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
MASS(Length1,Length2,Trigger) =>
pos = 0.0
xPrice = high - low
xEMA = ema(xPrice, Length1)
xSmoothXAvg = ema(xEMA, Length1)
nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
pos := iff(nRes > Trigger, -1,
iff(nRes < Trigger, 1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & MASS Index", 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, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
iff(posReversal123 == -1 and posMASS == -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 )