
Cette stratégie combine les deux stratégies de la courbe de tendance récurrente et de l’inversion de la forme 123 pour former un signal global afin d’améliorer la stabilité et la rentabilité de la stratégie.
Cette section s’inspire du livre de Ulf Jensen Comment je gagne le triple des gains sur le marché à terme. Son signal d’achat est le suivant: les prix de clôture ont augmenté ces deux derniers jours et la valeur STO SLOWK du cycle de 9 jours a augmenté en dessous de 50, et le signal de vente est le suivant: les prix de clôture ont diminué ces deux derniers jours et la valeur STO FASTK du cycle de 9 jours a diminué en dessous de 50, et la valeur STO FASTK a diminué en dessous de 50.
Cette section utilise une technique appelée couche récurrente d’appariement de multiples. L’idée est d’utiliser les prix des jours précédents et les prix du jour pour prédire le prix du lendemain. Regardez à la baisse lorsque le prix prévu est supérieur au prix réel d’hier, mais regardez à la hausse.
Cette combinaison permet de tirer parti des avantages des deux stratégies et d’éviter les limites d’une seule stratégie. Les inversions de forme 123 permettent de capturer une situation plus importante lorsque le prix se retourne. Les courbes de tendance mobiles récurrentes permettent de déterminer plus précisément la direction des prix.
Cette stratégie utilise deux types de stratégies différentes pour améliorer la stabilité en générant des signaux intégrés. En combinant les avantages des deux, il est possible de capturer les points de retournement des prix et de déterminer la direction future des prix.
/*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 )