
Основная идея этой стратегии заключается в том, чтобы обнаружить, не превзошла ли цена самую низкую цену в течение заданного периода, а если превзойдет, то сделает больше, и ждет, пока цена вернется к равновесию. Она относится к категории стратегий отслеживания тенденций.
Стратегия получает lowestLow за указанный период путем вызова метода ta.lowest скрипта Pine и сравнивает его с превLow за предыдущий период.
Если минимальная цена последнего цикла (lowestLow) ниже минимальной цены предыдущего цикла (prevLow), то посылается сигнал делать больше. После того, как сделано больше, сравнивается с максимальной ценой в течение указанного цикла (highestHigh), если максимальная цена последнего цикла больше, чем максимальная цена предыдущего цикла, то равновесие.
Эта стратегия позволяет выбирать условия, при которых минимальная цена должна последовательно преодолевать 1, 2, 3 или 4 предыдущих минимальных цен, чтобы контролировать частоту торгов.
Кроме того, стратегия также начертила на графике минимальную среднюю цену (lowestLow) и максимальную среднюю цену (highestHigh) для визуального отображения изменений в тренде.
Эта стратегия используется для того, чтобы уловить обратный тренд после прорыва нового низкого уровня, и имеет более высокий коэффициент выигрыша.
Допускается выбор количества прорывов минимальной цены, можно контролировать частоту торгов.
Нарисуйте линию равновесия, чтобы визуально определить точку изменения тренда.
Стратегическая логика проста, понятна и легко понятна.
Можно настроить различные акции и временные циклы для оптимизированного тестирования.
Прорыв ложного прорыва не позволяет определить точку обратной тенденции и может привести к убыткам.
Необходимо тестировать различные комбинации параметров для оптимизации конфигурации, иначе частота торгов может быть слишком высокой или слишком низкой.
Для различных акций требуется корректировка параметров, не подходит для механического применения.
Недостаточное время отслеживания может привести к перенастройке стратегии.
После прорыва цены могут быть более низкими, и необходимо установить стоп-лосс, чтобы контролировать риск.
Добавление механизмов для сдерживания убытков, таких как мобильные сдерживания, отслеживание сдерживания и т. д., для контроля одиночных убытков.
Оптимизация количества прорывов, балансировка частоты сделок с качеством сигнала.
Оптимизация параметров для тестирования различных акций и временных циклов.
Повышение фильтрации, чтобы избежать частых сделок в нестабильных рынках.
Подумайте о том, чтобы включить трендовые индикаторы, чтобы избежать обратной торговли.
Испытание различных сигналов выхода.
Эта стратегия, используемая для отслеживания прорыва минимальной цены, является типичной стратегией прорыва и возврата. Преимущества этой стратегии заключаются в том, что она проста и понятна, частота торговли контролируется и может применяться для различных видов акций. Однако существует определенный риск ложного прорыва, который требует дополнительных условий для фильтрации и оптимизации, а контроль риска очень необходим.
/*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")