Estrategia de tendencia del volumen de precios

El autor:¿ Qué pasa?, Fecha: 2023-12-25 13:09:48
Las etiquetas:

img

Resumen general

Esta estrategia utiliza indicadores de impulso para rastrear los movimientos de precios a corto plazo y determinar las direcciones de tendencia del mercado para las operaciones de compra y venta.

Principios

La estrategia primero calcula el impulso de los precios. Al calcular la diferencia entre el precio del período actual y el precio del período anterior, puede reflejar el cambio absoluto en los precios durante el último período. Un valor positivo indica un aumento de precios y un valor negativo indica una disminución de precios. Luego se calcula el promedio móvil de este valor de diferencia para filtrar para obtener el indicador de impulso promedio.

Cuando el último precio es mayor que el impulso promedio, indica que el precio está subiendo. Cuando el último precio es menor que el impulso promedio, indica que el precio está cayendo. Determine la dirección de la tendencia del precio basada en este indicador. Combinado con el filtrado de amplificación de volumen, solo se seleccionan señales con volúmenes comerciales relativamente grandes en la negociación real.

De acuerdo con las tendencias de precios al alza y a la baja identificadas, se realizan operaciones de compra y venta correspondientes.

Análisis de ventajas

  • La estrategia juzga las tendencias rápidamente y puede capturar rápidamente los movimientos de precios a corto plazo, lo que es adecuado para operaciones a corto plazo
  • Evite ser engañado por falsos brotes a través del filtrado de volumen
  • Implementó la lógica operativa de perseguir las subidas y matar las caídas
  • Alta frecuencia de negociación, adecuada para inversores agresivos

Análisis de riesgos

  • Variación de las tasas de interés de los activos en el mercado
  • Riesgos de deslizamiento causados por operaciones frecuentes
  • Puede perderse las tendencias a medio y largo plazo, y es necesario verificar la rentabilidad a largo plazo

Direcciones de optimización

  • Ajustar los parámetros de los indicadores de impulso para optimizar los efectos de juicio
  • Optimizar los parámetros de filtración de volumen para mejorar la calidad de la señal
  • Aumentar los mecanismos de stop-loss para controlar las pérdidas individuales
  • Incorporar más factores para garantizar que la

Conclusión

La estrategia en general rastrea las tendencias de cambio de precios a corto plazo a través de indicadores de impulso, y determina rápidamente el momento de entrada y salida. Las ventajas son la operación rápida, perseguir subidas y matar caídas. Las desventajas son la calidad de la señal y la rentabilidad a largo plazo deben examinarse. A través de ajustes de parámetros y mecanismos de control de riesgos mejorados, la estrategia puede convertirse en un componente importante de las estrategias de alta frecuencia, combinadas con otras estrategias de baja frecuencia.


/*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())








Más.