Estrategias comerciales basadas en el patrón pico a pico


Fecha de creación: 2024-02-20 15:40:58 Última modificación: 2024-02-20 15:40:58
Copiar: 0 Número de Visitas: 629
1
Seguir
1617
Seguidores

Estrategias comerciales basadas en el patrón pico a pico

Descripción general

Esta estrategia se llama estrategia de negociación basada en la forma de la cumbre de la cumbre, y utiliza principalmente la forma de la cumbre de la línea K para determinar el momento de comprar y vender. La estrategia pertenece a la clase de estrategias de análisis técnico.

Principio de estrategia

Esta estrategia determina la forma de la cumbre de un gráfico de línea K mediante la definición de un pico ascendente (upFractal) y un pico descendente (downFractal).

Concretamente, la lógica para juzgar el pico ascendente es: el punto más alto de la línea K actual es el punto más alto de la línea K más reciente de n raíces, y ningún punto más alto de la línea K posterior supera el punto más alto de la línea K actual.

La lógica para juzgar el pico descendente es: el punto más bajo de la línea K actual es el punto más bajo de la línea K de n raíz más reciente, y los puntos más bajos de la línea K posteriores no son inferiores al punto más bajo de la línea K actual.

Aquí, a través de variables y ciclos de Boole, se juzga la relación de las raíces n anteriores y posteriores de la línea K con el punto más alto y más bajo de la línea K actual, y finalmente se determina el pico ascendente y el pico descendente.

Por lo tanto, la lógica central de la estrategia es la siguiente:

  1. Para determinar los picos de subida y bajada
  2. Hacer más cuando el pico sube, hacer menos cuando el pico baja

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Las formas de los picos son fáciles de identificar y de manejar.
  2. Aprovechar la tecnología sin dejar de lado lo básico
  3. El retiro podría ser menor.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. El juez Peak Peak dijo que la forma no era precisa y que podría haber perdido el mejor momento para entrar.
  2. El stop loss puede ser difícil de determinar cuando las cosas cambian drásticamente.
  3. La forma es lo único que importa, y no hay otra cosa.

Respuesta:

  1. Ajustar los parámetros de la forma de la cumbre para optimizar la lógica de juicio
  2. Determinación de la posición de parada en combinación con otros indicadores
  3. Usado en combinación con análisis fundamental u otras estrategias

Dirección de optimización

La estrategia también puede ser optimizada en las siguientes direcciones:

  1. Aumentar el espacio de ajuste de parámetros y optimizar la forma de los picos
  2. Añadir la lógica de stop loss
  3. Tener en cuenta otros indicadores como volumen de operaciones o volatilidad
  4. Combinación de análisis de diferentes períodos de tiempo

Resumir

Esta estrategia se basa en el principio de la forma de la cumbre simple y fácil de operar, la retirada puede ser pequeña. Pero también existe cierto riesgo, que necesita ser utilizado en combinación con otros métodos de análisis para obtener el máximo efecto. El siguiente paso será mejorar en términos de precisión de juicio, detener los daños, optimización de indicadores, etc.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("sanju parmar", shorttitle="sanju trading empire", overlay=true)

// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Periods", defval=2, minval=2)

// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

plotshape(downFractal, style=shape.triangleup, location=location.belowbar, offset=-n, color=#18f523, size = size.small)
plotshape(upFractal, style=shape.triangledown, location=location.abovebar, offset=-n, color=#cf3d11, size = size.small)

// Strategy Conditions
longCondition = upFractal
shortCondition = downFractal

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
if (shortCondition)
    strategy.entry("Sell", strategy.short)