
La stratégie de croisement de la moyenne génère un signal de transaction en calculant la croisement de la moyenne SMA de deux paramètres différents. Elle génère un signal d’achat lorsque la moyenne SMA plus rapide traverse la moyenne SMA plus lente; elle génère un signal de vente lorsque la moyenne SMA plus lente traverse la moyenne SMA plus rapide. La stratégie utilise simultanément deux ensembles de paramètres de la moyenne SMA, un groupe pour déterminer le point d’achat et un autre groupe pour déterminer le point de vente.
La stratégie utilise deux ensembles de paramètres de moyenne SMA:smaB1、smaB2etsmaS1、smaS2。smaB1etsmaB2Pour déterminer les signaux d’achat, ils représentent respectivement une moyenne plus lente et une moyenne plus rapide.smaB1Je vais le mettre.smaB2Il y a un signal d’achat.smaS1etsmaS2Pour déterminer les signaux de vente, il est également utilisé pour représenter les moyennes plus lentes et plus rapides respectivement.smaS2Des sous-vêtementssmaS1Les conditions d’achat et de vente peuvent ainsi être adaptées de manière flexible aux différents environnements du marché.
Plus précisément, la stratégie consiste à calculer la valeur du SMA du prix de clôture et à surveiller en temps réel l’intersection des deux ensembles de moyennes SMA pour déterminer le moment de l’achat et de la vente. Lorsque le SMA traverse la ligne lente, le cours est considéré comme positif à la hausse, donc plus à ce moment-là; et lorsque le SMA traverse la ligne lente, le cours est considéré comme négatif à la baisse, donc moins.
La stratégie présente les principaux avantages suivants:
Cette stratégie comporte aussi des risques:
Pour contrôler les risques susmentionnés, des améliorations peuvent être apportées à des méthodes telles que l’optimisation de la combinaison de paramètres SMA, combinée à des arrêts dynamiques pour verrouiller les bénéfices.
Cette stratégie peut être optimisée dans les domaines suivants:
La stratégie de croisement des moyennes permet de générer un signal de trading simple et efficace en calculant le croisement de deux ensembles de moyennes SMA. La stratégie permet un ajustement flexible des paramètres et s’applique à différentes variétés. C’est une stratégie de suivi de tendance courante.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
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/
// © melihtuna
//@version=4
strategy("SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent)
smaB1 = input(title="smaB1",defval=377)
smaB2 = input(title="smaB2",defval=200)
smaS1 = input(title="smaS1",defval=377)
smaS2 = input(title="smaS2",defval=200)
smawidth = 2
plot(sma(close, smaB1), color = #EFB819, linewidth=smawidth, title='smaB1')
plot(sma(close, smaB2), color = #FF23FD, linewidth=smawidth, title='smaB2')
plot(sma(close, smaS1), color = #000000, linewidth=smawidth, title='smaS1')
plot(sma(close, smaS2), color = #c48dba, linewidth=smawidth, title='smaS2')
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => time >= start and time <= finish ? true : false
longCondition = crossover(sma(close, smaB1),sma(close, smaB2))
if (window() and longCondition)
strategy.entry("BUY", strategy.long)
shortCondition = crossover(sma(close, smaS2),sma(close, smaS1))
if (window() and shortCondition)
strategy.entry("SELL", strategy.short)