Estratégia de negociação multi-time frame baseada em canais de preço e MACD


Data de criação: 2023-12-08 15:15:37 última modificação: 2023-12-08 15:15:37
cópia: 0 Cliques: 616
1
focar em
1621
Seguidores

Estratégia de negociação multi-time frame baseada em canais de preço e MACD

Visão geral

A estratégia combina o indicador de canais de preços com o indicador MACD, permitindo o acompanhamento de tendências e o julgamento de sobrevenda e sobrevenda em vários períodos de tempo, para tomar decisões de compra e venda. A estratégia combina o stop loss com o stop loss para gerenciar o risco.

Princípio da estratégia

O indicador de canal de preço constrói um canal de preço com base no EMA médio dos preços mais altos e mais baixos, julgando a tendência através do preço de ruptura do canal; o indicador MACD julga a tendência de pluralidade de ar, acima do eixo zero é o mercado multicapital, abaixo é o mercado de cabeça.

Os sinais de negociação da estratégia são provenientes de:

  1. Histograma MACD invertido Vermelho Entrar múltiplos, invertido Verde Entrar em branco

  2. Preço próximo ao fundo do canal e MACD abaixo do eixo zero

  3. Preço próximo ao topo do canal e MACD acima do eixo zero

  4. O MACD tem um intervalo de entrada no eixo zero

O sinal de saída vem da configuração do Stop Loss Stop.

Vantagens estratégicas

  1. Verificação de combinação de múltiplos indicadores para evitar falsos avanços

  2. Combinação de indicadores de diferentes prazos de tempo para determinar a direção da tendência com mais confiança

  3. Introdução de um mecanismo de suspensão de perdas para controlar eficazmente as perdas individuais

Risco estratégico

  1. Optimização de parâmetros com espaço limitado e fácil otimização

  2. A configuração do canal de preço muito baixa pode causar uma perda significativa.

  3. O ponto de paragem é muito pequeno, o que leva a maiores perdas.

Solução:

  1. Usar o método de “walk forward” para evitar parâmetros de otimização

  2. Configurar o parâmetro de canal de preço como um parâmetro de adaptação

  3. Introdução de stop loss de taxa de flutuação para ajustar dinamicamente a distância de stop loss

Direção de otimização da estratégia

  1. Optimizar a combinação de parâmetros MACD

  2. Parâmetros de canalização de preços de otimização calculados de forma auto-adaptativa

  3. Adição de mais condições de filtragem para evitar falhas e aumentar a eficiência

Resumir

A estratégia integra os benefícios do indicador de canal de preço e do indicador MACD, a configuração razoável de parâmetros e o espaço de otimização são grandes, o julgamento de tendências e o julgamento de sobrecompra e sobrevenda são melhores, o mecanismo de parada de perda controla o risco de perda única, é uma estratégia de negociação mais estável.

Código-fonte da estratégia
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Sonic R + Barcolor MACD", overlay=true)
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=yellow, linewidth=1, title="High PAC EMA",transp=0)
H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
//SR
PeriodLookBack = input(34)
xHighest = highest(PeriodLookBack)
xLowest = lowest(PeriodLookBack)
Trend= close>xHighest[1] ? 1: close< xLowest[1]?-1 : nz(Trend[1],0)
// Strategy//
conbuy= hisdown==1 or MACD<0 ? 1: hisup[5]==1 and MACD[5]>0 ?-1 : nz(conbuy[1],0)
gobuy= conbuy==1 and close-open<2*(pacH-pacL) and high-close<(pacH-pacL)/2 and hisup==1 and MACD>0 and close-pacH<1.5*(pacH-pacL) and close>open and high-close<close-open and close>pacH
consell= hisup==1 or MACD>0 ?1 : hisdown[5]==1 and MACD[5]<0 ?-1 : nz(consell[1],0)
gosell= consell==1 and open-close<2*(pacH-pacL) and close-low<(pacH-pacL)/2 and hisdown==1 and MACD<0 and pacL-close<1.5*(pacH-pacL) and close<open and close-low<open-close and close<pacL
if(gobuy)
    strategy.entry("Buy",strategy.long)
if(gosell)
    strategy.entry("Sell",strategy.short)
//if(Trend==-1 and close<pacL)
//    strategy.close("Buy")
//if(Trend==1 and close>pacH)
//    strategy.close("Sell")
 ////////////// TP and SL//
SL = input(defval=100.00, title="Stop Loss Point", type=float, step=1)
rr= input(defval=0.1,title="Reward/Risk",type=float)
useTPandSL = input(defval = false, title = "Use exit order strategy?")
Stop = SL
Take=SL*rr
Q = 100
if(useTPandSL)
    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop)