Esta estratégia combina indicadores de média móvel em vários prazos para determinar a consistência da tendência e toma ações de scalping durante o dia para seguir a tendência e obter lucros.
Esta estratégia usa médias móveis de 8 períodos e 20 períodos nos intervalos de tempo de 5 minutos, 15 minutos, 30 minutos e 60 minutos para gerar sinais de negociação. Um sinal de compra é gerado quando o MA de 8 períodos cruza acima do MA de 20 períodos. Um sinal de venda é gerado quando o MA de 8 períodos cruza abaixo do MA de 20 períodos.
A estratégia requer sinais consistentes nos quatro prazos antes de emitir uma ordem de negociação.
Uma vez inserida numa posição, a estratégia estabelece uma meta de lucro fixa para obter lucros intradiários.
Especificamente, a estratégia usa a função security (() para recuperar os valores de MA de diferentes prazos.
Os sinais de compra e venda são determinados por se a linha de diferença cruza acima/abaixo da linha zero. Várias bandeiras islong e isshort são usadas para registrar o sinal em cada período de tempo. As ordens são colocadas quando as condições islong e isshort são atendidas.
Após a entrada num comércio, a estratégia utilizastrategy.exit() estabelecer um objectivo de lucro fixo para o scalping.
As vantagens desta estratégia incluem:
O projeto de quadros de tempo múltiplos filtra o ruído e reduz a frequência do comércio.
O scalping intradiário com otimização de lucro acumula pequenos ganhos consistentemente.
Estrutura de código clara, fácil de compreender e otimizar.
Condições razoáveis ajudam a controlar o risco.
Riscos potenciais desta estratégia:
Os quadros de tempo múltiplos podem perder mudanças de tendência sutis.
As operações de scalping frequentes aumentam os custos.
O objectivo de lucro fixo não é flexível.
Depende dos indicadores, corre o risco de ser enganado.
Optimizações possíveis:
Adicione mais prazos para sinais mais robustos.
Objetivo de lucro dinâmico baseado no ATR.
Filtros adicionais, como aumento de volume ou históricos extremos.
Otimizar os períodos de MA para obter os melhores parâmetros.
Adicione aprendizagem de máquina para julgar a confiabilidade do sinal.
No geral, esta é uma estratégia típica de rastreamento de tendências de vários prazos usando scalping intradiário. A lógica é clara e o código bem estruturado. Com otimização adequada, pode se tornar um modelo de estratégia de scalping muito prático.
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="PeBAS $JPY Scalper 15m ",overlay=true) zeigeallebars= input(false, title="Zeige alle (Show all) Candles/Bars?") profitwert=input(52, title="Profit") myatr= input(title="ATR", type=float, defval=0.00002, minval=0.00001,step=0.00001) //Plot EMA-Differenz Aktueller Timeframe dif=(ema(close,8)+ema(close,20))/2 mcolor=ema(close,8) > ema(close,20) ? green : red bs = ema(close,8) > ema(close,20) ? true : false ThisATR=atr(16) //trans = zeigeallebars == true ? 00 : 100 //plot(dif,"dif",color=mcolor,linewidth=6,transp=trans) //1M EMA htf_ma1Mema8 = ema(close, 5) htf_ma1Mema20 = ema(close, 20) ema81m=request.security(syminfo.tickerid, "1", htf_ma1Mema8) ema201m=request.security(syminfo.tickerid, "1", htf_ma1Mema20) dif1M = (ema81m + ema201m) / 2 Close1M = request.security(syminfo.tickerid, "1", close) color1=ema81m > ema201m ? green : red //plot(dif1M,"dif",color1,linewidth=6) //plotshape(1, style=shape.cross, color=color1,location=location.top) ls1 = ema81m > ema201m ? 1 : 0 //5M EMA htf_ma5Mema8 = ema(close, 8) htf_ma5Mema20 = ema(close, 20) ema85m=request.security(syminfo.tickerid, "5", htf_ma5Mema8) ema205m=request.security(syminfo.tickerid, "5", htf_ma5Mema20) dif5M = (ema85m + ema205m) / 2 color5=ema85m > ema205m ? green : red plot(dif5M,"dif",color5,linewidth=5) ls5 = ema85m > ema205m ? 1 : 0 alert1= ema85m > ema205m and ema85m[1] < ema205m[1] ? 1 : 0 islong5 = ema85m > ema205m ? 1 : 0 isshort5 = ema85m < ema205m ? 1 : 0 //15M EMA htf_ma15Mema8 = ema(close, 8) htf_ma15Mema20 = ema(close, 20) ema815m=request.security(syminfo.tickerid, "15", htf_ma15Mema8) ema2015m=request.security(syminfo.tickerid, "15", htf_ma15Mema20) dif15M = (ema815m + ema2015m) / 2 color15=ema815m > ema2015m ? green : red plot(dif15M,"dif",color15,linewidth=3) ls15= ema815m > ema2015m ? 1 : 0 alert2= ema815m > ema2015m and ema815m[1] < ema2015m[1] ? 1 : 0 islong15 = ema815m > ema2015m ? 1 : 0 isshort15 = ema815m < ema2015m ? 1 : 0 //30M EMA htf_ma30Mema8 = ema(close, 8) htf_ma30Mema20 = ema(close, 20) ema830m=request.security(syminfo.tickerid, "30", htf_ma30Mema8) ema2030m=request.security(syminfo.tickerid, "30", htf_ma30Mema20) dif30M = (ema830m + ema2030m) / 2 color30=ema830m > ema2030m ? green : red ls30= ema830m > ema2030m ?1 : 0 islong30 = ema830m > ema2030m ? 1 : 0 isshort30 = ema830m < ema2030m ? 1 : 0 //60M EMA htf_ma60Mema8 = ema(close, 8) htf_ma60Mema20 = ema(close, 20) ema860m=request.security(syminfo.tickerid, "60", htf_ma60Mema8) ema2060m=request.security(syminfo.tickerid, "60", htf_ma60Mema20) dif60M = (ema860m + ema2060m) / 2 color60=ema860m > ema2060m ? green : red ls60= ema860m > ema2060m ?1 : 0 islong60 = ema860m > ema2060m ? 1 : 0 isshort60 = ema860m < ema2060m ? 1 : 0 plot(dif60M,"dif",color60,linewidth=3,transp=70) islong = islong5 ==1 and islong15 ==1 and islong60 ==1 and year > 2017 ? 1 : 0 isshort = isshort5 ==1 and isshort15 ==1 and isshort60 ==1 and year > 2017 ? 1 : 0 condition2l= 0 condition2s = 0 c= alert1 == alert2 and alert1[1] != alert2[1] ? 1 : 0 alertcondition(c, title='Da tat sich was ', message='Da tat sich was!') strategy.entry("enter long", strategy.long,1,when = islong ==1 and islong[1] == 0 ) strategy.entry("enter short", strategy.short,1,when = isshort == 1 and isshort [1] == 0) strategy.exit("close",profit=profitwert) strategy.exit("close",profit=profitwert)