Стратегия низкого среднего отклонения

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

img

Обзор

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

Логика стратегии

Стратегия получает самую низкую цену за определенный период lowestLow с помощью метода ta.lowest Pine Script и сравнивает ее с самой низкой ценой за предыдущий период.

Если в последнее время самая низкая цена lowestLow ниже, чем в предыдущий период самая низкая цена prevLow, запускается длинный сигнал. После длинного курса он сравнивается с самой высокой ценой в указанном периоде highestHigh. Если в последнее время самая высокая цена больше предыдущей самой высокой цены, позиция закрывается.

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

Также на графике отображается самая низкая ценовая линия самая низкая и самая высокая ценовая линия самая высокая, чтобы визуально отобразить изменение тренда.

Анализ преимуществ

  • Стратегия ловит обратный тренд после преодоления новых минимумов с относительно высоким показателем выигрыша.

  • Позволяет выбирать количество низких цен, чтобы контролировать частоту торговли.

  • Рисование линий помогает визуально определить точки изменения тренда.

  • Простая и понятная логика стратегии, легко понятная и реализуемая.

  • Можно настроить и оптимизировать на различные запасы и периоды времени.

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

  • Прорыв ложного дна не может определить точки обратного тренда, может привести к потерям.

  • Необходимо тестировать различные комбинации параметров для оптимизации конфигураций, иначе частота торговли может быть слишком высокой или слишком низкой.

  • Параметры должны быть скорректированы для различных запасов, не должны применяться механически.

  • Недостаточный период обратного испытания может привести к переустановке.

  • Цена может достичь новых минимумов после взрыва, необходимо установить стоп-лосс для контроля рисков.

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

  • Добавьте механизмы остановки потери, такие как перемещение остановки потери, отслеживание остановки потери, чтобы ограничить потери по торговле.

  • Оптимизируйте количество прорывов, чтобы сбалансировать частоту торговли и качество сигналов.

  • Параметры испытаний на различных запасах и периодах времени.

  • Добавьте фильтры, чтобы избежать частой торговли на различных рынках.

  • Подумайте о добавлении индикаторов тренда, чтобы избежать торговли с противоположным трендом.

  • Испытайте разные сигналы выхода.

Заключение

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


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
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/
// © merovinh

//@version=5
strategy(title="Merovinh - Mean Reversion Lowest low",
     overlay = true,
     default_qty_type = strategy.percent_of_equity,
     initial_capital = 10000,
     default_qty_value = 10,
     commission_type = strategy.commission.percent,
     slippage = 1,
     commission_value = 0.04)

GR_TIME = 'Time Period'

bars = input(9, title = "Minimum number of bars", tooltip = "The minimum number of bars before updating lowest low / highest high")

numberOfLows  = input.string(defval='One', title='Number of broken lows', options=['One', 'Two', 'Three', 'Four'])

//Period

var prevLow = .0
var prevHigh = .0
var prevLow2 = .0
var prevLow3 = .0
var prevLow4 = .0

truetime = true


highestHigh = ta.highest(high, bars)
lowestLow = ta.lowest(low, bars)

if numberOfLows == 'One'
    if truetime and prevLow > 0 and lowestLow < prevLow
        strategy.entry('long', strategy.long)
if numberOfLows == 'Two'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2
        strategy.entry('long', strategy.long)
if numberOfLows == 'Three'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3
        strategy.entry('long', strategy.long)
if numberOfLows == 'Four'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3 and prevLow3 < prevLow4
        strategy.entry('long', strategy.long)

if truetime and prevHigh > 0 and highestHigh > prevHigh
    strategy.close('long')


if prevLow != lowestLow
    prevLow4 := prevLow3
    prevLow3 := prevLow2
    prevLow2 := prevLow
    prevLow := lowestLow
prevHigh := highestHigh

plot(lowestLow, color=color.green, linewidth=1, title="Lowest Low Line")
plot(highestHigh, color=color.green, linewidth=1, title="Highest High Line")




Больше