Cette stratégie s'appelle
La stratégie repose principalement sur deux indicateurs techniques:
Indicateur de tendance: Indicateur STC pour déterminer la direction de la tendance. Le STC comprend la ligne MACD, stochastique et indicateur STC. Une rupture à la hausse de la zone 0-25 signale une tendance haussière, tandis qu'une rupture à la baisse de la zone 75-100 signale une tendance baissière.
Crossover de moyenne mobile: moyenne mobile simple rapide (période par défaut 35) traverse au-dessus/en dessous de la SMA lente (période par défaut 200).
La logique des signaux de négociation est définie comme suit:
Signal long: STC dépasse la ligne 25, la SMA rapide est au-dessus de la SMA lente et le prix de clôture est au-dessus de la SMA rapide.
Signal court: le STC se déplace en dessous de la ligne 75, la SMA rapide est en dessous de la SMA lente et le prix de clôture est en dessous de la SMA rapide.
Les avantages de cette stratégie sont les suivants:
Des signaux de négociation fiables provenant de la combinaison d'indicateurs de tendance et de moyennes mobiles.
Des périodes de moyenne mobile personnalisables Les périodes de moyenne mobile peuvent être optimisées pour différentes conditions de marché.
Le STC identifie les niveaux de surachat/survente pour éviter d'acheter des sommets et de vendre des fonds.
Il y a quelques risques à prendre en considération:
Le potentiel de fausses fuites STC doit être confirmé par l'action des prix.
Plus de faux signaux des croisements de MA.
Il n'y a qu'une seule direction de négociation à la fois, limitant l'espace pour les positions ouvertes.
Aucun traitement du risque de spreads dans le trading sur marge.
Les pistes d'optimisation possibles sont les suivantes:
Régler les paramètres de surachat/survente STC.
Optimiser les périodes d'autorisation de mise en œuvre pour améliorer la fiabilité du signal croisé.
Ajoutez des filtres supplémentaires comme les bandes de Bollinger pour réduire les faux écarts.
Mettre en œuvre une logique commerciale bidirectionnelle pour augmenter la capacité.
Ajouter une logique de stop loss pour contrôler la perte par transaction.
En résumé, cette stratégie combine des indicateurs de croisement de tendance et de moyenne mobile pour déterminer la direction de la tendance et le moment des entrées. Avec des contrôles de risque appropriés, elle peut obtenir de bons rendements.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Shaff Trend Cycle coded by Alex Orekhov (everget) // Strategy and its additional conditions provided by greenmask // Schaff Trend Cycle script may be freely distributed under the MIT license. strategy("STC", shorttitle="STC") fastLength = input(title="MACD Fast Length", type=input.integer, defval=23) slowLength = input(title="MACD Slow Length", type=input.integer, defval=50) cycleLength = input(title="Cycle Length", type=input.integer, defval=10) d1Length = input(title="1st %D Length", type=input.integer, defval=3) d2Length = input(title="2nd %D Length", type=input.integer, defval=3) src = close highlightBreakouts = input(title="Highlight Breakouts ?", type=input.bool, defval=true) macd = ema(src, fastLength) - ema(src, slowLength) k = nz(fixnan(stoch(macd, macd, macd, cycleLength))) d = ema(k, d1Length) kd = nz(fixnan(stoch(d, d, d, cycleLength))) stc = ema(kd, d2Length) stc := stc > 100 ? 100 : stc < 0 ? 0 : stc stcColor = not highlightBreakouts ? (stc > stc[1] ? color.green : color.red) : #ff3013 stcPlot = plot(stc, title="STC", color=stcColor, transp=0) upper = 75 lower = 25 transparent = color.new(color.white, 100) upperLevel = plot(upper, title="Upper", color=color.gray) hline(50, title="Middle", linestyle=hline.style_dotted) lowerLevel = plot(lower, title="Lower", color=color.gray) fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90) upperFillColor = stc > upper and highlightBreakouts ? color.green : transparent lowerFillColor = stc < lower and highlightBreakouts ? color.red : transparent fill(upperLevel, stcPlot, color=upperFillColor, transp=80) fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80) strategy.initial_capital = 50000 ordersize=floor(strategy.initial_capital/close) targetvalue = input(title="Target/stop", type=input.integer, defval=400) ma1length = input(title="SMA1", type=input.integer, defval=35) ma2length = input(title="SMA2", type=input.integer, defval=200) ma1 = ema(close,ma1length) ma2 = ema(close,ma2length) bullbuy = crossover(stc, lower) and ma1>ma2 and close>ma1 bearsell = crossunder(stc, upper) and ma1<ma2 and close<ma1 if (bullbuy) strategy.entry("Riposte", strategy.long, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) if (bearsell) strategy.entry("Riposte", strategy.short, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) //plotshape(bullbuy, title= "Purple", location=location.belowbar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte") //plotshape(bearsell, title= "Purple", location=location.abovebar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")