Estrategia de negociación con oscilador de números primos

El autor:¿ Qué pasa?, fecha: 2023-11-02 14:42:22
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el indicador del oscilador de números primos para determinar las tendencias del mercado y construir posiciones largas / cortas en consecuencia. El PNO calcula la diferencia entre el número primo más cercano al precio y el precio en sí, con valores positivos que indican tendencias alcistas y valores negativos que indican tendencias bajistas.

Estrategia lógica

La estrategia primero define una función PrimeNumberOscillator que toma el precio y permitidoPercent como parámetros. La función busca el número primo más cercano al precio dentro del rango permitidoPercent y devuelve su diferencia. Una diferencia positiva indica alcista y una diferencia negativa indica bajista.

En la estrategia, la función PrimeNumberOscillator se llama para calcular el valor de xPNO. La dirección de la posición se determina por el signo de xPNO y se multiplica por el factor inverso para obtener la dirección final del comercio. Las posiciones largas / cortas se abren en función de la dirección.

La estrategia se basa principalmente en el indicador PNO para la dirección de la tendencia. El indicador en sí es bastante crudo y debe combinarse con otros factores para la verificación de la señal. Pero se basa en principios matemáticos y puede proporcionar alguna orientación objetiva.

Análisis de ventajas

  • Basado en principios matemáticos, relativamente objetivo
  • Puede identificar tendencias ocultas en las oscilaciones
  • Ajuste flexible de parámetros para el ajuste de la sensibilidad
  • Sencillo de implementar, fácil de entender y optimizar

Análisis de riesgos

  • El PNO en sí es crudo, propenso a múltiples señales falsas.
  • Necesita verificación a partir de otros indicadores técnicos, no puede utilizarse solo
  • Se necesita una selección cuidadosa de parámetros, demasiado grande o pequeño fallará
  • Frecuencia de negociación alta, necesidades de control del tamaño de las posiciones

Direcciones de optimización

  • Añadir filtros como promedio móvil, RSI para la verificación de la señal
  • Implementar el stop loss para limitar el riesgo a la baja
  • Ajuste dinámico permitidoPorcentaje basado en las condiciones del mercado
  • Optimizar el tamaño de las posiciones mediante la volatilidad y otras métricas

Conclusión

La estrategia determina la dirección de la tendencia basada en los principios de oscilación de números primos, con lógica e implementación simples. Pero PNO tiene limitaciones que requieren un uso cauteloso. Se necesita combinar otros indicadores técnicos para verificar señales y controlar el riesgo. Como un representante típico de las estrategias de negociación matemáticas, tiene valor de referencia para el estudio y la investigación.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/03/2018
// Determining market trends has become a science even though a high number or people 
// still believe it’s a gambling game. Mathematicians, technicians, brokers and investors 
// have worked together in developing quite several indicators to help them better understand 
// and forecast market movements.
//
// Developed by Modulus Financial Engineering Inc., the prime number oscillator indicates the 
// nearest prime number, be it at the top or the bottom of the series, and outlines the 
// difference between that prime number and the respective series.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
PrimeNumberOscillator(price, percent) =>
    res = 0
    res1 = 0
    res2 = 0
    for j = price to price + (price * percent / 100)
        res1 := j
	    for i = 2 to sqrt(price)
        	res1 := iff(j % i == 0 , 0, j)
            if res1 == 0 
                break
		if res1 > 0 
		    break
    for j = price to price - (price * percent / 100)
        res2 := j
	    for i = 2 to sqrt(price)
        	res2 := iff(j % i == 0 , 0, j)
            if res2 == 0 
                break
		if res2 > 0 
		    break
    res := iff(res1 - price < price - res2,  res1 - price, res2 - price)
    res := iff(res == 0, res[1], res)
    res
    
strategy(title="Prime Number Oscillator Backtest")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
reverse = input(false, title="Trade reverse")
xPNO = PrimeNumberOscillator(close, percent)
pos = iff(xPNO > 0, 1,
       iff(xPNO < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
clr = iff(xPNO > 0, green, red)
p1 = plot(xPNO, color=blue, title="KPO")
p2 = plot(0, color=black, title="0")
fill(p1,p2,color=clr)

Más.