A estratégia de negociação de sombra identifica a linha K com longas sombras inferiores ou superiores para determinar oportunidades potenciais de reversão do mercado. Ela fica longa quando uma sombra inferior longa é identificada e fica curta quando uma sombra superior longa é identificada.
A lógica central da estratégia de negociação de sombras é identificar sombras longas superiores e inferiores em linhas K. A estratégia calcula o tamanho do corpo da linha K.corpo
E as sombras,pinnaL
epinnaS
Quando o tamanho da sombra é maior do que o tamanho do corpo por um certo multiplicador, considera que pode haver oportunidades de reversão.
corpo
, que é o valor absoluto da diferença entre o preço de abertura e o preço de fechamento.pinnaL
, que é o valor absoluto da diferença entre o preço mais alto e o preço de fechamento.pinnaS
, que é o valor absoluto da diferença entre o preço mais baixo e o preço de fechamento.pinnaL > (corpo*size)
, ondesize
é um parâmetro ajustável.pinnaS > (corpo*size)
.Além disso, a estratégia verifica também se o intervalo da linha Kdim
É superior ao valor mínimomin
Para filtrar K-linhas triviais com um intervalo insignificante.
A estratégia de negociação de sombra é uma estratégia de negociação de curto prazo simples e prática. Ela gera sinais de negociação usando o princípio geral de reversões de sombra. A lógica da estratégia é simples e fácil de implementar, e pode ser ajustada e otimizada de acordo com as diferenças de produto. Ao mesmo tempo, a negociação de sombra também carrega certos riscos.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-11 23:59:59 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Shadow Trading", overlay=true) size = input(1,type=float) pinnaL = abs(high - close) pinnaS = abs(low-close) scarto = input(title="Tail Tollerance", type=float, defval=0.0018) corpo = abs(close - open) dim = abs(high-low) min = input(0.001) shortE = (open + dim) longE = (open - dim) barcolor(dim > min and (close > open) and (pinnaL > (corpo*size)) and (open-low<scarto) ? navy : na) longcond = (dim > min) and (close > open) and (pinnaL > (corpo*size)) and (open-low<scarto) minimo=low+scarto massimo=high+scarto barcolor( dim > min and(close < open) and (pinnaS > (corpo*size)) and (high-open<scarto) ? orange: na) shortcond = (dim > min) and(close < open) and (pinnaS > (corpo*size)) and (high-open<scarto) //plot(shortE) //plot(longE) //plot(open) ss= shortcond ? close : na ll=longcond ? close : na offset= input(0.00000) DayClose = 2 closup = barssince(change(strategy.opentrades)>0) >= DayClose longCondition = (close > open) and (pinnaL > (corpo*size)) and (open-low<scarto) crossFlag = longcond ? 1 : 0 monthBegin = input(1,maxval = 12) yearBegin = input(2013, maxval= 2015, minval=2000) if(month(time)>monthBegin and year(time) >yearBegin) if (longcond) strategy.entry("short", strategy.short, stop = low - offset) //strategy.close("short", when = closup) shortCondition = (close < open) and (pinnaS > (corpo*size)) and (high-open<scarto) if(month(time)>monthBegin and year(time) >yearBegin) if (shortcond) strategy.entry("long", strategy.long, stop = high + offset) //strategy.close("long", when = closup) Target = input(20) Stop = input(70) //- 2 Trailing = input(0) CQ = 100 TPP = (Target > 0) ? Target*10: na SLP = (Stop > 0) ? Stop*10 : na TSP = (Trailing > 0) ? Trailing : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)