
Der Kern dieser Strategie ist die Verwendung von Kármán-Wellen-Technik, um die Preismittellinie zu glätten, indem die Schnittwinkel der Mittellinie nach der Glättung berechnet werden, um ein Handelssignal zu erzeugen, wenn die Schnittwinkel innerhalb eines bestimmten Zeitraums einen bestimmten Tiefpunkt überschreitet. Die Strategie ist darauf ausgerichtet, mittlere und längere Trends zu verfolgen und die Auswirkungen von Kármán-Wellen-Technik zu reduzieren, um ein klareres und zuverlässigeres Trendsignal zu erhalten.
Die Kernlogik dieser Strategie besteht aus den folgenden Schritten:
Berechnen Sie einen einfachen Moving Average (SMA) für die 1-Minuten-Preise als ursprüngliche Durchschnittslinie.
Ein Kalman-Filter für die ursprüngliche Gleichlinie und eine glatte Gleichlinie für die Ausgabe;
Berechnen Sie die Schnittwinkel der glatten Mittellinie.
Definition der Summe der Schnittwinkel innerhalb der Parameter-Periode, der statistischen Periode;
Ein Kaufsignal wird erzeugt, wenn die Summe der Schnittwinkel innerhalb der Periode größer als 360 Grad ist; ein Verkaufsignal wird erzeugt, wenn die Summe kleiner als 360 Grad ist.
Mit dieser Konstruktion werden die Schnittwinkel der Gleichlinie nach und nach akkumuliert, wenn der Preis aufwärts oder abwärts trendiert, und erzeugen ein Handelssignal, wenn sie sich bis zu einem gewissen Grad akkumulieren, wodurch der mittlere Langlinie-Trend effektiv verfolgt werden kann.
Der Kalman-Filter ist ein Recursive-Algorithmus, der den aktuellen Zustand vorhersagt, aber auch Prozesslärm und Messwerte von Geräuschen vorhersagt und die Werte dieser Geräusche nutzt, um die Vorhersage des vorherigen Zustands zu korrigieren und so eine genauere und zuverlässigere Zustandsbeurteilung zu erhalten.
In dieser Strategie kann der SMA des Preises als eine Messung des Zustands betrachtet werden, der vom Marktgeräusch beeinflusst wird. Der Kalman-Filter schätzt die tatsächliche Tendenz des Preises rückläufig ab und reduziert die Auswirkungen des Geräusches erheblich, wodurch die anschließenden Mittellinienberechnungen zuverlässiger sind und somit ein stabileres und genaueres Handelssignal erzeugt werden.
Der größte Vorteil dieser Strategie gegenüber Indikatorstrategien wie einfachen Moving Averages besteht darin, dass die Auswirkungen von Kalman-Filtern reduziert werden, was die Handelssignale klarer und zuverlässiger macht. Die konkreten Vorteile spiegeln sich hauptsächlich in folgenden Aspekten wider:
Reduzierung von Falschsignalen. Die Kalman-Filter filtern durch adaptive Einschätzung und Noise-Eliminierung eine Vielzahl von Falschsignalen aus, die durch zufällige Schwankungen ausgelöst werden, und machen die erzeugten Handelssignale zuverlässiger.
Bessere Trending-Effekte. Die Gleichlinienform nach der Glättung ist flüssiger und kann die langen Trendlinien in den Preisen besser widerspiegeln, was zu einer besseren Trending-Effekt führt.
Anpassbare Parameter, einschließlich der Durchschnittslänge, der Parameter der Kalman-Wellen und der statistischen Perioden, können flexibel an unterschiedliche Marktbedingungen angepasst werden.
Die Strategie konzentriert sich auf die mittleren langen Trends und nicht auf die kurzfristigen Schwankungen, wodurch ein besseres Risiko-Rendite-Gleichgewicht erreicht wird.
Die Kernalgorithmen dieser Strategie sind einfach zu implementieren und zu testen, und bieten auch Raum für Erweiterungen, z. B. automatische Optimierungsparameter für Machine Learning-Algorithmen, die eingeführt werden können.
Die Strategie birgt außerdem folgende Hauptrisiken:
Trendwechselrisiko. Diese Strategie konzentriert sich auf Trendverfolgung, bei der es zu einem starken Trendwechsel kommt, der zu einem größeren Verlust führt. Die Verringerung der Einzelschäden kann durch eine angemessene Verkürzung der statistischen Periode erreicht werden.
Optimierungsrisiken durch Parameter. Fehlende Parameter-Einstellungen können zu häufigen Transaktionen oder Signalverzögerungen führen. Optimierung durch ausreichende Tests.
Überoptimierungsrisiken. Überoptimierung auf historischen Daten kann auch dazu führen, dass die Parameter fehlschlagen und die Effektivität außerhalb der Stichprobe kontrolliert werden muss.
Die Einführung von Kalman-Wellen und Schnittwinkel-Algorithmen erhöht die Komplexität des Codes und muss sichergestellt werden, dass sie richtig implementiert werden.
In Anbetracht der oben genannten Risikofaktoren kann diese Strategie folgendermaßen optimiert werden:
Die Einführung von Stop-Loss- und Positionsmanagement. Durch geeignete Stop-Loss-Methoden kann das Risiko eines Einzelschadens wirksam kontrolliert werden. Durch dynamische Positionsmanagement kann das Risiko der Deckung der Positionen an die Marktlage angepasst werden.
Automatische Parameteroptimierung. Durch die Verwendung von Optimierungsalgorithmen aus maschinellem Lernen kann die automatische Optimierung von Parametern realisiert werden, um das Risiko einer Überoptimierung zu vermeiden.
Integration anderer Kennzahlen. Es ist möglich, einige andere Kennzahlen in die Strategie zu integrieren, um eine Kombination von Kennzahlen zu bilden, um die Strategie zu stabilisieren.
Effizienzsteigerungsbewertungen. Einführung von mehr Risiko-Anpassungsindikatoren zur Bewertung der Effizienz und Stabilität von Strategien, umfassendere und genauere Schlussfolgerungen zu ziehen.
Erweitern Sie mehrere Sorten. Wenn die Wirkung gut ist, können Sie in Erwägung ziehen, auf mehr Sorten zu expandieren, um in der mittleren und langen Zeit reichere Proben zu sammeln und die Optimierung der Parameter zwischen den Sorten zu erleichtern.
Diese Strategie ist insgesamt eine einfache und praktische Trend-Tracking-Strategie. Im Vergleich zu herkömmlichen Moving-Average-Strategien ist die Einführung des Kalman-Wave-Algorithmus die größte Innovation, die die Strategie in die Lage versetzt, klarere und zuverlässigere Handelssignale zu erzeugen. Durch weitere Optimierung im nächsten Schritt wird die Strategie möglicherweise noch bessere Ergebnisse erzielen.
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//@library=math
strategy("策略360°(测试)", overlay=true)
// 定义1分钟均线
ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数
//plot(ma1, color=color.yellow, title="原始均线")
// 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码
kalman(x, g) =>
kf = 0.0
dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数
smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数
velo = 0.0
velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数
kf := smooth + velo
kf
// 定义卡尔曼滤波后的均线
ma2 = kalman(ma1, 0.01)
plot(ma2, color=color.blue, title="卡尔曼滤波后的均线")
// 定义切线角
angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数
// 定义累加的切线角
cum_angle = 0.0
cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数
// 定义30分钟周期
period = 30 // 您可以根据您的需要修改这个参数
// 定义周期内的切线角总和
sum_angle = 0.0
sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加
// 定义买入和卖出条件
buy = sum_angle > 360// 在这里使用了 math.radians() 函数
sell = sum_angle < -360
// 执行买入和卖出操作
strategy.entry("Long", strategy.long, when=buy)
strategy.close("Short", when=buy)
strategy.entry("Short", strategy.short, when=sell)
strategy.close("Long", when=sell)
// 绘制曲线图
plot(sum_angle, color=color.green, title="周期内的切线角总和")
plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角