P-Signal Multi-Time Frame Handelsstrategie


Erstellungsdatum: 2023-11-28 16:32:36 zuletzt geändert: 2023-11-28 16:32:36
Kopie: 1 Klicks: 641
1
konzentrieren Sie sich auf
1619
Anhänger

P-Signal Multi-Time Frame Handelsstrategie

Überblick

Die P-Signal Multi-Time-Frame-Trading-Strategie ist eine auf statistischen Prinzipien basierende, in Kombination mit Multi-Time-Frame-Analysen arbeitende, algorithmische Handelsstrategie für digitale Währungen. Die Strategie nutzt die Gauss-Fehlerfunktion sowie die P-Signal-Index-Modellfit für die Bitcoin-Tag-, Kreis- und Mondlinie, um den Volatilitätskurs zu handeln.

Strategieprinzip

Der Kernindikator der P-Signal-Strategie ist das P-Signal, das die statistische Standarddifferenz und den einfachen Moving Average kombiniert und durch die Gauss-Fehlerfunktion in den Bereich von -1 bis 1 abgebildet wird, um zu erkennen, ob der Markt einer normalen Verteilung entspricht. Die spezifische Berechnungsformel lautet:

fErf(x) = 1.0 - 1.0/(1.0 + 0.5*abs(x)) * exp(-x*x - 1.26551223 + ...)  # 高斯误差函数

fPSignal(ser, n) = fErf((stdev(ser, n) > 0 ? sma(ser, n)/stdev(ser, n)/sqrt(2) : 1)) # P-Signal指标

Die Strategie berechnet die P-Signal-Indikatoren in den Zeitrahmen Sonnen-, Kreis- und Mondlinie, indem sie die Positionen auf der 0-Achse hoch und auf der 0-Achse niedrig hält. Gleichzeitig wird die Wiederholung der Positionen durch die Value-Value-Ventil-Kontrolle eingestellt.

Analyse der Stärken

Der größte Vorteil der P-Signal-Strategie besteht darin, dass mehrere Zeitrahmen zur Steigerung der Strategie verwendet werden. Die Tageslinie fängt kurzfristige Marktschwankungen auf und die Wochen-Monatslinie filtert die falschen Durchbrüche. Der P-Signal-Indikator selbst hat jedoch auch eine gewisse Vorhersagekraft, die die Schwankungen von Trendbewegungen verstärkt.

Im Vergleich zu einem einzigen Zeitrahmen können mehrere Zeitrahmen den Tagelinenstillstand bei Rückzugszeiten nutzen, während die Frequenz des Handels durch den Einsatz von hochgradigen Zeitrahmen bei Erschütterungen reduziert wird. Insgesamt kann diese Kombination die absoluten und relativen Rückzugszeiten maximieren, während die Gewinnspanne gewährleistet wird.

Risikoanalyse

Das größte Risiko der P-Signal-Strategie besteht darin, dass der Indikator selbst eine Black Box für quantitative Händler ist. Es ist schwierig zu bestimmen, wie gut der Indikator für einen bestimmten Markt geeignet ist, und es ist unmöglich, den optimalen Bereich seiner Parameter zu bestimmen. Dies kann dazu führen, dass die Strategie in der realen Welt nicht gut funktioniert.

Die Strategie selbst hat auch einige Einschränkungen, wie z.B. die Unfähigkeit, heftige Ereignisse zu behandeln, die mögliche Verzögerung der Indicator-Differenz als Handelssignal usw. Diese Probleme können zu einem versteckten Risiko für die reale Börse werden.

Um diese Probleme zu lösen, können wir die Parameter der Indikatoren anpassen, die Stop-Loss-Methode optimieren, mehr Hilfsindikatoren einführen usw. Aber vorausgesetzt, dass die Strategie in einer ausreichend großen Rückmesszone stabil ist.

Optimierungsrichtung

Die P-Signal-Strategie hat mehrere Optimierungsmöglichkeiten:

  1. Wechseln Sie die Parameter für die P-Signal-Anzeige: nIntr_D, nIntr_W und nIntr_M, um die optimale Kombination von Parametern zu finden

  2. Erhöhung der Stop-Loss-Methoden: Verfolgen Sie Stop-Loss, Time-Stop-Stop, ATR-Stop und finden Sie die beste Stop-Loss-Methode

  3. Einführung von Hilfsindikatoren: Strategien zur Verbesserung der Beurteilung bestimmter Situationen, z. B. Einführung von MACD-Beurteilstrends

  4. Optimierung der Positionsverwaltung: Einrichtung von dynamischen Positionen, Optimierung der Effizienz der Kapitalnutzung

  5. Optimierung von Parametern durch maschinelles Lernen: Neuralnetzwerke, genetische Algorithmen und andere Methoden zur Suche nach einer Gesamtoptimierung

Zusammenfassen

Die P-Signal Multi-Time-Frame-Trading-Strategie ist insgesamt eine sehr potenzielle Strategie. Sie kombiniert statistische Prinzipien mit technischen Kennzahlen und nutzt Multi-Time-Frame-Analysen zur Steigerung der Stabilität. Wenn wir einige der Einschränkungen durch eine große Menge an Rückmeldung und Optimierung lösen können, ist es durchaus möglich, sie in eine wirklich nutzbare digitale Währungs-Algorithmen-Trading-Strategie umzusetzen.

Strategiequellcode
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 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/
// P-Signal Strategy © Kharevsky
// A good strategy should be able to handle backtesting.
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy:", precision = 3, pyramiding = 3)
//
// Parameters and const of P-Signal.
//
nPoints_D = input(title = "Number of D Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_W = input(title = "Number of W Bars", type = input.integer, defval = 4, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_M = input(title = "Number of M Bars", type = input.integer, defval = 6, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr_D = nPoints_D - 1
int nIntr_W = nPoints_W - 1
int nIntr_M = nPoints_M - 1
bool bDValveOpen = true
bool bWValveOpen = true
bool bMValveOpen = true
// 
// Horner's method for the error (Gauss) & P-Signal functions.
//
fErf(x) =>
    nT = 1.0/(1.0 + 0.5*abs(x))
    nAns = 1.0 - nT*exp(-x*x - 1.26551223 + 
     nT*( 1.00002368 + nT*( 0.37409196 + nT*( 0.09678418 + 
     nT*(-0.18628806 + nT*( 0.27886807 + nT*(-1.13520398 + 
     nT*( 1.48851587 + nT*(-0.82215223 + nT*( 0.17087277 ))))))))))
    x >= 0 ? nAns : -nAns
fPSignal(ser, int) => 
    nStDev = stdev(ser, int)
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)
//
// Signals for the strategy.
//
float nPSignal_D = sma(fPSignal(change(ohlc4), nIntr_D), nIntr_D)
float ndPSignal_D = sign(nPSignal_D[0] - nPSignal_D[1])
//
float nPSignal_W = sma(security(syminfo.tickerid, "W",fPSignal(change(ohlc4), nIntr_W)), nIntr_W)
float ndPSignal_W = sign(nPSignal_W[0] - nPSignal_W[1])
//
float nPSignal_M = sma(security(syminfo.tickerid, "M",fPSignal(change(ohlc4), nIntr_M)), nIntr_M)
float ndPSignal_M = sign(nPSignal_M[0] - nPSignal_M[1])
//
// P-Signal plotting. 
//
hline(+1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
hline(-1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
plot(nPSignal_D, color = color.blue, style = plot.style_line)
//
// Multi Frame Strategy 
// ... Day
if(nPSignal_D < 0 and ndPSignal_D > 0 and bDValveOpen)
    strategy.entry("long_D", strategy.long, 1) 
    bDValveOpen := false
if(nPSignal_D > 0 and ndPSignal_D < 0)
    strategy.close("long_D")
    bDValveOpen := true
// ... Week
if(nPSignal_W < 0 and ndPSignal_W > 0 and bWValveOpen)
    strategy.entry("long_W", strategy.long, 1) 
    bWValveOpen := false
if(nPSignal_W > 0 and ndPSignal_W < 0)
    strategy.close("long_W")
    bWValveOpen := true
// ... Month
if(nPSignal_M < 0 and ndPSignal_M > 0 and bMValveOpen)
    strategy.entry("long_M", strategy.long, 1) 
    bMValveOpen := false
if(nPSignal_M > 0 and ndPSignal_M < 0)
    strategy.close("long_M")
    bMValveOpen := true
// The end.