
La stratégie est une stratégie de multiples/blancs basée sur la croisée des moyennes mobiles simples (SMA). Elle utilise deux SMA de différentes périodes pour générer un signal de transaction. Elle génère des signaux multiples lorsque les SMA rapides traversent les SMA lentes à partir d’une direction descendante; elle génère des signaux blancs lorsque les SMA rapides traversent les SMA lentes à partir d’une direction descendante.
Le principe central de cette stratégie est de générer des signaux de négociation en utilisant des SMA croisés. Le SMA est un indicateur de suivi de tendance qui permet de déterminer la direction générale des prix en prenant une moyenne des prix de clôture au cours de la période passée. En utilisant deux SMA de différentes périodes, la stratégie peut capturer les changements de tendance du marché.
La stratégie utilise le concept de rentabilité pour gérer la taille de la position. Elle calcule la taille de la position en fonction du solde actuel du compte et des bénéfices cumulés. Cela signifie que la stratégie augmente la taille de la position en conséquence, ce qui maximise le potentiel de profit. En ajustant dynamiquement la taille de la position, la stratégie peut tirer parti de la croissance du compte.
Simple et facile à comprendre: La stratégie est basée sur le croisement SMA et est une stratégie de suivi de tendance simple et facile à comprendre. Elle ne nécessite pas de prise de temps complexe du marché ou de jugement subjectif, ce qui facilite la mise en œuvre et la gestion de la stratégie.
Suivi de la tendance: grâce à l’utilisation de la croisée SMA, la stratégie est capable de capturer efficacement les tendances du marché. Elle peut effectuer des transactions à plusieurs têtes dans une tendance à la hausse et des transactions à vide dans une tendance à la baisse, maximisant ainsi le potentiel de profit.
Gestion dynamique des positions: la stratégie utilise le concept de rentabilité pour gérer la taille des positions. En ajustant la taille des positions en fonction du solde du compte et de la dynamique des bénéfices cumulés, la stratégie peut tirer parti de la croissance du compte et améliorer la rentabilité.
Adaptabilité: La stratégie peut être appliquée à une variété de marchés et de catégories d’actifs, tels que les actions, les devises, les marchandises, etc. Sa simplicité et sa adaptabilité en font une stratégie de négociation universelle.
Risque de marché: la stratégie dépend de la continuité de la tendance du marché. La stratégie peut subir des pertes en cas de fluctuation du marché ou de renversement de tendance. Des événements soudains, la publication de données économiques et d’autres facteurs peuvent entraîner des variations de la tendance du marché, ce qui a un effet négatif sur la stratégie.
Risque paramétrique: la performance d’une stratégie dépend de la sélection de la période du SMA. Différentes combinaisons de périodes peuvent produire des résultats différents. Des paramètres mal sélectionnés peuvent entraîner une mauvaise performance de la stratégie ou des opportunités de trading manquées.
Surtrades: Pendant les fluctuations du marché, les croisements SMA fréquents peuvent entraîner des surtrades, augmentant les coûts de transaction et les points de glissement, affectant ainsi la performance globale de la stratégie.
Risque de reprise: Bien que la reprise puisse améliorer la rentabilité de la stratégie, elle augmente également le risque de perte. En cas de perte continue, le solde du compte peut se réduire rapidement, limitant ainsi la capacité de reprise de la stratégie.
Optimisation des paramètres: Optimisation des cycles du SMA pour trouver la combinaison optimale de paramètres afin d’améliorer la performance de la stratégie. Les données historiques peuvent être retestées et les algorithmes d’optimisation tels que la recherche de grille ou les algorithmes génétiques peuvent être utilisés pour trouver les paramètres optimaux.
Gestion des risques: introduire des mesures de gestion des risques, telles que des arrêts de perte et des arrêts, pour limiter les pertes et protéger les bénéfices d’une seule transaction. Les niveaux d’arrêt de perte et d’arrêt peuvent être ajustés en fonction de la dynamique de la volatilité du marché pour s’adapter à différentes conditions du marché.
Filtrage de tendance: en dehors de la croisée SMA, introduire d’autres indicateurs de confirmation de tendance, tels que MACD ou ADX, pour filtrer les faux signaux et améliorer la qualité du signal. Pour améliorer la fiabilité de la stratégie, il est préférable de négocier uniquement lorsque plusieurs indicateurs confirment la tendance en même temps.
Optimisation de la gestion des positions: règles de gestion des positions pour optimiser les stratégies de rentabilité, telles que l’introduction de mesures de contrôle des risques, la limitation de l’ouverture des risques pour les transactions individuelles. Vous pouvez envisager d’utiliser la formule de Kelly ou un pourcentage de risque fixe pour déterminer la taille des positions de chaque transaction, afin d’équilibrer le risque et le rendement.
La stratégie est une stratégie de suivi de tendance basée sur les SMA croisés, qui utilise le concept de reprise pour gérer la taille de la position. Ses avantages résident dans sa simplicité et sa facilité d’utilisation, sa capacité à suivre les tendances, sa gestion de position dynamique et sa capacité d’adaptation. Cependant, elle est également confrontée à des défis tels que le risque de marché, le risque de paramètres, le risque de survente et de reprise.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Umesh SMA Crossover Strategy", overlay=true)
// Input parameters
fast_length = input.int(9, title="Fast SMA Length")
slow_length = input.int(21, title="Slow SMA Length")
// Calculate SMAs
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)
// Plot SMAs
plot(fast_sma, color=color.blue, title="Fast SMA")
plot(slow_sma, color=color.red, title="Slow SMA")
// Strategy logic
longCondition = ta.crossover(fast_sma, slow_sma)
shortCondition = ta.crossunder(fast_sma, slow_sma)
// Initialize cumulative profit with netprofit
var float cumulative_profit = na
if (na(cumulative_profit))
cumulative_profit := strategy.netprofit
// // Initialize starting balance
// var float starting_balance = na
// if (na(starting_balance))
// starting_balance := strategy.equity
// Initialize starting balance
var float starting_balance = na
if (na(starting_balance))
starting_balance := 100000.0 // Initial balance
// Calculate profit or gains
if (strategy.opentrades != 0)
cumulative_profit := strategy.netprofit + (strategy.equity - starting_balance)
// Calculate position size based on current balance and cumulative profit
//position_size = 100000
position_size = starting_balance + cumulative_profit
// Entry conditions
if (longCondition)
strategy.entry("Long", strategy.long, qty = position_size / close)
if (shortCondition)
strategy.entry("Short", strategy.short, qty = position_size / close)
// // Entry conditions
// if (longCondition)
// strategy.entry("Long", strategy.long, qty = 100000 / close)
// if (shortCondition)
// strategy.entry("Short", strategy.short, qty = 100000 / close)
// Plot strategy.equity
plot(strategy.equity, color=color.green, title="Cumulative Profit")
// Print cumulative profit value on chart
label.new(x = bar_index, y = strategy.equity, text = str.tostring(strategy.equity), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)
// Plot cumulative profit
plot(cumulative_profit, color=color.green, title="Cumulative Profit")
// Print cumulative profit value on chart
label.new(x = bar_index, y = cumulative_profit, text = str.tostring(cumulative_profit), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)
// Plot cumulative profit
plot(position_size, color=color.green, title="Cumulative Profit")
// Print cumulative profit value on chart
label.new(x = bar_index, y = position_size, text = str.tostring(position_size), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)