Handelsstrategie für Primzahl-Oszillatoren

Schriftsteller:ChaoZhang, Datum: 2023-11-02 14:42:22
Tags:

img

Übersicht

Diese Strategie verwendet den Prime Number Oscillator Indikator, um Markttrends zu bestimmen und entsprechend Long/Short Positionen zu konstruieren. Die PNO berechnet die Differenz zwischen der nächstgelegenen Primzahl zum Preis und dem Preis selbst, mit positiven Werten, die auf bullische Trends hinweisen, und negativen Werten, die auf bärische Trends hinweisen.

Strategie Logik

Die Strategie definiert zunächst eine PrimeNumberOscillator-Funktion, die Preis und allowedPercent als Parameter annimmt. Die Funktion sucht nach der nächstgelegenen Primzahl zum Preis innerhalb des allowedPercent-Bereichs und gibt ihre Differenz zurück. Eine positive Differenz zeigt bullish und eine negative Differenz zeigt bearish an.

In der Strategie wird die PrimeNumberOscillator-Funktion aufgerufen, um den xPNO-Wert zu berechnen. Die Positionsrichtung wird durch das Zeichen von xPNO bestimmt und mit dem ReverseFactor multipliziert, um die endgültige Handelsrichtung zu erhalten.

Die Strategie stützt sich hauptsächlich auf den PNO-Indikator für die Trendrichtung. Der Indikator selbst ist ziemlich roh und muss mit anderen Faktoren für die Signalverifizierung kombiniert werden.

Analyse der Vorteile

  • Auf mathematischen Prinzipien, relativ objektiven
  • Kann in Schwingungen verborgene Trends erkennen
  • Flexible Einstellung der Parameter zur Anpassung der Empfindlichkeit
  • Einfach umzusetzen, leicht zu verstehen und zu optimieren

Risikoanalyse

  • Das PNO selbst ist roh, anfällig für mehrere falsche Signale.
  • Bedarf an Überprüfung anhand anderer technischer Indikatoren, kann nicht allein verwendet werden
  • Sorgfältige Parameterwahl erforderlich, zu groß oder zu klein wird fehlschlagen
  • Hohe Handelsfrequenz, Kontrolle der Positionsgrößenanforderungen

Optimierungsrichtlinien

  • Fügen Sie Filter wie gleitenden Durchschnitt, RSI für die Signalüberprüfung
  • Einführung von Stop-Loss zur Begrenzung des Abwärtsrisikos
  • Dynamische Anpassung zulässigProzent je nach Marktbedingungen
  • Optimierung der Positionsgröße durch Volatilität und andere Kennzahlen

Schlussfolgerung

Die Strategie bestimmt die Trendrichtung basierend auf Primzahl-Oszillationsprinzipien, mit einfacher Logik und Implementierung. PNO hat jedoch Einschränkungen, die eine vorsichtige Verwendung erfordern. Es ist notwendig, andere technische Indikatoren zu kombinieren, um Signale zu überprüfen und das Risiko zu kontrollieren. Als typischer Vertreter mathematischer Handelsstrategien hat es einen Referenzwert für Studie und Forschung.


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

Mehr