
Cette stratégie est principalement utilisée sur le marché à terme NASDAQ pour capturer les tendances à la hausse du marché en analysant la position des prix par rapport aux moyennes mobiles longues, moyennes et courtes, et pour liquider toutes les positions à un moment donné.
La stratégie utilise trois moyennes mobiles simples (SMA): longue (defaut 200 cycles), moyenne (defaut 21 cycles) et courte (defaut 9 cycles). La stratégie déclenche un signal d’achat lorsque le prix est supérieur à la moyenne à long terme et à moyen terme et qu’il y a un croisement sur la moyenne à court terme.
Calculer les moyennes mobiles simples à long terme (default 200 cycles), à moyen terme (default 21 cycles) et à court terme (default 9 cycles).
Détermine si le prix actuel est supérieur à la moyenne à long terme et à la moyenne à moyen terme.
Détermine si le prix actuel est croisé au-dessus de la moyenne à court terme.
Un signal d’achat est déclenché lorsque les conditions 2 et 3 sont réunies et qu’aucune position n’est actuellement détenue.
Après l’achat, définissez des points fixes de stop-loss et de stop-loss, et arrêtez la position lorsque le prix atteint les points de stop-loss ou de stop-loss.
Toutes les positions sont clôturées à 17h00 chaque jour de négociation.
La stratégie est basée sur des moyennes mobiles et est simple, facile à comprendre et à mettre en œuvre.
Suivi des tendances: en analysant la position des prix par rapport aux différentes moyennes périodiques, la stratégie permet de capturer efficacement les tendances haussières du marché.
Contrôle des risques: la stratégie définit des points fixes de stop-loss et de stop-loss pour aider à contrôler les risques liés à une seule transaction.
La stratégie consiste à faire le plein automatiquement à une heure précise de chaque jour de négociation, afin d’éviter les risques du jour au lendemain.
Optimisation des paramètres: la performance de la stratégie peut être sensible aux paramètres de la période moyenne et doit être optimisée en fonction des différents marchés et variétés.
Les marchés en tremblement de terre: dans un environnement de marché en tremblement de terre, des signaux de croisement fréquents peuvent entraîner une mauvaise performance de la stratégie.
Risque de glissement: les arrêts et les pertes de points fixes peuvent ne pas être exécutés comme prévu, ce qui entraîne un risque de glissement.
Stop-loss dynamique: en fonction de la volatilité du marché ou de la tendance des prix, les points de stop-loss et de stop-loss sont ajustés dynamiquement afin d’optimiser le ratio risque/bénéfice.
Filtrage des tendances: l’introduction d’autres indicateurs techniques, tels que l’ADX, pour confirmer la force de la tendance et le filtrage des faux signaux dans les marchés sur le vibreur.
Adaptation à plusieurs variétés: Amélioration de la stratégie pour s’adapter à différentes variétés de futures et caractéristiques du marché.
Gestion des fonds: l’introduction de règles de gestion des fonds plus complexes, telles que la gestion des positions et le contrôle des risques, améliore la solidité de la stratégie.
La stratégie de trading de tendance basée sur les moyennes multiples est une stratégie de suivi de tendance simple et compréhensible qui capture les tendances à la hausse du marché en analysant la position des prix par rapport aux différentes moyennes périodiques. La stratégie définit un nombre fixe de points d’arrêt et de perte et se termine automatiquement à une heure donnée chaque jour pour contrôler le risque. Cependant, la stratégie peut être sous-performante dans les marchés en turbulence et faire face à des problèmes tels que l’optimisation des paramètres et le risque de glissement.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Médias Móveis de MarcosJR", overlay=true)
// Inputs para data inicial e final
start_year = input.int(2020, title="Ano Inicial")
start_month = input.int(1, title="Mês Inicial")
start_day = input.int(1, title="Dia Inicial")
end_year = input.int(2020, title="Ano Final")
end_month = input.int(12, title="Mês Final")
end_day = input.int(31, title="Dia Final")
// Convertendo dia, mês e ano para timestamp
start_date = timestamp(start_year, start_month, start_day, 00, 00)
end_date = timestamp(end_year, end_month, end_day, 23, 59)
// Condição para verificar se a data está dentro do intervalo especificado
date_within_range = true
// Parâmetros para os períodos das médias móveis
ma_short_period = input.int(9, title="MA Curta")
ma_medium_period = input.int(21, title="MA Média")
ma_long_period = input.int(200, title="MA Longa")
// Definindo médias móveis
ma_short = ta.sma(close, ma_short_period)
ma_medium = ta.sma(close, ma_medium_period)
ma_long = ta.sma(close, ma_long_period)
// Plotando as médias móveis no gráfico com espessura aumentada
plot(ma_short, color=color.blue, title="MA Curta", linewidth=2)
plot(ma_medium, color=color.orange, title="MA Média", linewidth=2)
plot(ma_long, color=color.red, title="MA Longa", linewidth=2)
// Verificando se o preço está acima das médias móveis
above_ma_long = close > ma_long
above_ma_medium = close > ma_medium
// Verificando se o preço tocou na média móvel curta
touch_ma_short = ta.crossover(close, ma_short)
// Condições de compra
buy_condition = date_within_range and above_ma_long and above_ma_medium and touch_ma_short
// Sinais de entrada e saída de compra
var float entry_price = na
if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento
entry_price := close // Define o preço de entrada ao comprar
// Parâmetros para o tamanho do stop gain e stop loss em pontos
stop_gain_points = input.int(100, title="Stop Gain (pontos)", minval=1)
stop_loss_points = input.int(100, title="Stop Loss (pontos)", minval=1)
// Calcular o preço de saída alvo (Stop Gain) e de stop loss
target_price = entry_price + stop_gain_points * syminfo.mintick
stop_loss_price = entry_price - stop_loss_points * syminfo.mintick
// Sair da operação de compra quando o preço atingir o stop gain ou stop loss
if (strategy.position_size > 0)
strategy.exit("Venda", "Compra", limit=target_price, stop=stop_loss_price)
// Sinais de entrada de compra
if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento
strategy.entry("Compra", strategy.long)
// Plotando setas de compra
plotshape(series=buy_condition, title="Sinal de Compra", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
// Função para verificar se é 17:00 do mesmo dia
is_17_oclock_same_day = hour == 17 and minute == 0 and hour[1] < 17
// Sair de todas as operações às 17:00 do mesmo dia
if (is_17_oclock_same_day)
strategy.close_all()