Le transfert de l'EMA vers une stratégie quantitative à long terme

Auteur:ChaoZhang est là., Date: 2024-02-20 15h22 et 12h
Les étiquettes:

img

Résumé

Cette stratégie utilise les modèles de croisement entre les moyennes mobiles (MA) de différents délais et l'indicateur RSI pour déterminer le moment des entrées et sorties sur le marché, visant à la détention à long terme.

La logique de la stratégie

Le mécanisme de base de cette stratégie consiste à identifier les points d'entrée et de sortie à travers la croix dorée et la croix de la mort des lignes EMA.

Plus précisément, la logique du signal d'achat vérifie les éléments suivants: les prix traversent l'EMA20 et dépassent l'EMA50, formant une croix dorée, ce qui permet d'identifier plus précisément l'inversion de tendance par rapport au système EMA unique.

Les critères d'achat ci-dessus sont configurés avec différents paramètres pour former 4 règles d'achat, correspondant à différentes périodes et quantités de l'EMA.

Pour les sorties, la stratégie vérifie la croix de mort au-dessus de l'EMA10, avec un signal de RSI suracheté; ou la croix de mort au-dessous de l'EMA10, avec un signal de RSI survendu.

Analyse des avantages

La plus grande force de cette stratégie réside dans son efficacité à identifier les points d'inversion de tendance avec des croisements de la EMA, permettant de suivre la tendance.

Un autre avantage est la mise en œuvre de la pyramide et de la baisse des coûts moyens. Un tel achat par tranche répartit les quantités à différents niveaux de prix, assurant un profit maximal lorsque la tendance reprend. Il diversifie également les risques loin d'une seule position d'entrée importante.

Analyse des risques

Les principaux risques associés à cette stratégie sont les suivants:

  1. La nature tardive du système EMA le rend lent à réagir à des changements soudains de prix, incapable de quitter les positions en temps opportun.

  2. L'absence de restrictions sur les délais d'entrée d'achat peut conduire à des entrées prématurées, se retrouvant pris dans des consolidations de marché.

  3. Les ordres d'achat pyramidaux peuvent entraîner des positions surdimensionnées, créant une vulnérabilité aux risques de rupture dans une direction.

Des possibilités d'amélioration

La stratégie peut être encore optimisée dans les domaines suivants:

  1. Incorporer des règles d'arrêt des pertes pour réduire les pertes lorsque les niveaux de soutien clés sont dépassés à la baisse, en contrôlant les risques à la baisse.

  2. Ajouter un module de validation des transactions pour vérifier la direction de la tendance principale, en entrant dans les transactions uniquement lorsque la tendance globale est à la hausse, évitant ainsi les risques de contre-tendance.

  3. Mettez des restrictions plus strictes sur les zones d'achat pour empêcher les entrées pyramidales prématurées avant les confirmations.

  4. Utiliser des algorithmes d'apprentissage automatique avec analyse multifactorielle pour améliorer la précision des entrées et les taux de victoire.

Conclusion

En résumé, cet article illustre en détail une stratégie quantitative à long terme utilisant le double croisement EMA et l'indicateur RSI pour les signaux d'entrée et de sortie, soutenue par la construction de positions de tranche pour maximiser l'efficacité. La logique et les paramètres peuvent être ajustés pour les indices et les actions sur les marchés, ce qui en fait une stratégie polyvalente pour suivre la tendance à long terme.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true)

// Input parameters
qt1 = input.int(1, title="Quantity 1", minval=1)
qt2 = input.int(2, title="Quantity 2", minval=1)
qt3 = input.int(3, title="Quantity 3", minval=1)
qt4 = input.int(4, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// RSI(14) condition
rsi_threshold = 65
rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold
rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold
rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=1, day=1)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)


Plus de