Оптимизированная тенденция параметров в соответствии с количественной стратегией

Автор:Чао Чжан, Дата: 2024-01-02 11:01:22
Тэги:

img

Обзор

Основная идея этой стратегии заключается в том, чтобы судить и отслеживать ценовые тенденции путем объединения показателя процентного ранга и оптимизации параметров.

Принцип стратегии

Стратегия использует показатель процентного ранга для определения ценовых тенденций. Процентный ранг представляет относительную силу текущей цены за просмотренный период. Параметр len указывает на длину исторического периода, который следует просмотреть.

Диапазон значений процентного ранга составляет от 0 до 100. Когда значение процентного ранга близко к 0, это означает, что текущая цена близка к самой низкой цене в рассматриваемом периоде и находится в недооцененной области. Когда она близка к 100, это означает, что текущая цена близка к самой высокой цене в рассматриваемом периоде и находится в переоцененной области.

Стратегия также вводит параметр масштаба в качестве смещения для перемещения диапазона от 0 до 100 в диапазон масштаба до 100+Становлены также две сигнальные линии level_1 и level_2, где level_1 указывает на длинный уровень и level_2 указывает на короткий уровень.

Когда показатель цены пересекает level_1 вверх, генерируется длинный сигнал. Когда он пересекает level_2 вниз, генерируется короткий сигнал. Условия выхода противоположны сигналам входа.

Преимущества стратегии

  1. Используйте показатель процентного ранга для определения силы ценовых тенденций, избегая ловушки или преследования максимумов
  2. Применение методов оптимизации параметров для корректировки масштаба смещения и порога линии сигнала для различных продуктов и циклов для улучшения стабильности
  3. Сочетание идей торговли с тенденцией и средней реверсией для своевременного отслеживания тенденций после прорыва линии сигнала

Анализ рисков

  1. Ошибочное суждение о тенденциях, приводящих к ненужным потерям
  2. Склонность генерировать неправильные сигналы при неясной волатильности и тенденции цен
  3. Неправильное настройка параметров может привести к слишком частой торговле или недостаточному объему торговли

Для решения вышеуказанных рисков, параметры, такие как len, масштаб, уровень могут быть скорректированы для оптимизации.

Руководство по оптимизации

Существует возможность дальнейшей оптимизации стратегии:

  1. Точки остановки потери могут быть введены для сокращения потерь от одной сделки
  2. Показатели, такие как скользящая средняя, могут быть включены для подтверждения, чтобы отфильтровать некоторые неправильные сигналы.
  3. Методы машинного обучения могут использоваться для автоматической оптимизации параметров
  4. Может работать параллельно в нескольких временных рамках

Заключение

Общая идея стратегии ясна, применяя количественные методы оптимизации параметров для оценки и отслеживания ценовых тенденций.


/*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")

    

Больше