Estratégia de negociação de padrão K-line


Data de criação: 2023-12-19 10:56:36 última modificação: 2023-12-19 10:56:36
cópia: 0 Cliques: 659
1
focar em
1621
Seguidores

Estratégia de negociação de padrão K-line

Visão geral

Esta é uma estratégia que utiliza diferentes formas de linha K como sinais de negociação. Pode detectar 9 formas de linha comum e gerar sinais de compra e venda com base nessas formas.

Princípio da estratégia

A lógica central da estratégia é identificar as diferentes formas de linha K, incluindo a estrela-cruz, a bola, a estrela-luz, etc. Quando a forma de identificação é bullish, gera um sinal de compra; Quando a forma de identificação é bearish, gera um sinal de venda.

Por exemplo, quando se detecta uma linha K de três entidades brancas em alta, é um sinal de três trombetas brancas em alta, indicando que o mercado está em uma tendência de alta, e que, nesse momento, será gerado um sinal de compra.

Por exemplo, quando uma linha K de um longo fio negro engolve completamente a entidade anterior de um fio amarelo, forma-se a forma de IShengulfing do urso, indicando uma reversão de tendência, que gera um sinal de venda.

Análise de vantagens

Esta estratégia baseada na identificação de formas, que pode capturar pontos de reversão de curto prazo, é especialmente adequada para a negociação de linhas curtas. Identificar os sinais de formas precisas, pode capturar a reversão de preços em tempo hábil e entrar na direção de lucro.

Em comparação com estratégias de indicadores técnicos, como a média móvel simples, a estratégia de forma K-line combina o julgamento de movimentos de preços e sentimentos de mercado, e os sinais de negociação são mais precisos e confiáveis.

Análise de Riscos

A estratégia depende principalmente do julgamento preciso da forma da linha K. Se o julgamento for errado, é fácil formar sinais de negociação errados, resultando em perdas.

Além disso, nenhuma estratégia de análise técnica pode evitar completamente os riscos sistemáticos, como os efeitos da política, os eventos de cisne negro e outros que podem afetar a negociação.

Pode-se controlar o risco através de um stop loss. Quando o preço se aproxima de um limite, pode-se fazer um stop loss e sair do limite.

Direção de otimização

A variedade de formas de linha K identificadas pode ser ampliada com a adição de sinais de formas mais eficientes, como linha de arco, linha de arco invertido, linha de separação, etc., para confirmar o sinal de transação.

Pode ser filtrado em combinação com outros indicadores, evitando a produção de sinais de negociação em um ambiente de mercado incerto. Por exemplo, os sinais emitidos por indicadores como MACD, RSI e outros podem evitar sinais de baixa qualidade da forma de linha K.

Pode-se otimizar a lógica de parada de perda, quando o preço quebra uma certa amplitude na direção oposta. Ao mesmo tempo, em combinação com o indicador de taxa de flutuação, ajuste dinamicamente o intervalo de parada.

Resumir

Esta é uma estratégia de negociação de linha curta muito prática. Ela identifica as formas comuns de linha K para gerar sinais de negociação, que podem aproveitar as oportunidades de reversão de preços em curto prazo.

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

//@version=3
//Dan Pasco
strategy("Candlestick Signals Strategy" , shorttitle="Candlestick Signal Strategy $1000", overlay = true , initial_capital = 1000)

//Settings input menu
dojicon = input(title = "Show Doji's", type=bool, defval = true)
gravedojicon = input(title = "Gravestone Doji/Dragonfly Doji", type=bool, defval = true)
tbctwscon = input(title = "3 Red Crows/3 Green Soldiers", type=bool, defval = true)
tlscon = input(title = "Three Line Strike", type=bool, defval = true)
pcon = input(title = "Piercing/Dark Cloud", type=bool, defval = true)
mscon = input(title = "Morning Star", type=bool, defval = true)
escon = input(title = "Evening Star", type=bool, defval = true)
econ = input(title = "Engulfing", type=bool, defval = true)
hcon = input(title = "Hammer", type=bool, defval = true)
fscon = input(title = "Falling Star", type=bool, defval = true)

//Doji Up
dojiup = (open-close)>0 ? (high-open)>(open-close) and (close-low)>(open-close) and (close-low)>(high-open) and (open-close)<((high-open)/8) : (open-low)>(close-open) and (high-close)>(close-open) and (open-low)>(high-close) and (close-open)<((high-close)/8) and dojicon == true
plotshape(dojiup, style=shape.cross,location=location.belowbar, text="Doji", color=black)

//Doji Down
dojidown = (open-close)>0 ? (high-open)>(open-close) and (close-low)>(open-close) and (high-open)>(close-low) and (open-close)<((close-low)/8) : (open-low)>(close-open) and (high-close)>(close-open) and (high-close)>(open-low) and (close-open)<((high-close)/8) and dojicon == true
plotshape(dojidown, style=shape.cross,location=location.abovebar, text="Doji", color=black)

//Gravestone Doji Bull
gravedojibull = (close-open)>0 and ((high-close)/8)>(close-open) and ((high-close)/5)>(open-low) and gravedojicon == true
plotshape(gravedojibull, style=shape.arrowdown,location=location.abovebar, text="Gravestone Doji", color=red)

//Gravestone Doji Bear
gravedojibear = (open-close)>0 and ((high-open)/8)>(open-close) and ((high-open)/5)>(close-low) and gravedojicon == true
plotshape(gravedojibear, style=shape.arrowdown,location=location.abovebar, text="Gravestone Doji", color=red)

//Dragonfly Doji Bull
dragondojibull = (close-open)>0 and ((open-low)/8)>(close-open) and ((open-low)/5)>(high-close) and gravedojicon == true
plotshape(dragondojibull, style=shape.arrowup,location=location.belowbar, text="Dragonfly Doji", color=green)

//Dragonfly Doji Bear
dragondojibear = (open-close)>0 and ((close-low)/8)>(open-close) and ((close-low)/5)>(high-open) and gravedojicon == true
plotshape(dragondojibear, style=shape.arrowup,location=location.belowbar, text="Dragonfly Doji", color=green)

//Three Black Crows
tbc = (low[2]<low[3] and low[1]<low[2] and low<low[1] and high[2]<high[3] and high[1]<high[2] and high<high[1] and (close[3]-open[3])>0 and (open[2]-close[2])>0 and (open[1]-close[1])>0 and (open-close)>0 and (open-close)>(close-low) and (open-close)>(high-open) and (open[1]-close[1])>(close[1]-low[1]) and (open[1]-close[1])>(high[1]-open[1]) and (open[2]-close[2])>(close[2]-low[2]) and (open[2]-close[2])>(high[2]-open[2]) and tbctwscon == true)
plotshape(tbc, style=shape.arrowdown,location=location.abovebar, text="3 Red Crows", color=red)

//Three White Soldiers
tws = (high[2]>high[3] and high[1]>high[2] and high>high[1] and low[2]>low[3] and low[1]>low[2] and low>low[1] and (open[3]-close[3])>0 and (close[2]-open[2])>0 and (close[1]-open[1])>0 and (close-open)>0 and (close-open)>(open-low) and (close-open)>(high-close) and (close[1]-open[1])>(open[1]-low[1]) and (close[1]-open[1])>(high[1]-close[1]) and (close[2]-open[2])>(open[2]-low[2]) and (close[2]-open[2])>(high[2]-close[2]) and tbctwscon == true)
plotshape(tws, style=shape.arrowup,location=location.belowbar, text="3 Green Soldiers", color=green)

//Three Line Strike Up
tlsu = ((close-open)>0 and (open[1]-close[1])>0 and (open[2]-close[2])>0 and (open[3]-close[3])>0 and open<close[1] and low[1]<low[2] and low[2]<low[3] and high>high[3] and low<low[1] and tlscon == true)
plotshape(tlsu, style=shape.arrowup,location=location.belowbar, text="3 Line Strike", color=green)

//Three Line Strike Down
tlsd = ((open-close)>0 and (close[1]-open[1])>0 and (close[2]-open[2])>0 and (close[3]-open[3])>0 and open>close[1] and high[1]>high[2] and high[2]>high[3] and low<low[3] and high>high[1] and tlscon == true)
plotshape(tlsd, style=shape.arrowdown,location=location.abovebar, text="3 Line Strike", color=red)

//Piercing Up
pu = ((open[1]-close[1])>0 and (close-open)>0 and (open[1]-close[1])>(high[1]-open[1]) and (open[1]-close[1])>(close[1]-low[1]) and (close-open)>(high-close) and (close-open)>(open-low) and open<close[1] and ((open[1]+close[1])/2)<close and ((close-open)/2)>(high-close) and close<open[1] and (high<high[1] or low>low[1]) and pcon == true)
plotshape(pu, style=shape.arrowup,location=location.belowbar, text="Piercing Up", color=green)

//Dark Cloud
dc = ((close[1]-open[1])>0 and (open-close)>0 and (close[1]-open[1])>(high[1]-close[1]) and (close[1]-open[1])>(open[1]-low[1]) and (open-close)>(high-open) and (open-close)>(close-low) and open>close[1] and ((open[1]+close[1])/2)>close and ((open-close)/2)>(close-low) and close>open[1] and (high<high[1] or low>low[1]) and pcon == true)
plotshape(dc, style=shape.arrowdown,location=location.abovebar, text="Dark Cloud", color=red)

//Morning Star 1 Up
ms1u = ((open[2]-close[2])>0 and (close-open)>0 and (open[1]-close[1])>=0 and (open[2]-close[2])>(high[2]-open[2]) and (open[2]-close[2])>(close[2]-low[2]) and (close-open)>(high-close) and (close-open)>(open-low) and (close-open)>(open[1]-close[1]) and (open[2]-close[2])>(open[1]-close[1]) and open[1]<close[2] and open[1]<open and open[1]!=close[1] and mscon == true)
plotshape(ms1u, style=shape.arrowup,location=location.belowbar, text="Morning Star", color=green)

//Morning Star 2 Up
ms2u = ((open[2]-close[2])>0 and (close-open)>0 and (close[1]-open[1])>=0 and (open[2]-close[2])>(high[2]-open[2]) and (open[2]-close[2])>(close[2]-low[2]) and (close-open)>(high-close) and (close-open)>(open-low) and (close-open)>(close[1]-open[1]) and (open[2]-close[2])>(close[1]-open[1]) and close[1]<close[2] and close[1]<open and open[1]!=close[1] and mscon == true)
plotshape(ms2u, style=shape.arrowup,location=location.belowbar, text="Morning Star X2", color=green)

//Evening Star 1 Down
es1d = ((close[2]-open[2])>0 and (open-close)>0 and (close[1]-open[1])>=0 and (close[2]-open[2])>(high[2]-close[2]) and (close[2]-open[2])>(open[2]-low[2]) and (open-close)>(high-open) and (open-close)>(close-low) and (open-close)>(close[1]-open[1]) and (close[2]-open[2])>(close[1]-open[1]) and open[1]>close[2] and open[1]>open and escon == true)
plotshape(es1d, style=shape.arrowdown,location=location.abovebar, text="Evening Star", color=red)

//Evening Star 2 Down
es2d = ((close[2]-open[2])>0 and (open-close)>0 and (open[1]-close[1])>=0 and (close[2]-open[2])>(high[2]-close[2]) and (close[2]-open[2])>(open[2]-low[2]) and (open-close)>(high-open) and (open-close)>(close-low) and (open-close)>(open[1]-close[1]) and (close[2]-open[2])>(open[1]-close[1]) and close[1]>close[2] and close[1]>open and close[1]!=open[1] and escon == true) 
plotshape(es2d, style=shape.arrowdown,location=location.abovebar, text="Evening  X2", color=red)

//Bullish Engulfing
beu = (open[1]-close[1])>0 and (close-open)>0 and high>high[1] and low<low[1] and (close-open)>(open[1]-close[1]) and (close-open)>(high-close) and (close-open)>(open-low) and econ == true
plotshape(beu, style=shape.arrowup,location=location.belowbar, text="Engulfing", color=green)

//Bearish Engulfing
bed = (close[1]-open[1])>0 and (open-close)>0 and high>high[1] and low<low[1] and (open-close)>(close[1]-open[1]) and (open-close)>(high-open) and (open-close)>(close-low) and econ == true
plotshape(bed, style=shape.arrowdown,location=location.abovebar, text="Engulfing", color=red)

//Bullish Hammer Up
bhu1 = (close-open)>0 and ((close-open)/3)>(high-close) and ((open-low)/2)>(close-open) and (close-open)>((open-low)/8) and hcon == true
plotshape(bhu1, style=shape.arrowup,location=location.belowbar, text="Hammer", color=green)

//Bearish Hammer Up
bhu2 = (open-close)>0 and ((open-close)/3)>(high-open) and ((close-low)/2)>(open-close) and (open-close)>((close-low)/8) and hcon == true
plotshape(bhu2, style=shape.arrowup,location=location.belowbar, text="Hammer", color=green)

//Bullish Falling Star
bfs1 = (close-open)>0 and ((close-open)/3)>(open-low) and ((high-close)/2)>(close-open) and (close-open)>((high-close)/8) and fscon == true
plotshape(bfs1, style=shape.arrowdown,location=location.abovebar, text="Falling Star", color=red)

//Bearish Falling Star
bfs2 = (open-close)>0 and ((open-close)/3)>(close-low) and ((high-open)/2)>(open-close) and (open-close)>((high-open)/8) and fscon == true
plotshape(bfs2, style=shape.arrowdown,location=location.abovebar, text="Falling Star", color=red)

//Declaring the buy signals
buy = (dragondojibear == true and gravedojicon == true) or (dragondojibull == true and gravedojicon == true) or (tws == true and tbctwscon == true) or (tlsu == true and tlscon == true) or (pu == true and pcon == true) or (ms1u == true and mscon == true) or (ms2u == true and mscon == true) or (beu == true and econ == true) or (bhu1 == true and hcon == true) or (bhu2 == true and hcon == true)

//Declaring the sell signals
sell = (gravedojibear == true and gravedojicon == true) or (gravedojibull == true and gravedojicon == true) or (tbc == true and tbctwscon == true) or (tlsd == true and tlscon == true) or (dc == true and pcon == true) or (es1d == true and escon == true) or (es2d == true and escon == true) or (bed == true and econ == true) or (bfs1 == true and fscon == true) or (bfs2 == true and fscon == true)

//Execute historic backtesting
ordersize = floor(strategy.equity/close) // To dynamically calculate the order size as the account equity increases or decreases.
strategy.entry("long",strategy.long,ordersize,when=buy) // Buy 
strategy.close("long", when=sell) //Sell