Esta estratégia é chamada de
A estratégia baseia-se principalmente em dois indicadores técnicos:
Indicador de tendência: indicador STC para determinar a direção da tendência. O STC inclui a linha do indicador MACD, Estocástico e STC. Uma quebra ascendente da zona 0-25 sinaliza uma tendência de alta, enquanto uma quebra descendente da zona 75-100 sinaliza uma tendência de baixa.
Crossover da média móvel: média móvel simples rápida (período padrão 35) cruza acima/abaixo da SMA lenta (período padrão 200). Um sinal de alta desencadeado quando a SMA rápida cruza acima da SMA lenta. Um sinal de baixa desencadeado no crossover oposto.
A lógica do sinal de negociação é definida do seguinte modo:
Sinais longos: STC quebra acima da linha 25, SMA rápida está acima da SMA lenta e o preço de fechamento está acima da SMA rápida.
Sinais curtos: STC quebra abaixo da linha 75, SMA rápida está abaixo da SMA lenta e o preço de fechamento está abaixo da SMA rápida.
As vantagens desta estratégia incluem:
STC determina a tendência geral, enquanto os MAs duplos geram sinais de entrada específicos.
Períodos de média móvel personalizáveis Os períodos de MA podem ser otimizados para diferentes condições de mercado.
Risco controlado. O STC identifica os níveis de sobrecompra/supervenda para evitar compras de tops e vendas de fundos.
Há alguns riscos a considerar:
O potencial de falhas no STC precisa de ser confirmado pela ação do preço.
Mais sinais falsos de cruzes de MA. Requer ajuste de períodos de MA.
Só negocia em uma direcção por vez, limita o espaço para posições abertas, considere permitir negociações bidirecionais.
Nenhum tratamento do risco de spread na negociação de divisas por margem.
Os possíveis caminhos de otimização incluem:
Ajustar os parâmetros de sobrecompra/supervenda STC.
Otimizar os períodos de MA para melhorar a fiabilidade do sinal cruzado.
Adicione filtros adicionais como Bandas de Bollinger para reduzir falsos negócios de ruptura.
Implementar uma lógica comercial bidirecional para aumentar a capacidade.
Adicionar a lógica de stop loss para controlar a perda por negociação.
Em resumo, esta estratégia combina indicadores de cruzamento de tendência e média móvel para determinar a direção da tendência e o momento das entradas. Com controles de risco adequados, pode alcançar bons retornos. A lógica direta torna fácil de entender e otimizar em diferentes condições de mercado, bem adequada para iniciantes.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Shaff Trend Cycle coded by Alex Orekhov (everget) // Strategy and its additional conditions provided by greenmask // Schaff Trend Cycle script may be freely distributed under the MIT license. strategy("STC", shorttitle="STC") fastLength = input(title="MACD Fast Length", type=input.integer, defval=23) slowLength = input(title="MACD Slow Length", type=input.integer, defval=50) cycleLength = input(title="Cycle Length", type=input.integer, defval=10) d1Length = input(title="1st %D Length", type=input.integer, defval=3) d2Length = input(title="2nd %D Length", type=input.integer, defval=3) src = close highlightBreakouts = input(title="Highlight Breakouts ?", type=input.bool, defval=true) macd = ema(src, fastLength) - ema(src, slowLength) k = nz(fixnan(stoch(macd, macd, macd, cycleLength))) d = ema(k, d1Length) kd = nz(fixnan(stoch(d, d, d, cycleLength))) stc = ema(kd, d2Length) stc := stc > 100 ? 100 : stc < 0 ? 0 : stc stcColor = not highlightBreakouts ? (stc > stc[1] ? color.green : color.red) : #ff3013 stcPlot = plot(stc, title="STC", color=stcColor, transp=0) upper = 75 lower = 25 transparent = color.new(color.white, 100) upperLevel = plot(upper, title="Upper", color=color.gray) hline(50, title="Middle", linestyle=hline.style_dotted) lowerLevel = plot(lower, title="Lower", color=color.gray) fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90) upperFillColor = stc > upper and highlightBreakouts ? color.green : transparent lowerFillColor = stc < lower and highlightBreakouts ? color.red : transparent fill(upperLevel, stcPlot, color=upperFillColor, transp=80) fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80) strategy.initial_capital = 50000 ordersize=floor(strategy.initial_capital/close) targetvalue = input(title="Target/stop", type=input.integer, defval=400) ma1length = input(title="SMA1", type=input.integer, defval=35) ma2length = input(title="SMA2", type=input.integer, defval=200) ma1 = ema(close,ma1length) ma2 = ema(close,ma2length) bullbuy = crossover(stc, lower) and ma1>ma2 and close>ma1 bearsell = crossunder(stc, upper) and ma1<ma2 and close<ma1 if (bullbuy) strategy.entry("Riposte", strategy.long, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) if (bearsell) strategy.entry("Riposte", strategy.short, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) //plotshape(bullbuy, title= "Purple", location=location.belowbar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte") //plotshape(bearsell, title= "Purple", location=location.abovebar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")