Die Hauptidee dieser Strategie besteht darin, Preistrends zu beurteilen und zu verfolgen, indem der Percentrank-Indikator und die Parameteroptimierung kombiniert werden. Die Strategie erzeugt Handelssignale, indem der aktuelle Preis mit dem Prozentsatz der Preise über einen bestimmten historischen Zeitraum verglichen wird, um den Spiegeleffekt zu erfassen und Trends für überschüssige Renditen zu verfolgen.
Die Strategie verwendet den Prozent-Rank-Indikator, um die Preisentwicklung zu bestimmen. Percentrank stellt die relative Stärke des aktuellen Preises über den betrachteten Zeitraum dar. Der Parameter len gibt die Länge des zu betrachtenden historischen Zeitraums an.
Der Bereich der Percentrank-Werte liegt zwischen 0 und 100. Wenn der Percentrank-Wert nahe an 0 liegt, bedeutet dies, dass der aktuelle Preis in der Nähe des niedrigsten Preises im betrachteten Zeitraum ist und sich in einem unterbewerteten Bereich befindet. Wenn er nahe an 100 liegt, bedeutet dies, dass der aktuelle Preis in der Nähe des höchsten Preises im betrachteten Zeitraum ist und sich in einem überbewerteten Bereich befindet.
Die Strategie führt außerdem einen Skalaparameter als Versatz ein, um den Bereich von 0 bis 100 auf den Bereich von 100+ Skala zu verschieben.
Wenn der Preis-Prozent-Rank-Indikator Level_1 nach oben überschreitet, wird ein langes Signal generiert. Wenn er Level_2 nach unten überschreitet, wird ein kurzes Signal generiert. Die Ausstiegsbedingungen sind gegenüber den Einstiegssignalen.
Um die oben genannten Risiken zu beheben, können Parameter wie len, Skala, Level für die Optimierung angepasst werden.
Es besteht Raum für eine weitere Optimierung der Strategie:
Die Gesamtidee der Strategie ist klar: Quantitative Methoden der Optimierung von Parametern zur Beurteilung und Verfolgung von Preistrends werden angewendet.
/*backtest start: 2023-12-02 00:00:00 end: 2024-01-01 00:00:00 period: 4h basePeriod: 15m 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/ // © Alex_Dyuk //@version=4 strategy(title="percentrank", shorttitle="percentrank") src = input(close, title="Source") len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2) scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100) level_1 = input(title="sygnal line 1", type=input.integer, defval=30) level_2 = input(title="sygnal line 2", type=input.integer, defval=-30) prank = percentrank(src,len)-scale plot(prank, style = plot.style_columns) plot(level_2, style = plot.style_line, color = color.red) plot(level_1, style = plot.style_line, color = color.green) longCondition = (crossunder(level_1, prank) == true) if (longCondition) strategy.entry("Long", strategy.long) longExitCondition = (crossover(level_2, prank) == true) if (longExitCondition) strategy.close("Long") shortCondition = (crossover(level_2, prank) == true) if (shortCondition) strategy.entry("Short", strategy.short) shortexitCondition = (crossunder(level_1, prank) == true) if (shortexitCondition) strategy.close("Short")