Preisumkehrstrategie nach Preiskanal

Schriftsteller:ChaoZhang, Datum: 2023-11-27 11:40:36
Tags:

img

Übersicht

Die Preisumkehrstrategie, die durch den Preiskanal geleitet wird, berechnet die Mittellinie des Preiskanals, um die Trendrichtung der Preisschwankungen zu bestimmen. Sie erzeugt lange und kurze Signale, wenn sich der Preis der Kanal-Mittellinie nähert. Diese Strategie kombiniert mehrere Filterbedingungen, um nach Handelsmöglichkeiten mit hoher Wahrscheinlichkeit zu suchen.

Strategie Logik

Der Kernindikator dieser Strategie ist die Preiskanal-Mittellinie. Sie wird als Durchschnitt des höchsten Preises und des niedrigsten Preises der letzten 30 Kerzen berechnet. Wenn das Tief über der Mittellinie liegt, gilt es als Aufwärtstrend. Wenn das Hoch unter der Mittellinie liegt, gilt es als Abwärtstrend.

Die Strategie erzeugt nur Handelssignale, wenn sich der Trendhintergrund ändert. Das heißt, in einem Aufwärtstrend-Hintergrund geht sie nur kurz, wenn die Kerze rot wird. In einem Abwärtstrend-Hintergrund geht sie nur lang, wenn die Kerze grün wird.

Darüber hinaus setzt die Strategie auch doppelte Filterbedingungen: Kerzenkörperfilter und Preiskanalbalkenfilter. Die Signale werden nur ausgelöst, wenn das Kerzenkörpervolumen 20% des Durchschnittswerts übersteigt und es innerhalb des Filterzyklus aufeinanderfolgende Trendsignale geben muss, um Positionen zu eröffnen.

Analyse der Vorteile

Diese Strategie kombiniert Trend, Wertbereich und Kerzenmuster, was eine effiziente Umkehrhandelsstrategie darstellt.

  1. Die Verwendung des Preiskanals zur Bestimmung des Haupttrends und zur Vermeidung der Irreführung durch Bereichsgebundene Märkte.
  2. Auswahl von Preisniveaus in der Nähe der Preiskanal-Mitte, die das klassische Low-Buy-High-Sell-Bereich ist.
  3. Kerzenkörper und Kanalbalkenfilter erhöhen die Signalqualität und reduzieren die Falschsignalraten.
  4. Öffnen Sie nur Positionen an offensichtlichen Umkehrpunkten, um Höchststände zu vermeiden und Tiefstände zu verkaufen.

Risiken und Lösungen

Die wichtigsten Risiken dieser Strategie liegen in dem Fehlen von Preisumkehrpunkten und dem unnötigen Warten auf Signale.

  1. Anpassung der Strenge der Filterbedingungen und Verringerung der Filterstandards, um fehlende Transaktionen zu verringern.
  2. Erhöhung der Positionsgröße im frühen Stadium der Trendumkehrung, um Trendgewinne zu erzielen.
  3. Kombination mit anderen Indikatoren zur Beurteilung der Signalstärke und manueller Eingriff in Filter.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung von Parametern wie der Preiskanalperiode, der Anzahl der Kanalbalken usw.
  2. Hinzufügen einer Stop-Loss-Strategie, um den Stop-Loss zu erreichen, wenn der Verlust einen bestimmten Prozentsatz erreicht.
  3. Kombination von Handelsvolumen, um die Filterstärke zu beeinflussen.
  4. Hinzufügen eines maschinellen Lernmodells, um die Wahrscheinlichkeit einer Trendumkehr zu beurteilen, indem einfache Filter ersetzt werden.

Schlussfolgerung

Die durch den Preiskanal geführte Preisumkehrstrategie bestimmt Umkehrpunkte durch Preiskanäle und setzt doppelte Filterbedingungen, um hochwertige Signale zu erzeugen.


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

//Noro
//2018

//@version=2
strategy(title = "Noro's PriceChannel for D1 v1.0", shorttitle = "PriceChannel D1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
slowlen = input(30, defval = 30, minval = 2, maxval = 200, title = "PriceChannel Period")
pcbars = input(1, defval = 1, minval = 1, maxval = 20, title = "PriceChannel Bars")
usecol = input(true, "Use color-filter")
usebod = input(true, "Use body-filter")
needbg = input(false, defval = false, title = "Need trend Background?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

src = close

//PriceChannel
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//Trend
ub = low > center ? 1 : 0
db = high < center ? 1 : 0
trend = sma(ub, pcbars) == 1 ? 1 : sma(db, pcbars) == 1 ? -1 : trend[1]

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
up = trend == 1 and (close < open or usecol == false) and (body > abody / 5 or usebod == false)
dn = trend == -1 and (close > open or usecol == false) and (body > abody / 5 or usebod == false)

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "PriceChannel Center")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

Mehr