
Aperçu
La stratégie utilise le croisement de deux moyennes mobiles indicielles (EMA) comme signal d’achat et de vente. Lorsque l’EMA à courte période traverse la plus longue période de bas en haut, elle génère un signal d’achat; inversement, lorsque l’EMA à courte période traverse la plus longue période de haut en bas, elle génère un signal de vente. La stratégie détermine également si le croisement est le prix le plus élevé ou le prix le plus bas des 10 derniers cycles de négociation, afin de confirmer la force de la tendance.
Principe de stratégie
- Calculer deux EMA de différentes périodes, dont la périodicité par défaut est de 5 et de 10
- Pour déterminer si deux EMA se croisent, un signal d’achat est généré si l’EMA à court terme traverse l’EMA à long terme de bas en haut; un signal de vente est généré si l’EMA à court terme traverse l’EMA à long terme de haut en bas.
- Lors de la génération d’un signal de croisement, détermine si le point de croisement actuel est le prix le plus élevé ou le prix le plus bas des 10 derniers cycles de négociation. Si le prix le plus élevé est considéré comme ayant une forte tendance à la hausse; si le prix le plus bas est considéré comme ayant une forte tendance à la baisse.
- Si un signal d’achat est généré et qu’il n’y a pas de position en cours, un ordre supplémentaire est ouvert. Si un signal de vente est généré et qu’il n’y a pas de position en cours, un ordre vide est ouvert.
- Si plusieurs titres sont déjà détenus et que l’EMA à court terme traverse l’EMA à long terme de haut en bas, alors plusieurs titres sont à plat; si plusieurs titres sont déjà détenus et que l’EMA à court terme traverse l’EMA à long terme de bas en haut, alors les titres sont à plat.
Avantages stratégiques
- Les moyennes mobiles indicielles sont capables de réagir plus rapidement aux variations de prix que les moyennes mobiles simples, ce qui permet de générer des signaux de négociation plus opportuns.
- En déterminant si le point de jonction est le plus haut ou le plus bas prix le plus récent, il est possible d’identifier des opportunités de transactions plus fortes que la tendance et d’améliorer les gains stratégiques.
- Les prix des points de croisement sont indiqués sur le graphique, ce qui permet aux traders de faire des transactions plus intuitives.
- La logique du code est claire, facile à comprendre et à mettre en œuvre.
Risque stratégique
- Les signaux générés par les croisements EMA peuvent être retardés, ce qui entraîne un manque d’optimisation des échanges.
- Dans les marchés en turbulence, les croisements EMA peuvent se produire fréquemment, entraînant un nombre excessif de transactions et augmentant les coûts de transaction.
- La stratégie manque de mesures de freinage et peut présenter un risque de retrait plus élevé si elle est mal jugée.
Orientation de l’optimisation de la stratégie
- L’introduction de plus d’indicateurs techniques, tels que le RSI, le MACD, etc., pour aider à déterminer la force et la direction des tendances, améliore l’exactitude du signal.
- Il est nécessaire de définir des limites de stop-loss et de stop-loss raisonnables pour maîtriser le risque de transaction unique.
- Optimisation des paramètres de négociation tels que les cycles EMA, les fenêtres de confirmation croisée, etc. pour améliorer l’adaptabilité de la stratégie.
- Le filtrage des signaux de négociation, combiné à des indicateurs de l’humeur du marché tels que VIX, réduit les signaux erronés.
- Envisagez d’ajouter des modules de gestion des positions et de gestion des fonds, d’ajuster dynamiquement le montant de fonds à chaque transaction et d’améliorer l’efficacité de l’utilisation des fonds.
Résumer
La stratégie utilise la croisée des moyennes mobiles indicielles comme logique centrale, tout en associant la position relative des prix à la croisée dans le temps récent, pour juger de la force de la tendance. Dans l’ensemble, la logique de la stratégie est claire, les avantages sont évidents, mais il existe également certaines limites et risques.
Code source de la stratégie
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading
// @version=5
strategy("ema giao nhau", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Get user input
emaLength1 = input.int(title="EMA #1 Length", defval=5)
emaLength2 = input.int(title="EMA #2 Length", defval=10)
// Get MAs
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)
// Draw MAs
plot(ema1, color=color.blue, title="EMA 1")
plot(ema2, color=color.red, title="EMA 2")
// Detect crossovers
bool crossOver = ta.crossover(ema1, ema2)
bool crossUnder = ta.crossunder(ema1, ema2)
bool cross = crossOver or crossUnder
//float crossPrice = ta.valuewhen(cross, close, 0)
float crossPrice = cross ? close : na
// Check if the crossover price is the highest price over the past 10 bars
bool highestPrice = crossOver
for i = 1 to 10
if crossPrice <= close[i]
highestPrice := false
break
// Check if the crossover price is the lowest price over the past 10 bars
bool lowestPrice = crossUnder
for i = 1 to 10
if crossPrice >= close[i]
lowestPrice := false
break
// Flag the bar if it is a high/low close
bgcolor(highestPrice ? color.new(color.green, 50) : na)
bgcolor(lowestPrice ? color.new(color.red, 50) : na)
// Display crossover price
if cross
highestEmaPrice = ema1 > ema2 ? ema1 : ema2
label myLabel = label.new(bar_index, highestEmaPrice, "CrossPrice=" + str.tostring(crossPrice), color=color.white)
if highestPrice and strategy.position_size == 0
strategy.entry(id="Buy", direction=strategy.long)
if lowestPrice and strategy.position_size == 0
strategy.entry(id="Sell", direction=strategy.short)
// Exit trades when short-term EMA is breached
if strategy.position_size > 0 and crossUnder
strategy.close("Buy")
if strategy.position_size < 0 and crossOver
strategy.close("Sell")