Stratégie des bougies fermées vers le haut vers le bas avec filtre EMA et délais de session

Auteur:ChaoZhang est là., Date: 2023-12-27 14h38 et 28h
Les étiquettes:

img

1. vue d'ensemble de la stratégie

Cette stratégie s'appelle Up versus Down Close Candles Strategy avec filtre EMA et Timeframes de session. Elle compte le nombre de bougies de close et de close dans une certaine période de rétrospective pour déterminer le sentiment du marché, combinée au filtre EMA et au trading dans des sessions spécifiques, pour identifier les signaux longs et courts.

2. La logique de la stratégie

La logique de base consiste à compter le nombre de bougies de rapprochement (upCloseCount) et de bougies de rapprochement (downCloseCount) au cours de la dernière période de rétrospective. Si upCloseCount est plus grand, cela indique un marché haussier. Si downCloseCount est plus grand, cela indique un marché baissier. L'indicateur EMA est utilisé comme filtre, ne prenant en compte que le long lorsque le prix > EMA, et le court lorsque le prix < EMA. Il définit également la session1 et la session2 comme sessions de négociation.

Une logique détaillée:

Le signal long est déclenché lorsque: inSession est true (dans les séances de négociation) et upCloseCount > downCloseCount (plus près des bougies) et close > ema (prix de clôture supérieur à l'EMA) et currentSignal n'est pas long (pas de position existante).

Le signal court est déclenché lorsque: inSession est true et downCloseCount > upCloseCount (plus bas les bougies de clôture) et close < ema (prix de clôture inférieur à EMA) et currentSignal n'est pas short (pas de position existante).

3. Analyse des avantages

  1. Capture le sentiment et la tendance du marché en comparant l'historique des bougies de clôture
  2. Utilisez le filtre EMA pour éviter de négocier sur des marchés variables
  3. Évitez le bruit pendant les heures de négociation non majeures en réglant les sessions
  4. Équilibre entre le suivi des tendances et la fréquence des transactions

4. Analyse des risques

  1. Peut être induit en erreur sur les marchés latéraux
  2. Un paramètre EMA incorrect peut entraîner un filtre inefficace
  3. Opportunités manquées si la session n'est pas réglée correctement
  4. Impossible de saisir le vide causé par les événements

Les solutions:

  1. Optimiser le paramètre EMA
  2. Optimiser les sessions de négociation
  3. Ajouter le stop loss basé sur l'ATR
  4. Identifier les événements, éviter les lacunes

5. Directions d'optimisation

  1. Optimiser les sessions de négociation
  2. Optimiser les paramètres de l'EMA
  3. Ajouter le stop loss basé sur ATR
  4. Identifier les événements, éviter les lacunes
  5. Combinaison avec d'autres indicateurs pour un meilleur filtre
  6. Tester et ajuster les différents produits

6. Résumé

Cette stratégie identifie les signaux de tendance en comparant les bougies fermées et en bas et en utilisant le filtre EMA, au sein des sessions de négociation prédéfinies.


/*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")


Plus de