Stratégie de trading quantitative basée sur la comparaison long-short du prix de clôture de la ligne K et le filtrage EMA


Date de création: 2023-12-27 14:38:28 Dernière modification: 2023-12-27 14:38:28
Copier: 1 Nombre de clics: 755
1
Suivre
1623
Abonnés

Stratégie de trading quantitative basée sur la comparaison long-short du prix de clôture de la ligne K et le filtrage EMA

Une vue d’ensemble de la stratégie

Cette stratégie est appelée stratégie de trading quantifiée basée sur la comparaison de la marge de manœuvre de clôture de la ligne K avec le filtre EMA. Cette stratégie consiste à calculer le nombre de lignes K à tête multiple et de lignes K à tête vide constituées par la marge de manœuvre de la ligne K au cours d’une période donnée, en combinaison avec le filtre EMA, afin de juger si le signal de manœuvre de clôture de la ligne K correspond à la période de négociation.

2. Principes de la stratégie

La logique centrale de la stratégie est de calculer le nombre de lignes K à la hausse et à la baisse de la clôture au cours du dernier cycle de lookback. Si le nombre de lignes K à la hausse et à la clôture est plus élevé, il est jugé comme un marché à plusieurs niveaux. Si le nombre de lignes K à la baisse est plus élevé, il est jugé comme un marché à vide.

La logique du jugement est la suivante:

Conditions de déclenchement du signal multiple: inSession est “true” (pendant la période de négociation) et upCloseCount > downCloseCount (plus de lignes K de clôture à la hausse) et close > ema (prix de clôture supérieur à l’EMA) et currentSignal n’est pas “long” (aucune position en cours)

Conditions de déclenchement du signal de tête vide: inSession est vrai et downCloseCount > upCloseCount (plus de lignes K de clôture en baisse) et close < ema (prix de clôture inférieur à l’EMA) et currentSignal n’est pas “short” (aucune position en cours)

Troisièmement, analyser les forces stratégiques

  1. Il est possible de juger de la tendance des prix et de la psychologie du marché en comparant les prix de clôture de la ligne K sur une période historique donnée, avec un certain effet de suivi de tendance.
  2. Filtrez les tendances des prix avec l’indicateur EMA afin d’éviter les erreurs de trading dans des conditions de choc
  3. Configurer des périodes de négociation spécifiques pour éviter de négocier dans un contexte bruyant à des périodes non traditionnelles
  4. Un équilibre entre tendance et fréquence des transactions

Quatrièmement, analyse stratégique des risques

  1. Dans une situation de liquidation horizontale, les cours de clôture plus ouverts sont plus susceptibles d’être induits en erreur, entraînant des pertes inutiles.
  2. Une mauvaise configuration des paramètres EMA peut également entraîner une mauvaise filtration
  3. Une mauvaise configuration de la période de négociation peut entraîner la perte de nombreuses opportunités de négociation ou des transactions erronées.
  4. Les événements causés par Gap ne sont pas suivis de manière efficace.

La réponse:

  1. Optimiser les paramètres EMA pour trouver le meilleur équilibre
  2. Optimiser la période de transaction
  3. Contrôle des pertes individuelles combiné à une stratégie de stop-loss

Cinquièmement, améliorer la stratégie

  1. Optimiser les périodes de négociation pour trouver les meilleures
  2. Optimisation des paramètres pour les cycles EMA et la fluidité
  3. Ajout d’un mécanisme de stop-loss basé sur l’ATR
  4. Ajout d’un module de détection des événements imprévus pour éviter le risque de rupture
  5. Considérer la combinaison avec d’autres indicateurs pour mieux filtrer les conditions d’entrée
  6. Tester les différences de performance entre les différentes variétés et ajuster les paramètres en fonction des différences

VI. Conclusion

Cette stratégie permet d’identifier les signaux de tendance au cours d’une période de négociation donnée en calculant le nombre de lignes K de clôture de la ligne K et de lignes K vides au cours d’une période historique donnée, en combinant l’effet de filtrage de l’indicateur EMA. Elle a un certain effet de suivi de la tendance. Cependant, il existe un certain risque d’erreur de négociation.

Code source de la stratégie
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")