La stratégie de croisement des moyennes mobiles de Galileo Galilei est une stratégie de trading basée sur des moyennes mobiles. Elle génère des signaux de trading en calculant la moyenne mobile exponentielle (EMA) sur une période spécifiée et en comparant les croisements entre l'EMA et le prix. Les signaux de vente sont générés lorsque le prix tombe en dessous de l'EMA de haut en bas, tandis que les signaux d'achat se produisent lorsque le prix dépasse l'EMA de bas en haut.
Le noyau de la stratégie de Galileo Galilei réside dans la moyenne mobile exponentielle (EMA).
EMA aujourd'hui = (Coût de clôture aujourd'hui × Facteur de lissage) + (EMA d'hier × (1 − Facteur de lissage))
où le facteur de lissage α = (2/(nombre de périodes + 1))
La stratégie calcule dynamiquement l'EMA en fonction des paramètres de la période d'entrée de l'utilisateur.
Lorsque le prix tombe en dessous de l'EMA de haut en bas, un signal de vente est généré pour la négociation à découvert.
Lorsque le prix dépasse l'EMA depuis le bas, un signal d'achat est déclenché pour la négociation longue.
La stratégie trace également la ligne EMA sur le graphique, ainsi que des flèches indiquant les signaux d'achat et de vente.
La stratégie de convergence des moyennes mobiles de Galileo Galilei présente les avantages suivants:
Les risques potentiels de cette stratégie sont les suivants:
Quelques façons d'optimiser la stratégie:
Incorporer d'autres indicateurs pour construire une stratégie composite pour une plus grande résistance aux faux signaux.
Ajouter des mécanismes d'arrêt de perte tels que l'arrêt de perte de suivi ou l'arrêt de perte basé sur le pourcentage pour contrôler le montant de la perte d'une seule transaction.
Testez les EMA avec différentes combinaisons de paramètres pour trouver les paramètres optimaux.
Évaluer la logique de réintégration pour capter les rebonds après les renversements de prix initiaux, améliorant ainsi la rentabilité.
Le crossover de la moyenne mobile de Galileo Galilei est une stratégie simple mais pratique avec une logique claire et une facilité d'utilisation. Il convient aux traders de quantités novices. Avec des améliorations continues, sa performance pourrait devenir de plus en plus supérieure au fil du temps.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 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/ // © armigoldman //@version=3 strategy(title="Galileo Galilei", shorttitle="Galileo Galilei", overlay=true, initial_capital = 100000, default_qty_type=strategy.cash, default_qty_value = 100000) len = input(11, minval=1, title="Length") src = input(open, title="Source") out = ema(src, len) plot(out, title="EMA", color=yellow) //last8h = highest(close, 8) //lastl8 = lowest(close, 8) //plot(last8h, color=red, linewidth=2) //plot(lastl8, color=green, linewidth=2) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval=1, title="From Day", minval=1, maxval=31) fromMonth = input(defval=1, title="From Month", minval=1, maxval=12) fromYear = input(defval=2020, title="From Year", minval=1970) // To Date Inputs toDay = input(defval=1, title="To Day", minval=1, maxval=31) toMonth = input(defval=12, title="To Month", minval=1, maxval=12) toYear = input(defval=2021, title="To Year", minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true bearish = cross(close, out) == 1 and close[1] > close bullish = cross(close, out) == 1 and close[1] < close plotshape(bearish, color=white, style=shape.arrowdown, text="BEAR", location=location.abovebar) plotshape(bullish, color=white, style=shape.arrowup, text="BULL", location=location.belowbar) buy = if cross(close, out) == 1 and close[1] < close strategy.entry("BUY", strategy.long, when=time_cond) //strategy.close_all(when=bearish) // strategy.exit("exit", "Long", profit =, loss = 35) sell = if cross(close, out) == 1 and close[1] > close strategy.entry("SELL", strategy.short, when=time_cond) //sell = if bearish //strategy.close_all(when=bullish) // strategy.exit("exit", "Long", profit = bullish, loss = 100) profit = strategy.netprofit if not time_cond strategy.close_all() //plotshape(true, style=shape.triangleup, location=location.abovebar)