Estratégia de tendência do volume de preços

Autora:ChaoZhang, Data: 2023-12-25 13:09:48
Tags:

img

Resumo

Esta estratégia utiliza indicadores de momento para rastrear os movimentos de preços a curto prazo e determinar as direções da tendência do mercado para as operações de compra e venda.

Princípios

A estratégia primeiro calcula o ímpeto dos preços. Ao calcular a diferença entre o preço do período atual e o preço do período anterior, pode refletir a mudança absoluta nos preços no último período. Um valor positivo indica um aumento de preço e um valor negativo indica uma diminuição de preço. Em seguida, a média móvel desse valor de diferença é calculada para filtragem para obter o indicador de ímpeto médio.

Quando o último preço é maior que o momento médio, ele indica que o preço está subindo. Quando o último preço é menor que o momento médio, ele indica que o preço está caindo. Determine a direção da tendência do preço com base neste indicador. Combinado com a filtragem de amplificação de volume, apenas sinais com volumes de negociação relativamente grandes são selecionados na negociação real.

De acordo com as tendências ascendentes e descendentes de preços identificadas, são realizadas operações de compra e venda correspondentes.

Análise das vantagens

  • A estratégia julga as tendências rapidamente e pode capturar rapidamente os movimentos de preços a curto prazo, o que é adequado para operações a curto prazo
  • Evite ser enganado por falsas breakouts através de filtragem de volume
  • Implementou a lógica operacional de perseguir as subidas e matar as quedas
  • Frequência de negociação elevada, adequada para investidores agressivos

Análise de riscos

  • Vulnerável ao impacto de flutuações anormais do mercado, com certos riscos de sinal falso
  • Riscos de deslizamento causados por negociações frequentes
  • Pode perder as tendências a médio e longo prazo e a rentabilidade a longo prazo deve ser verificada

Orientações de otimização

  • Ajustar os parâmetros dos indicadores de momento para otimizar os efeitos de julgamento
  • Otimizar os parâmetros de filtragem de volume para melhorar a qualidade do sinal
  • Aumentar os mecanismos de stop-loss para controlar perdas únicas
  • Incorporar mais fatores para garantir uma

Conclusão

A estratégia global rastreia as tendências de mudança de preço a curto prazo através de indicadores de impulso e determina rapidamente o tempo de entrada e saída. As vantagens são a operação rápida, perseguindo subidas e matando quedas. As desvantagens são a qualidade do sinal e a rentabilidade a longo prazo precisam ser examinadas. Através de ajustes de parâmetros e mecanismos aprimorados de controle de risco, a estratégia pode se tornar um componente importante das estratégias de alta frequência, combinada com outras estratégias de baixa frequência.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © russtic

//@version=2

strategy("HA smoothed eliminator v2  ",pyramiding=1, slippage=10, default_qty_type=strategy.percent_of_equity, 
     commission_type=strategy.commission.percent, commission_value=0.075, overlay=true, 
     default_qty_value=100, initial_capital=1000)

FromMonth1 = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay1 = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear1 = input(defval=2019, title="From Year", minval=2010)
ToMonth1 = input(defval=12, title="To Month", minval=1, maxval=12)
ToDay1 = input(defval=31, title="To Day", minval=1, maxval=31)
ToYear1 = input(defval=2020, title="To Year", minval=2010)
start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00)
finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)
window1() => true
    
t1 = time(timeframe.period, "0300-1200")
t2 = time(timeframe.period, "0930-1700")
London = na(t1) ? na : green
NY = na(t2) ? na : red

bgcolor(London, title="London")
bgcolor(NY, title="New York")
///////////////////////////
// HA smoothed

len=(1 )
o=ema(open,len)
c=ema(close,len)
h=ema(high,len)
l=ema(low,len)

haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))

len2=(len)
o2=ema(haopen, len2)
c2=ema(haclose, len2)
h2=ema(hahigh, len2)
l2=ema(halow, len2)

buy= (o2<c2) 

closebuy= (o2>c2)

sell= (o2>c2)

closesell= (o2<c2)

//
/// END NEW SCRIPT 

//
//
//                  MERGE SCRIPTS
a1= o2<c2
b1=o2>c2
is_uptrend = (a1)// and (p> 0)
is_downtrend =  (b1)// and (p <0)
barcolor(b1 ? red: a1 ? lime : blue)

//end


// =========================start     PVT -GIVES EACH BAR A VALUE
facton = (true)//, title="arrow elimination (factor) on ")
Length1 = 2//input(2, title="PVT Length", minval=1)

xPrice = close//input(title="Source", type=source, defval=close)
xsma = wma(xPrice, Length1) 
nRes = xPrice - xsma  
pos = iff(nRes > 0, 1,
	     iff(nRes < 0, -1, nz(pos[1], 0))) 
forex= input(true, title = 'strength toggle ')
forexyes = (forex == true)? 10000 : (forex == false)? 1: na

plot(nRes*forexyes , color=aqua, title="strength", transp=100)
// =========================         end pvt
//
//=============================     start factor // ELIMINATES  weak signals
//                  start trend
//
factor = input(600.00, title = "strength elimination") 
factor1 = factor - (factor*2)//input(-100.00, title = "sell strength elimination ") 
facton1 = (facton == true) and is_uptrend == 1 and nRes*forexyes>factor ? 1 : (facton == true) and is_downtrend == 1 and nRes*forexyes<factor1 ? -1 : (facton == false)
// ==================== =====
// 
//===========================    end factor
nRestrend = (nRes*forexyes)
//=========================== plot arrows 
plot1 = iff(is_uptrend[1] == 1, 0 , 1)  
plot2 = iff(is_downtrend[1]  == 1, 0 , 1)
uparrowcond =  is_downtrend ? false : nz(uparrowcond[1], false) == true ? uparrowcond[1] : (facton1 and is_uptrend and nRes*forexyes>factor)
downarrowcond =  is_uptrend ? false : nz(downarrowcond[1], false) == true ? downarrowcond[1] : (facton1 and is_downtrend and nRes*forexyes<factor1)
//prevarrowstate = uparrowcond  ? 1 : downarrowcond ? -1 : nz(prevarrowstate[1], 0)


candledir = (open < close)? 1: (open>close)? -1 : na // ONLY OPENS ON SAME BAR DIRECTION AS SIGNAL



up=nz(uparrowcond[1], false) == false and ( is_uptrend and nRes*forexyes>factor) and candledir ? 1:na
dn=nz(downarrowcond[1], false) == false and ( is_downtrend and nRes*forexyes<factor1) and candledir? -1:na



sig=0
if up==1 
    sig:=1
else
    if dn==-1
        sig:=-1
    else
        sig:=sig[1]
plotarrow(sig[1]!=1 and sig==1?1:na, title="BUY ARROW", colorup=lime, maxheight=80, minheight=50, transp=0)// up arrow 
plotarrow(sig[1]!=-1 and sig==-1?-1:na, title="SELL ARROW", colordown=red, maxheight=80, minheight=50, transp=0)// down arrow

//========================= alert condition
alertcondition(sig[1]!=1 and sig==1?1:na, title="BUY eliminator", message="BUY " ) 
alertcondition(sig[1]!=-1 and sig==-1?-1:na, title="SELL eliminator",  message="SELL ") 


strategy.entry("B", true, when=(sig[1]!=1 and sig==1?1:na) and window1())
strategy.entry("S", false,when=(sig[1]!=-1 and sig==-1?-1:na) and window1())








Mais.