La stratégie s'appelle
La stratégie utilise d'abord l'indicateur stochastique pour dessiner un oscillateur personnalisé avec l'oscillateur de paramètresPériode réglé sur 5, et fixe des seuils supérieurs et inférieurs k1 et k2 pour construire la zone de consolidation.
Ensuite, l'indicateur RSI est incorporé pour identifier les phénomènes de surachat et de survente. L'indicateur RSI peut identifier efficacement le moment de pénétration du marché des limites supérieures et inférieures. Cette stratégie fixe la ligne de surachat de RSI à 70 et la ligne de survente à 30.
En outre, la stratégie introduit également le facteur tendanceActivité comme principal filtre de tendance.Lorsque l'indicateur stochastique et l'indicateur RSI répondent aux conditions d'inversion en même temps, il vérifie également si la tendance principale est encore suffisamment active pour éviter des pertes dues à de fausses ruptures sur le marché des chocs.
Enfin, la stratégie utilise le principe classique de la mise en moyenne des positions Martingale pour contrôler le risque global.
L'incorporation de l'indicateur RSI permet d'identifier efficacement les phénomènes de surachat et de survente pour aider à juger du moment de l'inversion.
Le réglage de l'oscillateur pour déterminer la zone de consolidation peut filtrer certains faux signaux de rupture.
Le filtrage de la tendance principale permet d'éviter les pertes sur les marchés volatils.
La moyenne des positions de Martingale contrôle efficacement le tirage maximal de la stratégie et est essentielle à une rentabilité durable.
Dans des conditions de marché anormales, l'indicateur RSI peut échouer et entraîner une mauvaise appréciation des conditions de surachat et de survente.
Des paramètres incorrects de l'oscillateur peuvent également entraîner un filtrage excessif du signal ou l'identification de fausses ruptures.
La moyenne des positions de Martingale entraînera des pertes en cascade dans certains environnements.
La stratégie n'a été vérifiée que sur des données de 15 minutes de la paire de devises GBPUSD.
Optimiser les paramètres de l'ISR afin de trouver des paramètres plus adaptés à l'environnement actuel du marché.
Testez et optimisez les paramètres de l'oscillateur afin qu'il puisse juger plus précisément de la zone de consolidation.
Ajoutez une logique de stop-loss. Arrêtez activement les pertes lorsque les pertes atteignent un certain niveau pour contrôler efficacement les pertes individuelles.
Optimiser les règles de réglage du filtre de tendance principal pour éviter de manquer des opportunités d'inversion.
Essayez différents paramètres de dimensionnement de position supplémentaire.
Cette stratégie combine l'indicateur de moyenne mobile double, l'indicateur RSI et l'oscillateur personnalisé pour juger les phénomènes de rupture de la limite supérieure et inférieure à court terme, et utilise le filtre de tendance principal pour éviter de fausses ruptures pour un trading de scalping efficace.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © cloudofw //@version=5 strategy("F2.2 Martingale Scalping Strategy", overlay=true) // Input parameters rsiOverbought = input.int(70, "RSI Overbought Threshold") rsiOversold = input.int(30, "RSI Oversold Threshold") oscillatorPeriod = input.int(5, "Period for oscillator") k1 = input.float(0.2, "K1 for oscillator's zone") k2 = input.float(0.5, "K2 for oscillator's zone") trendActivity = input.float(1.0, "Main Trend filter", minval=0.1) decreasePerOrder = input.float(0.1, "Trend filter decrease per order", minval=0.01) // Calculate custom oscillator and RSI oscillator = ta.stoch(close, high, low, oscillatorPeriod) rsiValue = ta.rsi(close, 14) zoneHigh = 100 - k1 * 100 zoneLow = k2 * 100 // Entry conditions longCondition = oscillator < zoneLow and trendActivity > 0 and rsiValue < rsiOversold shortCondition = oscillator > zoneHigh and trendActivity > 0 and rsiValue > rsiOverbought // Martingale logic var lot_multiplier = 1.0 var last_lot_size = strategy.equity * 0.01 var trade_1_profit = 0.0 if (strategy.position_size != 0) lot_multiplier := last_lot_size / strategy.position_size < 1.5 ? lot_multiplier * 1.5 : 1.0 trade_1_profit := strategy.grossprofit else lot_multiplier := 1.0 trade_1_profit := 0.0 lot_size = strategy.equity * 0.01 * lot_multiplier + trade_1_profit last_lot_size := lot_size // Trading logic if longCondition and strategy.position_size == 0 strategy.entry("Long", strategy.long) if shortCondition and strategy.position_size == 0 strategy.entry("Short", strategy.short) // Exit conditions if longCondition == false and strategy.position_size > 0 strategy.close("Long") if shortCondition == false and strategy.position_size < 0 strategy.close("Short") // Indicators on chart plotshape(series=longCondition, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") plot(oscillator, color=color.blue, title="Oscillator") hline(zoneHigh, "Upper Zone", color=color.red) hline(zoneLow, "Lower Zone", color=color.green)
Je ne peux pas le faire.Si vous faites une simulation directe du code et que vous découvrez que vous n'avez pas effectué d'opération d'hébergement lorsque vous arrivez au point d'hébergement, pourquoi ne pas le faire?