
Esta estratégia é usada para a negociação de ações por meio da combinação de vários modelos em forma de alfinete. Combina o modelo de linha de pacote, o modelo de alfinete vazio e o modelo de estrela cruzada para capturar oportunidades de negociação em diferentes condições de mercado.
A lógica central desta estratégia é a construção de várias regras para o julgamento de formações e, em seguida, a síntese dessas regras para gerar sinais de negociação.
Em primeiro lugar, define algumas variáveis básicas para descrever as propriedades do fio de alumínio, como o tamanho do corpo do corpo de alumínio, o preço de abertura e o preço de fechamento.
Em seguida, ele define 3 tipos de barras de negociação, de acordo com a relação entre o preço de fechamento e o preço de abertura de uma barra: 1 representa uma barra de negociação, -1 representa uma barra de negociação, e 0 representa uma barra de negociação.
A partir disso, construímos três regras para o julgamento da forma de uma pirâmide:
Modelo de Engulfing Pattern: A linha K atual envolve a linha K anterior, gerando um sinal de compra ou venda.
Padrão Harami: A linha K superior envolve a linha K atual, gerando um sinal de compra ou venda.
Harami Cross Pattern: combinação de um núcleo vazio com uma estrela cruzada, gerando um sinal de compra ou venda.
De acordo com essas regras de forma de alfinete, pode ser determinado o momento de compra e venda. E combinado com algumas condições adicionais, como a limitação do intervalo de tempo de negociação, para filtrar os sinais de negociação que não correspondem aos requisitos.
Na parte de negociação, a posição é julgada primeiro, e se for contra a direção do sinal de quebra, a posição é fechada primeiro, e depois aberta de acordo com a direção do sinal.
A combinação de vários formatos, forte estabilidade. Um único formato pode ser mais influenciado por um determinado ambiente de mercado, a combinação de formas de uso pode aumentar a estabilidade.
Confirmação de formas na mesma direção, julgamento integrado, evitar erros de julgamento. Diferentes modelos de formas julgam tendências de diferentes ângulos e podem verificar sinais entre si.
Parâmetros ajustáveis e adaptáveis. Os usuários podem combinar livremente diferentes modelos de forma, ajustar o intervalo de tempo de negociação e outros parâmetros, respondendo de forma flexível às mudanças do mercado.
Uma lógica de negociação perfeita. Combinando o julgamento de posição com a lógica de saída de stop-loss, o risco pode ser controlado de forma eficaz.
A combinação de múltiplos parâmetros aumenta a complexidade. É necessário testar a combinação de todos os parâmetros, e a combinação inadequada de parâmetros pode reduzir a eficácia.
A configuração dos parâmetros de forma depende da experiência. Os parâmetros de forma, como o tamanho apropriado da entidade, precisam de experiência acumulada para serem ajustados.
O risco de manter uma posição unilateral. Apenas fazer mais ou apenas fechar o mercado pode limitar a margem de lucro. Pode fazer mais fechamento ao mesmo tempo através da configuração de parâmetros.
Pode ter perdido o ponto de reversão da tendência. Esta estratégia baseia-se na identificação de formas e não é eficaz para determinar a reversão da tendência. Pode ser combinado com outros indicadores para determinar o momento.
Aumentar as estratégias de stop loss para reduzir o risco de posições unilaterais.
Combine com outros indicadores técnicos para determinar a direção da grande tendência, evitando negociações adversas, como MACD, Bollinger Band, etc.
Testar as preferências de parâmetros de diferentes variedades, criando um conjunto de formas adequadas para diferentes variedades.
Adicionar algoritmos de aprendizagem de máquina para auxiliar a otimização de parâmetros e a identificação de formas por meio de IA.
A estratégia utiliza os benefícios de uma variedade de criptomoedas para construir um sistema de negociação de linha curta relativamente estável e confiável. No entanto, alguns parâmetros de configuração e controle de risco precisam de ser melhorados para se adaptar a um ambiente de mercado mais complexo.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy(title = "Noro's CandleModels Tests", shorttitle = "CandleModels tests", 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(true, defval = true, title = "Short")
eng = input(true, defval = true, title = "Model Engulfing")
har = input(true, defval = true, title = "Model Harami")
harc = input(true, defval = true, title = "Model Harami Cross")
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")
rev = input(false, defval = false, title = "Reversive trading")
//Body
body = abs(close - open)
abody = sma(body, 10)
//MinMax Bars
min = min(close, open)
max = max(close, open)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
doji = body < abody / 10
up1 = eng and bar == 1 and bar[1] == -1 and min <= min[1] and max >= max[1]
dn1 = eng and bar == -1 and bar[1] == 1 and min <= min[1] and max >= max[1]
up2 = har and bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1]
dn2 = har and bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1]
up3 = harc and doji and bar[1] == -1 and low >= min[1] and high <= max[1]
dn3 = harc and doji and bar[1] == 1 and low >= min[1] and high <= max[1]
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2 and rev == false
//Trading
if up1 or up2 or up3
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 dn1 or dn2 or dn3
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()