Stratégie de suivi du croisement des moyennes mobiles doubles

Auteur:ChaoZhang est là., Date: 2023-09-11 15h27h45
Les étiquettes:

Cette stratégie calcule le croisement entre deux groupes de moyennes mobiles SMA et EMA afin de déterminer la direction de la tendance du marché pour le suivi des transactions.

En particulier, il utilise une paire de moyennes mobiles rapides et une paire de moyennes mobiles lentes. Il va long lorsque la ligne rapide traverse au-dessus de la ligne lente, et va court sur la croisée descendante. Les sorties se produisent lorsque le prix tombe en dessous de la ligne lente ou monte au-dessus de la ligne rapide.

L'avantage de cette double stratégie MA est de règles simples et claires basées sur deux MA dynamiques.

En général, la stratégie de suivi du double MA crossover convient aux marchés tendance pour le trading dans le sens de l'élan.


/*backtest
start: 2023-08-11 00:00:00
end: 2023-09-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// strategy("Moving Average Strategy of BiznesFilosof", shorttitle="MAS of BiznesFilosof", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0)

//Period
startY = input(title="Start Year", defval = 2011)
startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12)
startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31)
finishY = input(title="Finish Year", defval = 2050)
finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12)
finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31)
//finish = input(2019, 02, 28, 00, 00)
timestart = timestamp(startY, startM, startD, 00, 00)
timefinish = timestamp(finishY, finishM, finishD, 23, 59)
window = time >= timestart and time <= timefinish ? true : false // Lenghth strategy

lma1 = input(title="Length MA1", defval = 21, minval=1)
exponential1 = input(false, title="exponential")
lma2 = input(title="Length MA2", defval = 1, minval=1)
exponential2 = input(false, title="exponential")
lbars = input(title="Length bars close", defval = 0, minval=0)

ma1 = exponential1 ? ema(close, lma1) : sma(close, lma1)
ma2 = exponential2 ? ema(close, lma2) : sma(close, lma2)

//source = close
source = ma2

//open
strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(ma2, ma1) and window)
strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(ma2, ma1) and window)

if crossunder(source, ma1) and strategy.position_size > 0
    strategy.close_all()
if crossunder(ma2[lbars], ma1[lbars]) and strategy.position_size > 0 and lbars != 0
    strategy.close_all()    
if crossover(source, ma1) and strategy.position_size < 0
    strategy.close_all()
if crossover(ma2[lbars], ma1[lbars]) and strategy.position_size < 0 and lbars != 0
    strategy.close_all()      

src = close
src1 = high
src2 = low
maH = exponential1 ? ema(src1, lma1) : sma(src1, lma1)
maL = exponential1 ? ema(src2, lma1) : sma(src2, lma1)
maColor = src>maH ? green : src<maL ? red : blue

plot(ma1, title="MA1", color=maColor, linewidth=2, style=line)
plot(ma2, title="MA2", color=gray, linewidth=1, style=line)



Plus de