A estratégia é baseada em uma estratégia de acompanhamento de tendências de linha média. Utiliza a linha média EMA de diferentes períodos para construir vários conjuntos de sinais de negociação, permitindo negociações de acompanhamento de tendências. Quando o preço cai abaixo da linha média de períodos mais longos, aumenta gradualmente a posição, reduzindo o custo médio do preço.
A estratégia utiliza 5 EMAs de diferentes períodos para construir um sinal de negociação. São os 10o, 20o, 50o, 100o e 200o dias. A estratégia define 4 conjuntos de condições de compra de acordo com a relação entre o preço e essas médias, para realizar a adição de posição em pirâmide.
Quando o preço está abaixo da linha de 20 dias e acima da linha de 50 dias, o primeiro grupo de compras é acionado; Quando o preço está abaixo da linha de 50 dias e acima da linha de 100 dias, o segundo grupo de compras é acionado; Quando o preço está abaixo da linha de 100 dias e acima da linha de 200 dias, o terceiro grupo de compras é acionado; Quando o preço está abaixo da linha de 200 dias, o quarto grupo de compras é acionado. O número de compras também está aumentando gradualmente a cada compra, qt1, qt2, qt3 e qt4 respectivamente.
No que diz respeito à venda, a estratégia usa dois conjuntos de condições de parada simultâneas. O primeiro grupo é quando o preço está acima da linha do dia 10 e a linha do dia 10 está acima das outras linhas médias; o segundo grupo é quando o preço está abaixo da linha do dia 10 do dia anterior e a linha do dia 10 está acima das outras linhas médias.
A maior vantagem da estratégia é que ela permite manter uma linha longa de forma automática, seguindo as tendências do mercado. Com a compra de vários grupos de condições e a acumulação de lotes, é possível reduzir continuamente o custo de compra e obter lucros extras. Ao mesmo tempo, evita-se o risco de preço trazido por um único ponto de compra.
A estratégia também foi projetada de forma otimizada em termos de stop loss. A estratégia segue o ponto de viragem da média de curto prazo para cima, permitindo um stop loss rápido e o bloqueio de ganhos. Isso evita o risco de expansão adicional dos prejuízos.
O maior risco para esta estratégia é ficar preso em uma linha longa de ajuste. O sinal de linha média não é confiável quando o mercado está em um momento de agitação ou de descida. É possível comprar e manter posições com grandes perdas.
Outro ponto de risco é que a mediana nem sempre é precisa. O salto de preço ou a expansão de tendências no curto prazo podem fazer com que a mediana emita um sinal errado. Isso precisa ser verificado e otimizado em combinação com outros indicadores técnicos.
Pode-se considerar a adição de outros indicadores técnicos nos termos de compra, como indicadores de volume de transação, sinais de Bollinger Bands, etc. Isso pode aumentar ainda mais a taxa de sucesso da compra.
Também pode ser adicionado um Boll na pista ou um suporte crítico como uma segunda linha de parada em condições de venda. Isso pode reduzir pequenos e desnecessários travas. Ou adicionar uma função de parada móvel para ajustar a linha de parada em tempo real, o que também pode bloquear ainda mais os ganhos.
A estratégia utiliza um sistema de linha de equilíbrio para fazer transações de seguimento de tendências. Aumento de posição em lotes piramidal permite obter o máximo de lucro da tendência. Ao mesmo tempo, o duplo stop loss protege a segurança do capital. Esta é uma estratégia que vale a pena acompanhar a longo prazo e verificar em tempo real.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)
// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)
// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true
// Profit condition
profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed
// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)
// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]
// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]
// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)
strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)