
La stratégie utilise deux courbes EMA de différentes périodes pour déterminer un renversement de tendance par leur croisement, ce qui sert de signal d’entrée et de sortie. La stratégie est simple à comprendre et facile à utiliser.
La stratégie utilise la fonction ta.ema pour calculer deux moyennes EMA, l’une de 10 cycles et l’autre de 20 cycles, représentant les tendances à court terme et à long terme. Le code juge l’intersection des deux EMA par ta.crossover et ta.crossunder, faisant plus lorsque l’EMA à court terme traverse l’EMA à long terme et moins lorsque l’EMA à court terme traverse l’EMA à long terme.
La stratégie utilise également la variable lastCrossTime pour enregistrer le temps de la dernière croisade, afin d’éviter que les croisades répétées ne génèrent des transactions inutiles. Chaque fois qu’une croisade est efficace, il suffit d’effacer toutes les positions en cours, puis d’ouvrir la position dans la direction de la croisade.
Les stratégies sont simples, claires, faciles à comprendre et à utiliser.
L’utilisation de l’EMA pour juger de l’inversion de tendance est une stratégie d’indicateur technique couramment utilisée et efficace.
L’utilisation d’EMAs à différentes périodes permet d’améliorer la sensibilité aux variations à court terme tout en garantissant la capture des grandes tendances.
Le système de stop loss permet de contrôler les risques et les gains d’une transaction unique.
Les signaux répétitifs sont filtrés par la variable LastCrossTime pour éviter les transactions inutiles.
Les croisements EMA sont sujets à de faux signaux et présentent un certain risque d’erreur de jugement.
Les TP et SL fixes ont du mal à faire face aux changements du marché et devraient être réglés sur un stop-loss dynamique.
Les systèmes basés uniquement sur les croisements EMA sont sujets à des pertes en cas de choc.
L’impact des coûts de transaction n’est pas pris en compte, mais les coûts de transaction tels que les spreads doivent être pris en compte dans les opérations réelles.
Cette stratégie s’applique principalement aux tendances et peut être moins efficace dans les chocs.
Il est possible d’optimiser les pertes d’arrêt, d’ajouter des conditions de filtrage et de combiner d’autres indicateurs. Il faut un contrôle strict des risques pour éviter des pertes individuelles excessives.
Les paramètres d’optimisation de l’EMA peuvent être testés pour trouver une combinaison de cycles plus appropriée.
Ajouter des indicateurs auxiliaires comme le KDJ, le MACD et d’autres.
Définissez des arrêts de perte dynamiques, tels que des arrêts marginaux avec une tendance.
Il est également important d’augmenter le jugement sur le volume des transactions et d’envisager d’entrer en bourse si le nombre de transactions augmente.
Le jugement est effectué en combinaison avec d’autres formes graphiques, telles que la rupture d’un point de résistance important.
Prendre en compte l’impact sur les coûts de la plate-forme et définir un seuil de stop-loss raisonnable.
L’idée générale de la stratégie est simple et claire. Elle utilise la courbe de l’EMA pour juger de la reprise de la tendance en utilisant des arrêts de perte pour contrôler les gains de risque. La stratégie est facile à utiliser, mais il existe un certain risque d’erreur de jugement dans l’EMA.
/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('XXXquang', overlay=true)
// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)
takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)
ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)
var float lastCrossTime = na
if ta.crossover(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Buy Order', strategy.long, qty=lotSize)
strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
if ta.crossunder(ema1, ema2)
if na(lastCrossTime)
strategy.close_all()
strategy.entry('Sell Order', strategy.short, qty=lotSize)
strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
lastCrossTime := timenow
plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)