
Esta estratégia é uma estratégia que utiliza a linha média e a EMA para negociar a tendência entre os quadros de tempo. A estratégia determina a direção da tendência através da combinação de diferentes períodos de SMA, EMA e K-line, permitindo o rastreamento de tendências de baixo risco.
A estratégia baseia-se principalmente na comparação de três períodos diferentes de médias médias de SMA para determinar a movimentação dos preços. Além disso, é auxiliada pela utilização de EMA para determinar a direção da entidade.
Especificamente, a estratégia usa uma média SMA de 3 ciclos, 3 ciclos, 8 ciclos e 10 ciclos. O preço é considerado em queda quando está abaixo das três médias e emite um sinal de compra quando o preço retorna à média.
Além disso, a estratégia também usa a EMA de 5 ciclos para auxiliar na determinação da direção da entidade da linha K, garantindo que a entidade seja comprada para cima.
No gerenciamento de posições, a estratégia define o número de ganhos ou o período máximo de posições como uma forma de parar os perdas.
A estratégia, combinada com a linha média de diferentes períodos de tempo, permite o julgamento de tendências, filtrando efetivamente o ruído do mercado e rastreando as tendências de linha média e longa. Os parâmetros da estratégia são otimizados e têm um bom desempenho na retrospectiva histórica.
Além disso, a estratégia de incluir o julgamento da EMA pode evitar a compra de uma entidade de linha K para baixo, reduzindo assim a perda de pontos de deslizamento desnecessários.
Em geral, a estratégia é estável, confiável e adequada para rastreamento de linhas médias e longas.
A estratégia é sensível aos parâmetros, e a configuração inadequada de 3 ciclos SMA ou ciclos EMA pode levar à diminuição da qualidade do sinal de negociação. A otimização dos parâmetros é necessária para diferentes variedades.
A estratégia não leva em consideração grandes saltos ou lacunas. Se houver uma notícia importante que cause um grande salto no preço, um certo prejuízo pode ser causado. Pode-se definir um stop loss para evitar esse risco.
Pode-se considerar a adição de mais parâmetros de ciclo, formando uma comparação de EMA ou SMA em vários períodos de tempo, para que a estratégia seja mais precisa no julgamento de tendências.
É possível testar a configuração de stop loss de um determinado valor, reduzindo os prejuízos em situações extremas, com a garantia de lucro.
Pode-se tentar introduzir aprendizado de máquina para otimização dinâmica dos parâmetros, permitindo que os parâmetros da estratégia sejam ajustados de acordo com a situação do mercado em tempo real.
A estratégia é robusta e confiável como um todo, usando uma comparação de linhas médias para determinar a direção da tendência, apoiada por sinais de filtragem EMA. Com a otimização de parâmetros e configuração de controle de vento, a taxa de vitória e a taxa de lucro da estratégia podem ser aumentadas. Vale a pena estudar e aplicar ainda mais.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)
// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")
// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)
// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]
// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])
// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))