Estrategia de identificación de tendencias MyQuant


Fecha de creación: 2024-02-22 16:04:04 Última modificación: 2024-02-22 16:04:04
Copiar: 2 Número de Visitas: 633
1
Seguir
1617
Seguidores

Estrategia de identificación de tendencias MyQuant

Descripción general

La estrategia de identificación de tendencias de MyQuant es una estrategia utilizada para el comercio diario de Bitcoin. La estrategia identifica las tendencias del mercado mediante el cálculo de la media móvil del precio y sus derivados de primera y segunda fase, y toma decisiones de compra y venta en función de ello.

Principio de estrategia

La estrategia primero calcula el promedio móvil adaptado del precio (ALMA) y sus derivados de primera y segunda clase. El derivado de primera clase refleja la velocidad de cambio del precio, el derivado de segunda clase refleja la curva del precio. Según los valores de los derivados de primera y segunda clase, se determina si el precio se encuentra actualmente en una tendencia alcista, descendente o oscilante.

En concreto, la estrategia calcula los siguientes indicadores:

  • ALMA: promedio móvil adaptado del precio, longitud 140, factor rápido 1.1, sigma 6
  • dema: Directrices de la primera fase de ALMA
  • d2ema: derivado de primera clase de dema que refleja el derivado de segunda clase de precio
  • index: índice de oscilación del índice dema
  • ind: índice de desviación de los precios de la línea media

Cuando se cumplen las condiciones de compra, se calcula el número de acciones compradas según las señales CAUSED.Accumulation/Distribution Bands y Caused Exposure Top and Bottom Finder. Cuando se cumplen las condiciones de venta, se vende toda la posición.

Ventajas estratégicas

La estrategia combina la tendencia y el juicio del indicador, que permite identificar eficazmente el punto de inflexión de la tendencia del mercado. El uso de los derivados de primera y segunda clase de precios para juzgar la tendencia, evitar el impacto de la oscilación de precios, para que la señal sea más clara. En comparación con la estrategia de promedio móvil común, tiene una mayor precisión de juicio.

Análisis de riesgos

La estrategia es muy sensible a la elección del período de negociación y al ajuste de los parámetros. Si se elige mal el período de tiempo, no se cubren los puntos de inflexión importantes en el precio, lo que puede causar una mala eficacia de la estrategia. Si el parámetro del indicador no se ajusta correctamente, la señal de compra y venta se verá afectada por más ruido, lo que afectará a los beneficios de la estrategia.

Dirección de optimización

La estrategia se puede optimizar aún más en los siguientes aspectos:

  1. Optimización de la lógica de selección de períodos de tiempo, mediante una selección más inteligente de los períodos de retrospectiva y de negociación en disco.
  2. Parámetros de optimización del indicador, como ajustar la longitud de ALMA y dema.
  3. Aumentar el juicio de las condiciones de parada para controlar el máximo de pérdidas.
  4. Evaluar el rendimiento de las diferentes criptomonedas y seleccionar las que mejor funcionan.

Resumir

La estrategia de identificación de tendencias de MyQuant identifica eficazmente las tendencias del mercado de Bitcoin mediante el cálculo de derivados de primera y segunda clase de las medias móviles adaptadas al precio y toma decisiones de compra y venta correspondientes. La estrategia se juzga en combinación con varios indicadores y evita que la señal sea interrumpida por exceso de ruido. La eficacia de la estrategia se puede mejorar con una optimización adicional de tiempo y parámetros.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 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/
// © spacekadet17
// 
//@version=5

strategy(title="Trend Identifier Strategy", shorttitle="Trend Identifier Strategy", format=format.price, precision=4, overlay = false, initial_capital = 1000, pyramiding = 10, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.03)

//start-end time
startyear = input.int(2020,"start year")
startmonth = input.int(1,"start month")
startday = input.int(1,"start day")
endyear = input.int(2025,"end year")
endmonth = input.int(1,"end month")
endday = input.int(1,"end day")

timeEnd = time <= timestamp(syminfo.timezone,endyear,endmonth,endday,0,0)
timeStart = time >= timestamp(syminfo.timezone,startyear,startmonth,startday,0,0)
choosetime = input(false,"Choose Time Interval")
condTime = (choosetime ? (timeStart and timeEnd) : true)

// time frame?
tfc = 1
if timeframe.isdaily
    tfc := 24

// indicators: price normalized alma, and its 1st and 2nd derivatives
ema = ta.alma(close,140,1.1,6)
dema = (ema-ema[1])/ema
stodema = ta.ema(ta.ema(ta.stoch(dema,dema,dema,100),3),3)

d2ema = ta.ema(dema-dema[1],5)
stod2ema = ta.ema(ta.ema(ta.stoch(d2ema,d2ema,d2ema,100),3),3)

ind = (close-ta.ema(close,120*24/tfc))/close
heat = ta.ema(ta.stoch(ind,ind,ind,120*24/tfc),3)
index = ta.ema(heat,7*24/tfc)

//plot graph
green = color.rgb(20,255,100)
yellow = color.yellow
red = color.red
blue = color.rgb(20,120,255)
tcolor = (dema>0) and (d2ema>0)? green : (dema>0) and (d2ema<0) ? yellow : (dema < 0) and (d2ema<0) ? red : (dema < 0) and (d2ema>0) ? blue : color.black
demaema = ta.ema(dema,21)
plot(demaema, color = tcolor)

//strategy buy-sell conditions
cond1a = strategy.position_size <= 0
cond1b = strategy.position_size > 0

if (condTime and cond1a and ( ( ((tcolor[1] == red and demaema<0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == yellow and demaema>-0.02) ) and tcolor == green) or (tcolor[1] == red and tcolor == blue and demaema < -0.01) ) and index<85 and ind<0.4)
    strategy.entry("buy",strategy.long, (strategy.equity-strategy.position_size*close)/1/close)
    
if (condTime and cond1b and ( (((tcolor[1] == yellow and demaema > -0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == green and demaema < 0.02)) and tcolor == red) or (tcolor[1] == green and tcolor == yellow and demaema > 0.015) ) and index>15 and ind>-0.1)
    strategy.order("sell",strategy.short, strategy.position_size)