Fraktaler Chaos-Oszillator Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-09-18 15:10:09
Tags:

Übersicht

Diese Strategie verwendet den Fractal Chaos Oscillator (FCO) Indikator, um die Markttrendrichtung für den Trend zu bestimmen. FCO vergleicht Veränderungen in lokalen Höhen und Tiefen, um die Preisbewegung zu beurteilen, mit Werten zwischen -1 und 1. Höhere Werte deuten auf stärkere Trends hin. Gehen Sie lang, wenn FCO hohe Werte erreicht, und kurz, wenn niedrige Werte erreicht werden.

Strategie Logik

Identifizieren Sie lokale Höhen und Tiefen, indem Sie nach spezifischen Kerzenmustern suchen. Vergleichen Sie Änderungen zwischen benachbarten Höhen-/Tiefgruppen, um den FCO-Indikator zu berechnen. Zum Beispiel, wenn sich die neueste Höhen-/Tiefgruppe von der vorherigen Gruppe unterscheidet, ist FCO 1, was auf eine zunehmende Aufwärtstrendstärke hinweist. Bestimmen Sie die Trendrichtung auf der Grundlage des FCO-Wertes - gehen Sie bei höheren Werten lang und bei niedrigeren Werten kurz.

Vorteile

  • FCO beurteilt effektiv die Trendrichtung einfach
  • Keine komplizierten Parameter erforderlich, einfach zu bedienen
  • Gewinnbringend für den kurzfristigen Intraday-Handel
  • Flexibilität, bei Bedarf lang oder kurz zu gehen

Risiken

  • Musteridentifizierung nicht vollständig genau, kann Kurven verpassen
  • Kann keine Trendumkehr genau bestimmen, riskiert Verluste
  • Häufiger Intraday-Handel erhöht die Transaktionskosten

Die Risiken können durch Parameteroptimierung und Hinzufügen von Umkehrindikatoren verringert werden.

Möglichkeiten zur Verbesserung

  • Versuche verschiedene Zeiträume zur Mustererkennung
  • Optimierung der langen/kurzen FCO-Schwellenwerte
  • Hinzufügen von gleitenden Durchschnitten usw. zur Bestimmung der Trendumkehrung
  • Versuchsrobustheit für verschiedene Produkte

Schlussfolgerung

FCO-Strategie vereinfacht die Beurteilung der Trendrichtung für den kurzfristigen Handel. Die Performance kann durch Parameter-Tuning verbessert werden. Ein leicht umsetzbares Trend-Folge-Konzept.


/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/02/2018
//   The value of Fractal Chaos Oscillator is calculated as the difference between 
// the most subtle movements of the market. In general, its value moves between 
// -1.000 and 1.000. The higher the value of the Fractal Chaos Oscillator, the 
// more one can say that it follows a certain trend – an increase in prices trend, 
// or a decrease in prices trend.
//
//   Being an indicator expressed in a numeric value, traders say that this is an 
// indicator that puts a value on the trendiness of the markets. When the FCO reaches 
// a high value, they initiate the “buy” operation, contrarily when the FCO reaches a 
// low value, they signal the “sell” action. This is an excellent indicator to use in 
// intra-day trading.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
fractalUp(pattern) =>
    p = high[pattern+1]
    okl = 1
    okr = 1
	for i = pattern to 1
		okl := iff(high[i] < high[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(high[i] < high[i-1] and okr == 1, 1, 0)
	res = iff(okl == 1 and okr == 1, p, res[1])
    res

fractalDn(pattern) =>
    p = low[pattern+1]
    okl = 1
    okr = 1
	for i = pattern to 1
		okl := iff(low[i] > low[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(low[i] > low[i-1] and okr == 1, 1, 0)
	res = iff(okl == 1 and okr == 1, p, res[1])
    res

strategy(title="Fractal Chaos Oscillator", overlay = false)
Pattern = input(1, minval=1)
reverse = input(false, title="Trade reverse")
xUpper = fractalUp(Pattern)
xLower = fractalDn(Pattern)
xRes = iff(xUpper != xUpper[1], 1, 
         iff(xLower != xLower[1], -1, 0))
pos = iff(xRes == 1, 1,
       iff(xRes == -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(xRes, color=blue, title="FCO")

Mehr