
La stratégie de la ligne courte croisée à la bi-mesure est une stratégie de négociation de courte ligne simple et efficace. Elle utilise le signal de croisement du prix avec la moyenne mobile comme signal d’achat et de vente pour capturer les fluctuations tendancielles du prix dans la ligne courte.
Les stratégies de croisement bi-homogène utilisent des moyennes mobiles de deux périodes différentes, une MA plus courte et une MA plus longue. Elles génèrent un signal d’achat lorsque la MA courte franchit la MA longue de bas en haut et un signal de vente lorsque la MA courte franchit la MA longue de haut en bas.
La stratégie définit d’abord la longueur de la variable length spécifiant que la longueur de la période MA est de 50, puis définit le prix comme le prix de clôture, calcule la longueur de la ligne de la longueur de la longueur MA, et la conserve dans la variable ma. Puis définit bcond pour déterminer si le prix est supérieur à la valeur de ma, si c’est le cas, bcount plus 1, sinon retour à zéro. Si bcond déclenche continuellement le nombre de confirmBars ((par défaut 2), un signal d’achat est généré.
Pour filtrer une partie des signaux invalides, la stratégie ajoute trois conditions de filtrage clc, clc0 et clc1. Ces trois conditions déterminent la relation entre la taille du prix de clôture de la période actuelle et celle de la période précédente, ainsi que la taille de la relation entre la taille du prix de clôture de la période actuelle et celle de l’ouverture, si elles sont satisfaites en même temps, la génération de signaux est autorisée.
Enfin, lorsque le prix revient à la hausse ou à la baisse, il est nécessaire d’effacer les positions en surpoids ou en vacance correspondantes.
Pour réduire le risque, il est possible d’envisager d’ajuster le paramètre de la moyenne en fonction de la dynamique de la volatilité du marché. Il est également possible d’utiliser un stop loss dérivé ou un stop loss en pourcentage, permettant ainsi un ajustement flexible du point de stop loss.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimiser les paramètres du système de ligne moyenne, par exemple en ajustant la longueur de la ligne moyenne en fonction de la dynamique des indicateurs tels que la volatilité du marché.
Ajouter des conditions de filtrage supplémentaires, telles que des surtensions de trafic, pour améliorer la qualité du signal.
Optimiser les stratégies d’arrêt de perte, en utilisant des méthodes telles que l’arrêt flottant ou l’arrêt en pourcentage, afin de réduire la probabilité d’un arrêt prématuré.
La validation multifonctionnelle, combinée à d’autres indicateurs tels que le MACD, le RSI, etc., améliore l’efficacité du signal.
Ajout de stratégies de gestion automatique des risques, telles que l’ajustement dynamique de la taille de la position et le contrôle des pertes individuelles.
L’ajout d’une méthode d’apprentissage automatique pour les signaux d’achat et de vente a permis d’établir des modèles de jugement plus précis.
L’ensemble de la stratégie de la ligne courte à double équilibre est une stratégie de négociation de ligne courte très pratique, avec des avantages tels que la simplicité d’exploitation et la facilité de mise en œuvre. Cependant, il faut veiller à contrôler les faux signaux des marchés oscillante et à effectuer des améliorations telles que l’optimisation des paramètres dynamiques pour tirer le meilleur parti de la stratégie.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("MovingAvg Cross", overlay=true)
length = input(50)
confirmBars = input(2)
price = close
ma = sma(price, length)
bcond = price > ma
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
clc=close[0]>close[1]
clc0=close[0]>open[0]
clc1=close[1]>open[1]
if clc and clc0 and clc1 and (bcount == confirmBars)
strategy.entry("buy", strategy.long)
scond = price < ma
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
csc=close[0]<close[1]
csc0=close[0]<open[0]
csc1=close[1]<open[1]
if csc and csc0 and csc1 and (scount == confirmBars)
strategy.entry("sell", strategy.short)
strategy.close("buy", when=scond)
strategy.close("sell",when=bcond)
plot(ma, color=color.red)
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)