La stratégie de trading de l'indicateur MACD Momentum StochRSI de MoonFlag est une stratégie de trading quantitative qui utilise les indicateurs MACD, momentum et StochRSI pour le jugement.
La stratégie utilise les indicateurs clés suivants pour le jugement:
Indicateur MACD: la période SMA rapide est de 50 et la période SMA lente est de 200, représentant la ligne de 50 jours et la ligne de 200 jours couramment utilisées sur le marché.
Indicateur de dynamique personnalisé: essentiellement similaire à l'indicateur Stoch, utilisé pour juger de la direction de la dynamique à court terme du marché.
Indicateur StochRSI: Évalue la force et les niveaux de surachat/survente du marché.
Pour entrer long, il doit satisfaire simultanément aux trois conditions suivantes: MACD>0 (qui représente la tendance à la hausse à moyen et long terme), indicateur de dynamique personnalisé >0 (qui représente la dynamique à la hausse à court terme) et prix de clôture supérieur à la clôture précédente (qui représente la tendance à la hausse actuelle).
Le signal long de clôture est légèrement plus complexe, nécessitant MACD <0, indicateur de dynamique personnalisé <0, prix de clôture inférieur à la clôture précédente et StochRSI>20 les 4 conditions à remplir simultanément.
La stratégie évalue de manière exhaustive la tendance à moyen et à long terme, l'élan à court terme et la tendance actuelle, et constitue un système de rupture relativement robuste.
Le jugement global de plusieurs indicateurs évite de générer de faux signaux
La sélection du paramètre MACD tient compte de la ligne importante de 50 jours et de la ligne de 200 jours sur le marché.
Après que les paramètres de chaque indicateur aient été testés pour les variations, le rendement de la stratégie a peu changé, évitant le risque de suradaptation
Testé avec suffisamment de données et avec une fiabilité élevée
Les systèmes de rupture sont sujets à l'arbitrage, ce qui peut augmenter le nombre de transactions et les coûts de glissement
Haute complexité avec jugement complet sur plusieurs indicateurs, difficulté à régler et à optimiser les paramètres
Risques élevés de négociation à court terme au cours de la journée
Incorporer l'analyse de plus d'indicateurs, tels que le volume des transactions
Augmenter les algorithmes d'apprentissage automatique pour l'optimisation des paramètres dynamiques
Moins de fréquence de négociation, conversion vers une plus grande périodicité pour les jugements
La stratégie de négociation MoonFlag MACD Momentum StochRSI évalue de manière exhaustive les tendances et la force du marché avec plusieurs indicateurs, présente de bons résultats de backtest et une grande fiabilité, adaptée aux traders quantitatifs expérimentés pour appliquer et optimiser sur des crypto-monnaies de qualité.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // // © MoonFlag //@version=5 strategy("MoonFlag 1D MACD Momentum StochRSI Strategy", max_bars_back=500, overlay=false, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=80, pyramiding=0, calc_on_order_fills=true) d(gaps_1, data)=> float out = 0. out :=(ta.wma(ta.wma(ta.wma(data, math.round(((1 * gaps_1) - math.round((1 * gaps_1) / 3)) / 2)), math.round((1 * gaps_1) / 3)) , int(((1 * gaps_1) - math.round((1 * gaps_1) / 3)) / 2))) out MoonFlagAverage(gaps_1,data)=> float out = 0. out:=d(gaps_1,d(gaps_1, d(gaps_1, data))) out fastLength = input.int(50, "MACD SMA Fast Length") slowlength = input.int(200, "MACD SMA Slow Length") MACDLength = 9//input.int(9, "MACD Length") MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength) aMACD = ta.sma(MACD, MACDLength) MACDdelta = MACD - aMACD //plot (MACD, "MACD1", color.red) //plot (aMACD, "aMACD1", color.green) //plot (delta, "MACD delta", color.white) fastLength2 = input.int(12, "MoonFlag Momentum Length") slowlength2 = 2*fastLength2//input.int(50, "MoonFlag Momentum Slow Length") MACDLength2 = 20//input.int(20, "Momentum Delta") MoonFlag_MACD2 = MoonFlagAverage(fastLength2, close) - MoonFlagAverage(slowlength2,close) MoonFlag_aMACD2 = MoonFlagAverage(MACDLength2, MoonFlag_MACD2) MoonFlag_delta = MoonFlag_MACD2 - MoonFlag_aMACD2 MoonFlag_delta_line=0 if MoonFlag_delta < 0 MoonFlag_delta_line:=-100 else MoonFlag_delta_line:=100 //plot (MoonFlag_MACD2, "MoonFlag Momentum Fast Length", color.red) //plot (MoonFlag_aMACD2, "MoonFlag Momentum Slow Length", color.green) //plot (MoonFlag_delta2, "MoonFlag Delta", color.white) uptrend = (close + high)/(close[1] + high[1]) downtrend = (close + low)/(close[1] + low[1]) lineColor = color.green if uptrend > 1 lineColor := color.green if downtrend < 1 lineColor := color.red smoothK = 2//input.int(2, minval=1, title="K smoothing Stoch RSI") smoothD = 3//input.int(3, minval=1, title= "D smoothing for Stoch RSI") lengthRSI = 7//input.int(7, minval=1, title="RSI Length") lengthStoch = 8//input.int(8, minval=1, title="Stochastic Length") src = close//input(close, title="RSI Source") rsi1 = ta.rsi(src, lengthRSI) k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) StochRSI = ta.sma(k, smoothD) MACDdirection_line = 0 MACDdirection_line := MACDdirection_line[1] if (MACDdelta > 0) MACDdirection_line := 50 if (MACDdelta < 0) MACDdirection_line := -50 useStochRSI = input.bool(true,"Include Condition (StochRSI > 20) with Exit Long/Enter Short") StochRSI_val = 20//input.int(20,"StochRSI greater than to exit short") h1 = hline(StochRSI_val) StochRSIGreaterThanSetValue = true if useStochRSI if (StochRSI > StochRSI_val) StochRSIGreaterThanSetValue := true else StochRSIGreaterThanSetValue := false stoch20 = lineColor if StochRSI < StochRSI_val stoch20 := color.white yearin = input.int(2019, title="Start backtesting from year:") includeShorts = false//input.bool(false, "Include Shorts") plot(MoonFlag_delta_line,"MoonFlag Momentum Direction", color.white) plot(MACDdirection_line,"MACD Direction", color = color.orange) plot(StochRSI, "StochRSI", color=lineColor) if (year>=yearin) if (MACDdelta > 0) and (uptrend > 1) and MoonFlag_delta_line > 0 strategy.entry("buy2", strategy.long, comment="buy") if (MACDdelta < 0) and (downtrend < 1) and MoonFlag_delta_line < 0 and StochRSIGreaterThanSetValue if includeShorts strategy.entry("sell", strategy.short, comment="sell") else strategy.close("buy2", comment = "sell")