
Cette stratégie utilise d’abord la moyenne mobile de 9 jours et ses hauts et ses bas pour construire un cadre de rupture de base, puis utilise la direction des opportunités de jugement de forme 123, puis introduit des signaux de filtrage d’indicateurs aléatoires, ce qui aboutit à des règles d’entrée plus strictes. Cette méthode de filtrage combinée peut réduire efficacement la fréquence des transactions tout en garantissant la qualité du signal.
La stratégie de rupture de prix à double linéaire et inverse est constituée d’une combinaison de deux sous-stratégies.
La première sous-stratégie est le jugement de la forme 123. Cette stratégie utilise les relations de prix de clôture des deux jours précédents pour juger de la direction possible de la future rupture des prix. Si le prix de clôture d’aujourd’hui est supérieur au prix de clôture de la veille et si le prix de clôture de la veille est inférieur au prix de clôture des deux jours précédents, il est considéré comme un signal d’achat; si le prix de clôture d’aujourd’hui est inférieur au prix de clôture de la veille et si le prix de clôture de la veille est supérieur au prix de clôture des deux jours précédents, il est considéré comme un signal de vente.
La deuxième sous-stratégie est la rupture du canal de la moyenne déplacée. Cette stratégie calcule d’abord la moyenne mobile indicielle d’une période donnée (comme 9 jours), puis ajoute un certain pourcentage au-dessus et au-dessous de celle-ci en tant que canal ascendant et descendant. Si le prix monte en haut de la trajectoire, un signal de vente est généré.
En fin de compte, seul un signal réel orienté vers la transaction réelle est finalement généré lorsque les deux sous-stratégies sont alignées dans la direction du signal, à savoir le signal de retournement de forme 123 et le signal de rupture de canal. Ce double mécanisme de filtrage permet de filtrer un grand nombre de faux signaux, réduisant la fréquence des transactions tout en garantissant une plus grande fiabilité de chaque transaction.
Les stratégies de rupture de prix à double équilibre et inversion combinent plusieurs méthodes d’analyse et présentent les avantages suivants:
Le système de filtrage à double signal permet de réduire efficacement les signaux invalides et de rendre chaque transaction de meilleure qualité.
Le jugement de forme 123 appartient à la stratégie d’inversion à court terme, la rupture du canal de décalage appartient à la stratégie de suivi de la tendance de la ligne moyenne et longue, l’utilisation combinée peut réaliser une combinaison de courte et longue ligne et un meilleur effet de gain.
La fréquence du signal peut être librement contrôlée en ajustant l’amplitude de la voie ascendante et descendante pour s’adapter aux différentes préférences de transaction.
En utilisant la moyenne quotidienne de 9 jours comme axe central du canal, le choix des paramètres est plus raisonnable et les signaux sont moins fréquents.
En appliquant le jugement sur les zones de sur-achat et de sur-vente d’indicateurs aléatoires, on peut éviter d’être pris dans une situation de choc.
Les stratégies de rupture de prix à double équilibre et inversion présentent également des risques, principalement concentrés sur les aspects suivants:
Les mécanismes de double filtrage des signaux passent à côté de certaines opportunités que les stratégies unilatérales peuvent saisir, et il existe un certain risque de fuite.
Les points de vente 123 ne peuvent pas filtrer complètement toutes les fausses percées, ce qui peut entraîner des pertes si elles sont mal utilisées.
Si la situation change radicalement, un mauvais réglage de la position de stop-loss peut entraîner des pertes plus importantes.
La logique conditionnelle ifft est complexe, les paramètres inappropriés sont susceptibles de générer des erreurs logiques, ce qui entraîne une mauvaise évaluation du signal.
Les données extra-échantillon peuvent affecter la stabilité des paramètres et nécessitent une optimisation dynamique des paramètres.
Il y a encore de la place pour optimiser la stratégie de rupture de prix de la double ligne de parité et de l’inversion:
Il est possible de tester différents types de ligne moyenne et de choisir une combinaison de paramètres qui génère une qualité de signal supérieure et plus stable.
La bande passante correspondante peut être sélectionnée en fonction des caractéristiques de données de la variété.
Le stop-loss peut être combiné pour contrôler le pourcentage de perte maximale.
Les paramètres d’optimisation dynamique des modèles d’apprentissage automatique peuvent être introduits pour rendre les stratégies plus robustes.
Des filtres de volume ou de volatilité peuvent être ajoutés pour éviter une entrée trop fréquente en cas de choc.
La stratégie de rupture de prix à double équilibre et inversion, qui a été utilisée avec succès pour combiner les inversions à court terme avec le suivi des tendances à longue et moyenne ligne, a permis de créer un système de négociation efficace, capable de filtrer efficacement les signaux inefficaces, de sélectionner des opportunités d’entrée de qualité et d’avoir un espace de personnalisation plus large. En tant que cadre général, la stratégie a un grand potentiel d’utilisation avec l’ajustement des paramètres et l’optimisation de l’apprentissage automatique.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 18/03/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
// Moving Average Displaced Envelope. These envelopes are calculated
// by multiplying percentage factors with their displaced expotential
// moving average (EMA) core.
// How To Trade Using:
// Adjust the envelopes percentage factors to control the quantity and
// quality of the signals. If a previous high goes above the envelope
// a sell signal is generated. Conversely, if the previous low goes below
// the envelope a buy signal is given.
//
// 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
MADE(Price,Period, perAb, perBl, disp) =>
pos = 0.0
sEMA = ema(Price, Period)
top = sEMA[disp] * ((100 + perAb)/100)
bott = sEMA[disp]* ((100 - perBl)/100)
pos := iff(close < bott , 1,
iff(close > top, -1, pos[1]))
pos
strategy(title="Combo Backtest 123 Reversal & MA Displaced Envelope", 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, "---- MA Displaced Envelope ----")
Price = input(title="Source", type=input.source, defval=close)
Period =input(defval=9, minval=1)
perAb = input(title = "Percent above", defval=.5, minval=0.01, step = 0.1)
perBl = input(title = "Percent below", defval=.5, minval=0.01, step = 0.1)
disp = input(title = "Displacement", defval=13, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMADE = MADE(Price,Period, perAb, perBl, disp)
pos = iff(posReversal123 == 1 and posMADE == 1 , 1,
iff(posReversal123 == -1 and posMADE == -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 )