
La stratégie utilise la stratégie de croisement de la moyenne mobile classique, en définissant trois moyennes mobiles de différentes périodes, en construisant une forme de fourche en utilisant des moyennes mobiles de 9 périodes, 50 périodes et 100 périodes. La stratégie est appelée stratégie de négociation d’optimisation de la fourche de croisement de la moyenne mobile.
La stratégie utilise trois moyennes mobiles de 9 périodes, 50 périodes et 100 périodes. Les moyennes mobiles de 9 périodes sont les moyennes courtes, les moyennes mobiles de 50 périodes sont les moyennes moyennes et les moyennes mobiles de 100 périodes sont les moyennes longues. Le signal de transaction de la stratégie provient du croisement des moyennes courtes et moyennes moyennes.
Comparée à la stratégie classique de croisement de deux moyennes mobiles, cette stratégie ajoute des conditions de jugement de la tendance à moyen et long terme avant de générer un signal de négociation, ce qui permet de filtrer efficacement certains signaux inefficaces. En cas d’incertitude sur la tendance à long terme, la stratégie ne générera pas de signal et peut être évitée.
La stratégie nécessite un ajustement de la composition de la courbe de la ligne médiane lors de la définition des paramètres. Les différentes compositions de la courbe de la courbe ont un impact sur l’efficacité de la stratégie. Si les paramètres de la courbe de la courbe sont mal définis, il y a un risque de générer trop de faux signaux.
On peut envisager de définir des conditions d’entrée plus strictes en combinaison avec d’autres indicateurs pour aider à juger des tendances du marché, tels que MACD, BOLL, etc., ou de construire des moyennes mobiles adaptables en combinaison avec des indicateurs de volatilité, permettant aux paramètres de s’adapter automatiquement en fonction de l’environnement du marché et d’optimiser davantage la stratégie.
Cette stratégie est basée sur la croisée des moyennes mobiles binaires conventionnelles, avec l’ajout de conditions de jugement et de filtrage des moyennes à long terme, qui permettent de filtrer efficacement les faux signaux. Elle est adaptée pour capturer les tendances à court et moyen terme.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")
//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)
//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
strategy.entry("long", strategy.long)
strategy.close("long", when = bearish_cross and window())
// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)
// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)