Estratégia de caixa branca do canal de preços

Autora:ChaoZhang, Data: 2024-02-28 17:51:14
Tags:

img

Resumo

O Price Channel Robot White Box Strategy é uma estratégia de negociação mecânica simples baseada no indicador do canal de preços. Ele usa os limites superior e inferior do canal de preços para determinar pontos de entrada e saída.

Estratégia lógica

A lógica central da estratégia de caixa branca do canal de preços do robô é:

  1. Usar funções mais altas e mais baixas para calcular a mais alta e a mais baixa das barras len recentes, definidas como limites superiores e inferiores do canal de preços
  2. Calcular o preço médio do canal de preços: (mais alto + mais baixo) / 2
  3. Ir longo quando o preço ultrapassa o limite superior do canal de preços
  4. Ir para curto quando o preço ultrapassa o limite inferior do canal de preços
  5. Fechar posição quando o preço retira-se para o preço médio do canal de preços

A estratégia tem também alguns parâmetros configuráveis:

  • Comprimento do canal de preços len: 50 bares por defeito
  • Direção do comércio: longo, curto pode ser configurado separadamente
  • Volume da transação: 100% do capital da conta por defeito
  • Opção de utilização do preço médio como stop loss
  • Horário de negociação: apenas negociação dentro do intervalo de datas configurado

Ao ajustar estes parâmetros, a estratégia pode ser melhor adaptada aos diferentes produtos e ambientes de mercado.

Análise das vantagens

A estratégia da caixa branca do robô do canal de preços tem as seguintes vantagens:

  1. Lógica simples, fácil de compreender e implementar
  2. Aproveitar ao máximo o indicador do canal de preços para determinar a tendência e a inversão
  3. Parâmetros altamente configuráveis para uma melhor adaptabilidade
  4. Mecanismo de stop loss integrado para limitar as perdas
  5. Filtro de tempo de suporte para evitar impactos de grandes eventos

Em resumo, trata-se de uma estratégia de tendência simples, mas prática, que pode alcançar resultados decentes após ajuste de parâmetros.

Análise de riscos

A estratégia da caixa branca do canal de preços do robô também tem alguns riscos:

  1. Indicador de canal de preços é sensível ao parâmetro len, testes independentes e otimização necessários para diferentes prazos e produtos
  2. O rastreamento do stop loss corre o risco de ser interrompido prematuramente, a distância do stop loss precisa de ajustamento com base na volatilidade do mercado
  3. Transações excessivas sem sentido durante os mercados de gama e lateral, aumentando os custos de transação e o deslizamento

Para reduzir estes riscos, é necessário fazer a otimização nos seguintes aspectos:

  1. Use a Análise Walk Forward para otimizar automaticamente os parâmetros
  2. Adicionar zona tampão para parar de perda preço para evitar ser parado fora
  3. Adicionar filtro de tendência para evitar a negociação no mercado lateral

Orientações de otimização

Há espaço para uma maior otimização da estratégia de caixa branca do canal de preços:

  1. Adicionar julgamento de tendência de prazo mais longo para evitar a negociação contra tendência
  2. Utilizar a diferença de preços entre produtos correlacionados para definir parâmetros e utilizar oportunidades de arbitragem
  3. Adicionar buffer aleatório para o preço stop loss para reduzir a chance de parar fora
  4. Ajustar dinamicamente o parâmetro do canal de preços len com base na volatilidade do mercado
  5. Treinar agentes com métodos de aprendizagem profunda para otimizar a estratégia para produtos específicos

Estas técnicas de otimização podem contribuir para melhorar ainda mais a estabilidade e a rentabilidade da estratégia.

Resumo

A estratégia de caixa branca do robô do canal de preços é uma estratégia simples, mas prática, de seguir tendências. Identifica a direção da tendência e os pontos de reversão usando o indicador do canal de preços para tomar decisões comerciais. A estratégia é fácil de entender e implementar e pode alcançar retornos decentes após ajuste de parâmetros.


/*backtest
start: 2023-02-21 00:00:00
end: 2024-02-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro

//@version=4
strategy(title = "Robot WhiteBox Channel", shorttitle = "Robot WhiteBox Channel", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
needstop = input(true, defval = true, title = "Stop-loss")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
len = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price Channel
h = highest(high, len)
l = lowest(low, len)
center = (h + l) / 2

//Lines
pccol = showll ? color.black : na
slcol = showll ? color.red : na
plot(h, offset = 1, color = pccol)
plot(center, offset = 1, color = slcol)
plot(l, offset = 1, color = pccol)

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if h > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = h, when = strategy.position_size <= 0 and truetime)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = l, when = strategy.position_size >= 0 and truetime)
    strategy.entry("S Stop", strategy.long, 0, stop = center, when = strategy.position_size[1] <= 0 and needstop)
    strategy.entry("L Stop", strategy.short, 0, stop = center, when = strategy.position_size[1] >= 0 and needstop)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Mais.