
La stratégie de croisement des moyennes mobiles est une stratégie de négociation quantitative basée sur des moyennes mobiles. La stratégie génère des signaux de négociation et génère des bénéfices en calculant la moyenne des prix des titres sur une période donnée, en utilisant la croisement des moyennes mobiles des prix.
Cette stratégie utilise principalement des croisements de moyennes mobiles rapides et moyennes mobiles lentes pour déterminer la tendance des prix et générer des signaux de négociation. Plus précisément, il s’agit d’utiliser des moyennes mobiles de deux longueurs de période différentes, telles que les lignes de 10 jours et de 20 jours.
Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente en descendant, on considère que le mouvement est passé de la baisse à la hausse, générant un signal d’achat. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente en descendant, on considère que le mouvement est passé de la hausse à la baisse, générant un signal de vente.
En capturant les points de basculement de la tendance des prix, la stratégie permet d’acheter quand les conditions sont favorables et de vendre quand les conditions sont défavorables, et ainsi de réaliser un profit.
Cette stratégie présente les avantages suivants:
La stratégie présente également les risques suivants:
Ces risques peuvent être atténués par une optimisation appropriée.
Cette stratégie peut être optimisée dans les directions suivantes:
L’optimisation de ces stratégies permet d’améliorer considérablement l’efficacité de la plateforme.
La stratégie de croisement des moyennes mobiles est une stratégie de négociation quantitative facile à maîtriser et à mettre en œuvre. Elle utilise le principe de la croisement des moyennes de prix pour juger de manière simple et intuitive des tendances du marché et générer des signaux de négociation.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © HPotter
// Simple SMA strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
if (UseTPSL)
strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0 and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)