Cette stratégie utilise principalement le croisement de l'indicateur Stoch dans la zone d'excédent d'achat comme signal d'entrée, mais elle est associée à l'indicateur EMA pour déterminer la direction de la tendance actuelle.
La stratégie se compose principalement de trois parties:
En utilisant deux paramètres différents de l'EMA rapide et lent, l'EMA rapide est jugée comme tendance haussière lorsque l'EMA rapide est au-dessus de l'EMA lent et comme tendance baissière lorsque l'EMA rapide est au-dessous de l'EMA lent.
L'indicateur Stoch est composé de la ligne%K et de la ligne%D, qui émet un signal d'achat lorsque la ligne%K se croise avec l'or au-dessus de la zone d'achat, et un signal de vente lorsque la ligne%K se croise avec la ligne%D au-dessous de la zone d'achat. Cette stratégie n'émet un signal de transaction que lorsque l'indicateur Stoch se croise dans la zone d'achat.
La stratégie met en place à la fois un mécanisme de stop-loss et de stop-loss. Lorsqu'on détient plusieurs positions, on arrête le solde si le prix tombe en dessous du niveau de stop-loss; si le prix dépasse le niveau de stop-loss, on arrête le solde en dessous du niveau de stop-loss.
Dans l'ensemble, cette stratégie est typique de la stratégie de négociation quantitative, qui utilise une combinaison d'indicateurs pour déterminer la direction de la tendance et les signaux de négociation, accompagnée de règles strictes de gestion des risques, afin de réduire efficacement le risque de négociation.
La stratégie présente les avantages suivants:
Utilisez l'EMA pour déterminer les tendances des niveaux primaires afin d'éviter d'être pris dans un marché incertain.
La particularité de l'indicateur Stoch est qu'il reflète bien si l'on se trouve actuellement dans une zone d'achat ou d'achat excessif, de sorte que la production de signaux croisés peut être combinée pour effectuer des transactions dans une zone d'achat ou d'achat excessif.
La stratégie définit les environnements possibles pour le sur- et le dépassement, ce qui permet de filtrer davantage les signaux générés, de réduire la probabilité de signaux erronés et d'éviter de s'engager aveuglément dans des marchés complexes.
Les mécanismes de gestion des risques stricts aident à contrôler les pertes d'une seule transaction, à la fois en contrôlant le maximum de retraits dans l'ensemble et en laissant suffisamment de place pour des transactions rentables.
Il y a aussi des risques avec cette stratégie:
Les indicateurs EMA, Stoch, etc. sont en retard, ce qui rend la stratégie difficile et l'occasion de saisir les retours du marché.
Le simple fait de se fier à des indicateurs peut facilement conduire à des jugements préliminaires sur le marché et à manquer les opportunités commerciales qu'il offre réellement.
Les mécanismes de gestion des risques eux-mêmes peuvent également limiter la marge de profit stratégique, et la mise en place d'une suspension des pertes et d'un arrêt des positions dans les grandes tendances doit être particulièrement prudente.
La stratégie comporte également un certain risque dans la sélection des paramètres, car l'impact des différents paramètres sur les résultats nécessite un grand nombre de retests et d'optimisations pour obtenir la meilleure combinaison de paramètres.
La stratégie peut être optimisée pour les domaines suivants:
Essayez d'utiliser différents types d'EMA, tels que les moyennes mobiles pondérées, Hull MA, etc., pour déterminer la tendance et effectuer une analyse comparative.
Essayez de créer un système de négociation multi-indicateurs en combinant d'autres indicateurs pour générer des signaux de trading, tels que MACD, KDJ, etc.
Optimiser les paramètres de stop-loss et de stop-loss pour les rendre plus adaptés aux fluctuations réelles du marché. Des niveaux de stop-loss plus larges et des niveaux de stop-loss plus stricts peuvent être définis.
Tester la différence de performance de cette stratégie dans différentes variétés et cycles pour trouver la meilleure combinaison de variétés et de cycles.
Considérez l'ajout d'un modèle d'apprentissage automatique ou de réseau neuronal pour aider à déterminer la direction de la tendance et les signaux de trading et à rendre la stratégie plus intelligente.
Dans l'ensemble, cette stratégie utilise des indicateurs communs en combinaison pour construire une stratégie de suivi des tendances plus mature. Elle prend en compte à la fois la perception des tendances et la production de signaux de trading spécifiques, mais elle met en place un mécanisme de gestion des risques. En continuant à optimiser, nous croyons que la stratégie peut obtenir de meilleurs résultats réels.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //by Wugamlo //Strategy combining Stochastic Crosses in the Overbought/Oversold Area with a trend determined by two EMAs //Default setup seems to work best on 4HR timeframe for BTC strategy(title = "Strategy Stoch/EMA Cross", shorttitle = "Strategy Stoch/EMA Cross", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, commission_value=0.01,commission_type=strategy.commission.percent, initial_capital=1000) // === GENERAL INPUTS === SectionInd = input(defval = true ,title = "════════════ INDICATORS ════════════") maFastLength = input(defval = 55, title = "Fast MA Period", minval = 1) maSlowLength = input(defval = 89, title = "Slow MA Period", minval = 1) StochLength = input(defval = 14, title = "Stochastic Length", minval=1) smoothK = input(defval = 6, title = "%K Smooth", minval=1) smoothD = input(defval = 3, title = "%D Smooth", minval=1) overbought = 80 oversold = 20 HighlightOBOS = input(defval = true, title = "Highlight Stoch Cross?") HighlightTrend = input(defval = true, title = "Highlight Trend?") //DATE AND TIME SectionFrom = input(defval = true ,title = "═══════════════ FROM ═══════════════") fromDay = input(defval = 01, title = "From day", minval=1) fromMonth = input(defval = 1, title = "From month", minval=1) fromYear = input(defval = 2019, title = "From year", minval=2014) SectionTo = input(defval = true, title = "════════════════ TO ════════════════") toDay = input(defval = 31, title = "To day", minval=1) toMonth = input(defval = 12, title = "To month", minval=1) toYear = input(defval = 2020, title = "To year", minval=2014) // === STRATEGY RELATED INPUTS === SectionStra = input(defval = true ,title = "═════════════ STRATEGY ═════════════") // Include Shorts or only trade Long Positions? includeShorts = input(defval = true, title = "Include Short Positions?") // Risk Management inputs useTakeProfit = input(defval = true, title = "User Take Profit?") inpTakeProfit = input(defval = 8, title = "Take Profit (%)", minval = 0) useStopLoss = input(defval = false, title = "User Stop Loss?") inpStopLoss = input(defval = 2, title = "Stop Loss (%)", minval = 0) StopLossPerc = inpStopLoss * 0.01 TakeProfitPerc = inpTakeProfit * 0.01 // === EMA SERIES SETUP === maFast = ema(close, maFastLength) maSlow = ema(close, maSlowLength) diff = maFast - maSlow // === STOCHASTIC SETUP === k = sma(stoch(close, high, low, StochLength), smoothK) d = sma(k, smoothD) // Stochastic Long/Short Entry determination stochLong = crossover(k,d) and (k < oversold) stochShort = crossunder(k,d) and (k > overbought) // Stochastic Long/Short Exit determination stochLongEx = crossover (k, overbought) stochShortEx = crossunder(k, oversold) // === PLOTTING EMAs === fast = plot(maFast, title = "Fast MA", color = yellow, linewidth = 1, style = line, transp = 10) slow = plot(maSlow, title = "Slow MA", color = white, linewidth = 1, style = line, transp = 10) // === Vertical Coloring for Crosses in Overbought/Oversold zone and for MA Trend Zones === b_color = stochLong ? green : stochShort ? red : na bgcolor(HighlightOBOS ? b_color : na, title="Overbought / Oversold", transp=65) //Highlight the Overbought/Oversold Stoch Crossings t_color = diff>=0 ? green : diff<0 ? red : na bgcolor(HighlightTrend ? t_color : na, title="Trend up / Trend down", transp=75) //Highlight the EMA Trend // === STRATEGY LOGIC === // Time Restriction timeInRange = true // === STRATEGY - LONG POSITION EXECUTION === if stochLong and (diff >=0) and timeInRange //Open Long when Stoch crossing in Oversold area and EMATrend is up strategy.entry(id = "Long", long = true) if stochLong and (diff <0) and timeInRange //Close Long when another Long Stoch cross signal is given after Trend has changed to down (avoid fake signals) strategy.close(id = "Long") if stochLongEx and timeInRange //Close Long when Stoch is getting Overbought strategy.close(id = "Long") // === STRATEGY - SHORT POSITION EXECUTION === if stochShort and (diff <0) and timeInRange and includeShorts //Open Short when Stoch crossing in Overbought area and EMA Trend is down strategy.entry(id = "Short", long = false) if stochShort and (diff >=0) and timeInRange //Close Short when another Short Stoch cross signal is given after Trend has changed to up (avoid fake signals) strategy.close(id = "Short") if stochShortEx and timeInRange //Close Short when Stoch is getting Oversold strategy.close(id = "Short") // === STRATEGY RISK MANAGEMENT EXECUTION === //Stop Loss if useStopLoss //Exit when Stop Loss is hit strategy.exit("Exit Long SL", from_entry = "Long", loss = close * StopLossPerc / syminfo.mintick ) strategy.exit("Exit Short SL", from_entry = "Short", loss = close * StopLossPerc / syminfo.mintick ) //Take Profit if useTakeProfit //Exit when Take Profit Limit is hit strategy.exit("Exit Long TP", from_entry = "Long", profit = close * TakeProfitPerc / syminfo.mintick) strategy.exit("Exit Short TP", from_entry = "Short", profit = close * TakeProfitPerc / syminfo.mintick)