L'indicateur de risque et la combinaison de moyennes mobiles MT5 Stratégie de scalping Martingale

Auteur:ChaoZhang est là., Date: le 12 janvier 2023 à 17h56
Les étiquettes:

img

Résumé

La stratégie s'appelle RSI and Moving Average Combination MT5 Martingale Scalping Strategy. Elle combine le double indicateur de moyenne mobile et l'indicateur d'indice de force relative (RSI) pour mettre en œuvre le trading de scalping à haute fréquence, tout en incorporant le principe de moyenne de position Martingale pour contrôler le niveau de risque global de la stratégie.

La logique de la stratégie

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

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

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

  4. Enfin, la stratégie utilise le principe classique de la mise en moyenne des positions Martingale pour contrôler le risque global.

Analyse des avantages

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

  2. Le réglage de l'oscillateur pour déterminer la zone de consolidation peut filtrer certains faux signaux de rupture.

  3. Le filtrage de la tendance principale permet d'éviter les pertes sur les marchés volatils.

  4. La moyenne des positions de Martingale contrôle efficacement le tirage maximal de la stratégie et est essentielle à une rentabilité durable.

Analyse des risques

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

  2. Des paramètres incorrects de l'oscillateur peuvent également entraîner un filtrage excessif du signal ou l'identification de fausses ruptures.

  3. La moyenne des positions de Martingale entraînera des pertes en cascade dans certains environnements.

  4. La stratégie n'a été vérifiée que sur des données de 15 minutes de la paire de devises GBPUSD.

Directions d'optimisation

  1. Optimiser les paramètres de l'ISR afin de trouver des paramètres plus adaptés à l'environnement actuel du marché.

  2. Testez et optimisez les paramètres de l'oscillateur afin qu'il puisse juger plus précisément de la zone de consolidation.

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

  4. Optimiser les règles de réglage du filtre de tendance principal pour éviter de manquer des opportunités d'inversion.

  5. Essayez différents paramètres de dimensionnement de position supplémentaire.

Résumé

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)


Plus de

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?