Esta estratégia é uma estratégia de acompanhamento de tendências que gera sinais de negociação em zonas sem resistência, calculando o tempo de permanência dos preços em diferentes áreas e determinando se os preços entram em novas zonas sem resistência.
Calcula a proporção de preços que ficaram perto dos níveis atuais nos últimos N ciclos como a medida de atrito.
O preço entrou ou não numa zona de baixo atrito, onde pouco permaneceu durante um período de tempo, como uma zona sem resistência que gerava um sinal.
Utilize a média móvel de alta ponderação para determinar a direção da tendência mais recente e negocie a tendência quando ocorrer uma ruptura na zona sem resistência.
Quando o preço entra novamente na zona de alta fricção, o prontuário inverte a tendência para a saída da paralisação.
Os parâmetros de transação podem ser personalizados, incluindo o ciclo de julgamento da zona de fricção, a entrada na zona de ruptura, etc.
Utilize a fricção do preço para determinar a zona de resistência e evite a zona de choque.
A linha média rápida acompanha as tendências mais recentes, combinando o uso de direções de julgamento.
Uma interface visual intuitiva que mostra as áreas de fricção entre os preços.
Os parâmetros padrão são otimizados para transações de alta frequência de criptomoedas.
As regras da política são simples, claras, fáceis de entender e modificar.
O grau de fricção não prevê a evolução dos preços.
A linha média rápida pode não ser exata.
Não é possível entrar e sair do mercado de forma eficiente.
Pode haver um risco de sobre-ajuste na otimização.
Os parâmetros fixos podem não ser tão eficazes quando o mercado está em alta.
Teste os parâmetros de diferentes períodos para calcular a fricção de preços.
Avaliação de tendências recentes em diferentes tipos de medias.
Otimizar os parâmetros de ruptura da zona sem resistência para aumentar a estabilidade da estratégia.
Adição de estratégias de stop loss e gestão do risco de transação.
Considere a adoção de parâmetros dinâmicos para se adaptar às mudanças do mercado.
Revisão e validação em mais variedades e ciclos.
A estratégia de encontrar uma zona de alta probabilidade de ruptura de tendência através do grau de atrito de preços para a negociação, tem uma certa vantagem. Mas também há limitações de parâmetros fixos. A estratégia pode ser criada mais estável e eficiente através de mecanismos de otimização de parâmetros dinâmicos, gerenciamento de risco e outros.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//made for 30m chart with BTCUSD or other cryptocurrency
strategy("LUBE",overlay=false )
friction=0.0
barsback=input(500,"bars back to measure friction",step=100)
flevel=input(50,"0-100 friction level to stop trade",step=2)
tlevel=input(-10,"pic lower than 0 to number selected above to initiate trade",step=2)
fl=flevel/100
tl=tlevel/100
for i = 1 to barsback
friction := if high[i] >= close and low[i] <= close
friction+(1+barsback)/(i+barsback)
else
friction
range=input(100,"bars back to measure lowest friction",step=10)
lowf = lowest(friction,range)
highf = highest(friction,range)
midf = (lowf*(1-fl)+highf*fl)
lowf2 = (lowf*(1-tl)+highf*tl)
plot(friction)
m=plot(midf[5],color=color.red)
l=plot(lowf2[5],color=color.white)
h=plot(highf[5],color=color.white)
fill(l,h,color.white)
src = input(title="Source", type=input.source, defval=close)
//FIR Filter
_fir(src) =>
(4 * src + 3 * nz(src[1]) + 2 * nz(src[2]) + nz(src[3])) / 10
fir = _fir(src)
trend = fir > fir[1]? 1:-1
//bgcolor(trend==1?color.lime:color.red,transp=50)
long=friction<lowf2[5] and trend == 1
short=friction<lowf2[5] and trend == -1
end=friction > midf[5]
keeplong=0
keeplong:=long?1:nz(keeplong[1])
keeplong:=short or end?0:keeplong
keepshort=0
keepshort:=short?1:nz(keepshort[1])
keepshort:=long or end?0:keepshort
bgcolor(keeplong==1?color.lime:keepshort==1?color.red:na,transp=50)
leverage=input(2,"leverage",step=.5)
enableshort=input(true,"enable shorts?")
barcount=0
barcount:=nz(barcount[1])+1
contracts=min(max(.000001,(strategy.equity/close)*leverage),50000)
strategy.entry("Long",strategy.long,when=long and barcount>20, qty=contracts)
strategy.close("Long",when=short or end )
strategy.entry("Short",strategy.short,when=short and enableshort==true and barcount>20, qty=contracts)
strategy.close("Short",when=(long or end) and enableshort==true)
alertcondition(keeplong==1 and keeplong[1]==0,"LONG")
alertcondition(keepshort==1 and keepshort[1]==0,"SHORT")
alertcondition((keeplong[1]==1 or keepshort[1]==1) and (keeplong==0 and keepshort==0),"CLOSE TRADE")