Handelsstrategie basierend auf dem Faytterro Estimator


Erstellungsdatum: 2023-09-22 14:12:27 zuletzt geändert: 2023-09-22 14:12:27
Kopie: 1 Klicks: 1452
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie basiert auf den Handelssignalen des Faytterro Estimators. Der Faytterro Estimator ist ein Indikator, der Trends durch die Berechnung der Konvergenz-Diversität der Preise beurteilt. Die Strategie kombiniert die Handelssignale des Faytterro Estimators mit einigen zusätzlichen Bedingungen, um an idealen Punkten Kauf- und Verkaufssignale in unterschiedlicher Größe zu senden.

Strategieprinzip

Im Mittelpunkt der Strategie steht der Faytterro Estimator. Die Berechnungsmethode besteht darin, zuerst die Convergence Dispersion Rate (CR) des Preises zu berechnen und dann eine Sekundärfunktion zu erstellen, die die Kurvencharakteristik des CR durch die Einstellung verschiedener Koeffizienten widerspiegelt. Durch die Beobachtung der Kurvenpunkte der Sekundärfunktion wird die Änderung der Preisentwicklung beurteilt.

Konkret berechnet die Strategie zunächst die Convergence Dispersion Rate (CR) des Preises und baut dann eine Länge von 2 auf.*Die Array-Dizi von len wird mit den Quadratwerten ausgefüllt. Die Quadratwertkoeffizienten spiegeln den CR-Wert wider. Anschließend wird durch Beobachtung der beiden Werte len+1+5 und len+1+4 beurteilt, ob ein Kurve in der Quadratfunktion auftritt.

Auf dieser Grundlage werden zusätzliche Bedingungen gesetzt, z. B. eine minimale Pause zwischen den Preisbruchpunkten, um häufigen Handel zu vermeiden; Eintrittssignale in unterschiedlicher Größe. Diese Bedingungen dienen dazu, einige unerwünschte Handelsplätze zu filtern.

Analyse der Stärken

Die Strategie hat folgende Vorteile:

  1. Der Faytterro Estimator ist ein Indikator, der auf Preisschwankungen empfindlich ist und Trends frühzeitig erfasst.

  2. Das Aufbauen von Sekundärfunktionen, die die CR-Kurven-Eigenschaften widerspiegeln, sucht nach Kurvensignalen und beurteilt, ob die Methode intuitiv ist.

  3. Eintrittssignale in unterschiedlichen Größen werden eingestellt, um den Pyramidengeschäft an den idealen Punkten zu ermöglichen und die Gewinnspanne zu erhöhen.

  4. Das Minimum Interval-Setting wurde erweitert, um die Signale zu filtern und zu vermeiden, dass häufige ungültige Transaktionen stattfinden.

  5. Es gibt viele Anpassungsparameter, die für verschiedene Sorten optimiert werden können, und es ist sehr anpassungsfähig.

  6. Die Strategie ist klar und verständlich, der Code ist gut lesbar und leicht zu erlernen.

Risikoanalyse

Die Strategie birgt auch einige Risiken, die beachtet werden müssen:

  1. Der Faytterro Estimator ist mit Risiken verbunden und kann bei einigen Sorten nicht so gut wirken.

  2. Das Signal kann zu groß sein und zu Fehleinschätzungen führen, wenn man sich nur auf die Kurve der Sekundärfunktion stützt.

  3. Die häufigen Pyramiden erhöhen die Gebühren.

  4. Die große Anzahl an modifizierbaren Parametern erhöht die Schwierigkeit der Optimierung.

  5. Es ist unmöglich, die Fehleinschätzung in Zeiten von Preisschwankungen wirksam zu behandeln.

  6. Es gibt keine Stop-Loss-Mechanismen, was zu einer Vergrößerung der Verluste führen kann.

Die Lösungen für die Risiken sind:

  1. Optimierung der Parameter für verschiedene Sorten zur Steigerung der Robustheit

  2. Es wurde ein Filter für andere Indikatoren eingefügt, um Fehleinschätzungen durch die Kurve zu vermeiden.

  3. Ein angemessenes Stop-Loss-System für die Kontrolle von Einzelschäden

  4. Automatische Anpassung der Parameter durch die Big-Data-Methode

  5. Erhöhung der Erschütterungserkennung und Vermeidung von Erschütterungsphasen.

  6. Einführung einer angemessenen Stop-Loss-Logik.

Optimierungsrichtung

Die Optimierung der Strategie beinhaltet:

  1. Ein zusätzlicher Stop-Loss-Logik, um Einzelschaden zu kontrollieren. Es kann ein bewegtes Stop-Loss oder ein zeitliches Stop-Loss eingestellt werden.

  2. Hinzufügen von Kombinationen von anderen Indikatoren, um das Risiko einer Fehleinschätzung durch ein einzelnes Faytterro Estimator zu vermeiden. Filterung in Kombination mit MACD, KDJ und anderen Indikatoren.

  3. Erhöhung der Bestätigungsmechanismen, um zu vermeiden, dass ein Stop-Loss durch eine kurzfristige Preisrückführung ausgeschaltet wird. Eine zweite Bestätigung kann in Betracht gezogen werden.

  4. Optimierung von adjustable parameters, die vernünftige Parameter für verschiedene Sorten festlegen. Genetische Algorithmen, Bayesian Optimierung usw. können verwendet werden.

  5. Erhöhung der Erkennung von Erschütterungen und Vermeidung von Transaktionen in Zeiten von Erschütterungen. Sie können mit Indikatoren wie ATR und DMI identifiziert werden.

  6. Optimierung der Pyramidenlogik zur Verhinderung von Rückschlägen, z. B. durch dynamische Anpassung der Anlagerung an die Trendstärke

  7. Testen Sie die Parameter-Einstellungen für verschiedene Zeiträume, um die optimale Periode zu finden.

Zusammenfassen

Die Strategie basiert auf den Handelssignalen des Faytterro Estimators, auf deren Grundlage die Entscheidungsfindung erfolgt, wobei die Logik hinzugefügt wird und die Eintrittssignale in verschiedenen Größen eingestellt werden, um eine Trendverfolgungsstrategie mit Pyramidencharakter zu bilden. Die Strategie ist intuitiv und leicht zu verstehen und hat eine starke Trendfangfähigkeit.

Strategiequellcode
/*backtest
start: 2022-09-21 00:00:00
end: 2023-08-10 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/
// © faytterro

//@version=5
// strategy("Faytterro Estimator Strategy", overlay=true, pyramiding=100)

src=input(hlc3,title="source")
len=input.int(10,title="faytterro estimator lenght", maxval=500)
len2=100
len3=input.float(500,title="minumum enrty-close gap (different direction)")
len4=input.float(500,title="minumum entry-entry gap (same direction)")
cr(x, y) =>
    z = 0.0
    weight = 0.0
    for i = 0 to y-1
        z:=z + x[i]*((y-1)/2+1-math.abs(i-(y-1)/2))
    z/(((y+1)/2)*(y+1)/2)
cr= cr(src,2*len-1) 
width=input.int(10, title="strong entry size", minval=1)

dizi = array.new_float(500)
// var line=array.new_line()
//if barstate.islast
for i=0 to len*2
    array.set(dizi,i,(i*(i-1)*(cr-2*cr[1]+cr[2])/2+i*(cr[1]-cr[2])+cr[2]))

buy = array.get(dizi,len+1+5)>array.get(dizi,len+1+4) and array.get(dizi,len+1+5)<cr[len] 
sell = array.get(dizi,len+1+5)<array.get(dizi,len+1+4) and array.get(dizi,len+1+5)>cr[len]
bb=buy? hlc3 : na
ss=sell? hlc3 : na 
sbuy= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3*3
ssell= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3*3

buy:= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3 //and close>ta.highest(fixnan(ss),len2)-len3*3
sell:=  sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3 //and close<ta.lowest(fixnan(bb),len2)+len3*3
alertcondition(buy or sell)


if (sbuy)
    strategy.entry("strong buy", strategy.long,width)
if (ssell)
    strategy.entry("strong sell", strategy.short,width)
if (buy)
    strategy.entry("buy", strategy.long)
if (sell)
    strategy.entry("sell", strategy.short)