Stratégie de test arrière des bandes de nombres premiers

Auteur:ChaoZhang est là., Date: 2024-01-08 11:54:52 Le projet de loi est en cours d'adoption.
Les étiquettes:

img

Résumé

La stratégie de backtest des bandes de nombres premiers évalue les tendances du marché en identifiant les nombres premiers les plus élevés et les plus bas autour d'un prix et en traçant ces deux séries de nombres premiers comme une bande.

La logique de la stratégie

  1. Traversez une plage de fluctuations de prix spécifiée basée sur le pourcentage de tolérance d'entrée pour trouver les nombres premiers les plus élevés et les plus bas.
  2. Utilisez les fonctions supérieure et inférieure pour obtenir les points supérieur et inférieur des bandes de nombres premiers dans les N bars les plus récents.
  3. Déterminez la direction longue ou courte en fonction de la rupture du prix de clôture entre les points les plus élevés et les plus bas des bandes de nombres premiers.
  4. Peut choisir d'inverser les signaux de trading.

Analyse des avantages

  1. Capturez le hasard du marché en utilisant les caractéristiques de distribution aléatoire et irrégulière des nombres premiers.
  2. Les bandes de nombres premiers ont un certain retard, ce qui peut filtrer un peu de bruit.
  3. Les limites supérieures et inférieures des bandes de nombres premiers sont flexibles et peuvent être ajustées au moyen du pourcentage de tolérance pour s'adapter à différents cycles et à différentes variétés de négociation.

Analyse des risques

  1. Les bandes de nombres premiers ne peuvent pas s'adapter complètement au mouvement des prix et ont un certain degré de retard.
  2. Les renversements de prix dus à des extrêmes pourraient conduire à de faux signaux.
  3. Des paramètres de pourcentage de tolérance excessifs filtrent certains signaux valides.

Les risques peuvent être évités en ajustant correctement les paramètres, en les combinant avec d'autres indicateurs, etc.

Directions d'optimisation

  1. Mettre en place des conditions doubles pour déclencher les signaux en combinant des moyennes mobiles simples et d'autres indicateurs.
  2. Recherchez l'utilisation d'autres nombres aléatoires tels que les nombres de Fibonacci.
  3. Introduire des algorithmes d'apprentissage automatique pour obtenir une optimisation automatique des paramètres.

Résumé

La stratégie de backtest des bandes de nombres premiers est globalement une stratégie très innovante avec une valeur pratique. Elle utilise les caractéristiques des nombres premiers pour capturer le hasard du marché tout en tenant compte du décalage des prix pour identifier les tendances, ce qui est très utile pour la recherche.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/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.
// The Prime Number Bands indicator was developed by Modulus Financial Engineering 
// Inc. This indicator is charted by indentifying the highest and lowest prime number 
// in the neighborhood and plotting the two series as a band.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
PrimeNumberUpBand(price, percent) =>
    res = 0
    res1 = 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
    res := iff(res1 == 0, res[1], res1)
    res

PrimeNumberDnBand(price, percent) =>
    res = 0
    res2 = 0
    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(res2 == 0, res[1], res2)
    res

strategy(title="Prime Number Bands Backtest", overlay = true)
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
Length = input(5, minval=1)
srcUp = input(title="Source Up Band",  defval=high)
srcDn = input(title="Source Down Band",  defval=low)
reverse = input(false, title="Trade reverse")
xPNUB = PrimeNumberUpBand(srcUp, percent)
xPNDB = PrimeNumberDnBand(srcDn, percent)
xHighestPNUB = highest(xPNUB, Length)
xLowestPNUB = lowest(xPNDB, Length)
pos = iff(close > xHighestPNUB[1], 1,
       iff(close < xLowestPNUB[1], -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 ) 
plot(xHighestPNUB, color=red, title="PNUp")
plot(xLowestPNUB, color=green, title="PNDn")

Plus de