
Основная идея этой стратегии заключается в том, чтобы объединить индикатор percentrank и оптимизацию параметров для оценки и отслеживания ценовых тенденций. Эта стратегия создает торговые сигналы, сравнивая текущие цены с процентами величины цен в течение определенного исторического периода, чтобы захватить эффект среднего зеркала, отслеживать тенденции и получить дополнительную прибыль.
Эта стратегия использует индикатор percentrank для определения ценовой тенденции. Percentrank указывает на относительную силу текущей цены в течение просмотра цикла.
%rank имеет значение от 0 до 100. Когда %rank близко к 0, то текущая цена близка к самой низкой цене за просмотрный период и находится в зоне недооценки; когда близко к 100, то текущая цена близка к самой высокой цене за просмотрный период и находится в зоне переоценки.
Эта стратегия также включает в себя параметр scale как величину смещения. Смещение диапазона от 0 до 100 в диапазоне scale до 100+ scale. При этом устанавливаются две сигнальные линии level_1 и level_2.
Сигналы просмотра возникают, когда индикатор percentrank пересекает уровень_1 снизу вверх; сигналы просмотра возникают, когда он пересекает уровень_2 вверх. Условия равновесия противоположны сигналам входа.
Для вышеуказанных рисков можно оптимизировать параметры len, scale, level; в то же время можно использовать другие показатели в качестве подтверждения, чтобы избежать ошибочных сделок.
В этой стратегии есть место для дальнейшей оптимизации:
Стратегия имеет четкую общую концепцию, использует количественные методы оптимизации параметров для определения и отслеживания ценовых тенденций. Она имеет определенную полезность в реальной жизни, но все еще нуждается в дальнейшем тестировании и оптимизации, чтобы снизить риски в реальной жизни и повысить стабильную прибыльность.
/*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")