
Cette stratégie utilise un mécanisme de suivi bidirectionnel, combiné à des signaux de retour de prix et à des indicateurs de volume de transaction, pour réaliser des transactions quantifiées et automatisées. Son plus grand avantage réside dans une maîtrise fiable des risques, afin de bloquer les bénéfices en suivant les arrêts et d’éviter l’expansion des pertes.
Cette stratégie est composée de deux sous-stratégies. La première sous-stratégie utilise des indicateurs aléatoires pour déterminer les signaux de retournement de prix. La logique est la suivante:
Si le cours de clôture est en hausse pendant deux jours consécutifs et que la ligne Slow K est inférieure à 50 le 9e jour, faites plus; si le cours de clôture est en baisse pendant deux jours consécutifs et que la ligne Fast K est supérieure à 50 le 9e jour, faites vide.
La deuxième sous-stratégie consiste à combiner l’indicateur de volume de transactions et la faiblesse du jugement. Plus précisément, il est de comparer le volume de transactions en cours avec la moyenne du volume de transactions sur 40 jours. Si le volume de transactions en cours est supérieur à la moyenne, considérez que le volume peut attaquer, appartient à un signal de retour, faire le vide; Si le volume de transactions en cours est inférieur à la moyenne, considérez que le volume peut baisser, appartient à un signal de retour, faire plus.
Le signal de transaction final est l’intersection des deux signaux de sous-stratégie susmentionnés. C’est-à-dire que la position est ouverte lorsque les deux stratégies émettent des signaux en même temps. Grâce à cette méthode de filtrage des cibles d’intersection, il est possible de filtrer une partie du bruit des transactions et d’améliorer la qualité du signal.
Les mesures d’optimisation peuvent être améliorées dans les domaines suivants:
Dans l’ensemble, cette stratégie utilise le suivi bidirectionnel et le renversement des prix comme principale logique de négociation, et est complétée par un jugement quantitatif, pour améliorer la qualité du signal grâce à la double confirmation. Dans la pratique, il reste encore besoin de tests et d’optimisations supplémentaires, en particulier pour prévenir les risques de stop-loss et de gestion des fonds, et pour empêcher le retrait de la faillite causée par la surcharge. Mais dans l’ensemble, cette stratégie utilise de nombreuses techniques de négociation quantitative.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 16/11/2020
// 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
// Volume and SMA
//
// 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
VSAVol(Length) =>
pos = 0.0
xSMA_vol = sma(volume, Length)
pos := iff(volume > xSMA_vol, -1,
iff(volume < xSMA_vol, 1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Volume SMA", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MAVol = input(40, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posVSAVol = VSAVol(Length_MAVol)
pos = iff(posReversal123 == 1 and posVSAVol == 1 , 1,
iff(posReversal123 == -1 and posVSAVol == -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 )