Estratégia de preço de fechamento da Harami

Autora:ChaoZhang, Data: 2023-11-28 16:50:34
Tags:

img

Resumo

A estratégia de preço de fechamento Harami é uma estratégia quantitativa de negociação baseada em padrões de velas.

Estratégia lógica

A lógica central é: quando o candelabro atual é uma vela vermelha e o anterior é uma vela verde, e o preço mais baixo da vela atual é maior do que o preço mais baixo da vela anterior, o preço mais alto da vela atual é menor do que o preço mais alto da vela anterior, o padrão Harami é formado. Isso significa que o impulso de tendência de alta está perdendo força e é um sinal para vender.

A média do corpo da vela é usada como uma linha de stop loss.

Análise das vantagens

As principais vantagens da estratégia de preço de fechamento da Harami são:

  1. Julgamento simples e razoável baseado em padrões de candelabro, fácil de entender e implementar.
  2. Quando o intervalo ascendente estreita para formar um padrão Harami, o ímpeto de alta está perdendo força e é um bom ponto de venda.
  3. Existe um mecanismo de stop loss claro para controlar os riscos.

Análise de riscos

Há também alguns riscos para esta estratégia:

  1. Baixa frequência de monitorização, pode perder os melhores pontos de entrada e saída.
  2. As falsas velas bullish/bearish podem gerar sinais errados.
  3. Os julgamentos baseiam-se exclusivamente em padrões de candelabro sem considerar outros indicadores técnicos e fundamentais, o que leva a alguma cegueira.

Para mitigar estes riscos, é recomendável combinar com o volume de negociação, as médias móveis e outros indicadores técnicos, para fazer julgamentos mais abrangentes sobre as tendências do mercado.

Orientações de otimização

A estratégia do preço de encerramento da Harami pode também ser melhorada pelos seguintes aspectos:

  1. Aumentos nos volumes de negociação implicam frequentemente inversões de tendência.
  2. Ajuste dinâmico dos critérios de stop loss com base na volatilidade do mercado e na preferência de risco.
  3. Identificação de pontos de venda perto dos níveis de suporte chave em prazos mais longos quando os padrões Harami se formam.
  4. Combinação de outros indicadores técnicos, como médias móveis, para determinar as tendências globais do mercado ou indicadores principais para prever pontos de entrada e saída.

Resumo

A estratégia de preço de fechamento Harami é fácil de entender e implementar para gerar certos sinais de compra e venda com base em padrões de velas. Mas também tem algumas limitações, como gerar sinais falsos e cegueira. Estes problemas também apontam para direções para melhorias adicionais, aplicando julgamentos mais abrangentes com volumes de negociação, vários prazos e outros indicadores técnicos. Isso pode melhorar muito a eficácia da estratégia.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Harami Strategy v1.0", shorttitle = "Harami str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")

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")

//Body
body = abs(close - open)
abody = sma(body, 10)

//MinMax Bars
min = min(close, open)
max = max(close, open)
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == 1 and bar[1] == -1 and min > min[1] and max < max[1]
dn = bar == -1 and bar[1] == 1 and min > min[1] and max < max[1]
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Mais.