La stratégie de trading est basée sur les valeurs de référence.

Auteur:ChaoZhang est là., Date: 2024-02-23 15h06:59
Les étiquettes:

img

Résumé

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 logique de la stratégie

La stratégie utilise les indicateurs clés suivants pour le jugement:

  1. 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é.

  2. Indicateur de dynamique personnalisé: essentiellement similaire à l'indicateur Stoch, utilisé pour juger de la direction de la dynamique à court terme du marché.

  3. 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.

Les avantages de la stratégie

  1. Le jugement global de plusieurs indicateurs évite de générer de faux signaux

  2. 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é.

  3. 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

  4. Testé avec suffisamment de données et avec une fiabilité élevée

Risques liés à la stratégie

  1. Les systèmes de rupture sont sujets à l'arbitrage, ce qui peut augmenter le nombre de transactions et les coûts de glissement

  2. Haute complexité avec jugement complet sur plusieurs indicateurs, difficulté à régler et à optimiser les paramètres

  3. Risques élevés de négociation à court terme au cours de la journée

Directions d'optimisation

  1. Incorporer l'analyse de plus d'indicateurs, tels que le volume des transactions

  2. Augmenter les algorithmes d'apprentissage automatique pour l'optimisation des paramètres dynamiques

  3. Moins de fréquence de négociation, conversion vers une plus grande périodicité pour les jugements

Résumé

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



Plus de