
Die räumlich orientierte Preisumkehrstrategie bestimmt die Richtung der Preisbewegung durch die Berechnung der Preiskanalzentrale. Wenn der Preis in der Nähe der Kanalzentrale liegt, wird ein Über- oder Unterkurssignal ausgesendet. Die Strategie kombiniert mehrere Filterbedingungen, um nach hochprobablen Handelsmöglichkeiten zu suchen.
Der Kern der Strategie ist die Preiskanal-Mittellinie. Die Berechnung erfolgt durch den Durchschnitt der höchsten und niedrigsten Preise der letzten 30 K-Linien. Wenn der Tiefpunkt über der Mittellinie liegt, wird er als Aufwärtstrend betrachtet, und wenn der Hochpunkt unter der Mittellinie liegt, wird er als Abwärtstrend betrachtet.
Die Strategie sendet nur dann ein Handelssignal aus, wenn sich der Trendhintergrund ändert. Das heißt, in einem steigenden Kontext wird nur dann leer gehandelt, wenn die K-Linie rot wird.
Darüber hinaus gibt es eine Doppelfilterung: die Filterung der Anlage und die Filterung der Preiskanalbars. Das Signal wird nur ausgelöst, wenn die Anlage größer als 20% des Durchschnittsvolumens ist. Es müssen aufeinanderfolgende Trendsignale innerhalb des Filterzyklus vorliegen, um eine Position zu eröffnen.
Die Strategie kombiniert Trends, Wertebereiche und K-Linien und ist eine sehr effiziente Umkehrhandelsstrategie. Die Hauptvorteile sind:
Das Hauptrisiko dieser Strategie besteht darin, dass der Preis einen Wendepunkt verpasst, ohne darauf zu warten, dass ein Signal gesendet wird. Die Strategie kann auf folgende Weise optimiert werden:
Die Strategie kann in folgenden Bereichen optimiert werden:
Die räumlich orientierte Preisumkehrstrategie erzeugt qualitativ hochwertige Signale, indem sie den Umkehrpunkt anhand der Preiskanäle beurteilt und die Doppelfilterbedingungen eingestellt. Auf der Grundlage von Parameteroptimierung und Windkontrolle ist dies eine zuverlässige quantitative Strategie.
/*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()