
Обзор
Эта стратегия является стратегией отслеживания тенденции, основанной на прорывах и частоте фильтрации, только для многообещающих сделок. Основная идея стратегии заключается в том, чтобы использовать показатели EMA для определения направления текущей тенденции, создавать многосигналы, когда цены прорываются в пределах определенного диапазона, а также использовать частотный фильтр для контроля частоты торговли, чтобы избежать слишком частого открытия позиций.
Стратегический принцип
- Вычисление показателя EMA, используемого для определения направления текущей тенденции. Когда цена закрытия находится выше EMA, считается, что текущая тенденция является многосторонней.
- Вычисляется максимальная цена в пределах определенного диапазона, как условие прорыва. Когда цена закрытия превышает максимальную цену в пределах самого короткого или самого длительного периода ретроспекции, и текущая тенденция является многоопасной, генерируется сигнал к многоопасности.
- Внедрение частотных фильтров, чтобы контролировать минимальный промежуток времени между открытием позиций, чтобы избежать слишком высокой частоты торгов.
- Установка точки остановки, ликвидация позиций при снижении цены, чтобы контролировать риск.
- Определение сигнала окончания тренда, когда конечная цена падает ниже EMA, считается, что тренд закончился, и в это время, если у вас есть несколько ордеров, вы можете быть в позиции.
Стратегические преимущества
- Следить за трендами: использование EMA для определения направления тренда и торговли в соответствии с ним помогает повысить стратегическую прибыль.
- Подтверждение прорыва: использование ценового прорыва в качестве входного сигнала позволяет вовремя войти в начале тренда, чтобы захватить больше места для прибыли.
- Контроль частоты: внедрение частотных фильтров, контролирующих временные интервалы для открытия последовательных позиций, предотвращение чрезмерной частоты торгов, снижение затрат на торговлю и рисков.
- Защита от убытков: установка точки убытков, своевременная остановка убытков, когда цена достигает определенной величины, чтобы эффективно контролировать риск снижения.
- Динамическое выравнивание: динамическое выравнивание в соответствии с сигналом о завершении тренда, которое позволяет своевременно блокировать уже полученные доходы и избежать убытков, вызванных обратным трендом.
Стратегический риск
- Чувствительные к параметрам: эффективность стратегии зависит от выбора параметров, и различные параметры могут привести к значительным различиям в эффективности стратегии. Необходимо проводить полное тестирование и оптимизацию параметров.
- Прорывная неудача: ценовые прорывы не гарантируют продолжение тренда, и возможны случаи прорыва неудачи, что приводит к последовательным потерям в стратегии.
- Идентификация тенденций: стратегия зависит от показателя EMA, чтобы определить тенденцию, но показатель EMA может задерживаться или ошибочно оценивать ситуацию, что влияет на точность стратегии.
- Частые сделки: несмотря на то, что в стратегии введены частотные фильтры, в случае больших колебаний на рынке может возникать частота открытия и закрытия позиций, что увеличивает стоимость сделки.
- Стоп-риск: установка стоп-пойнтов может не позволить полностью избежать максимального отступления от стратегии, в крайних случаях возможны большие потери.
Направление оптимизации стратегии
- Параметровая оптимизация: оптимизация ключевых параметров стратегии, таких как длина EMA, длина ретроспективного периода, стоп-проценты и т. Д., для поиска оптимальной комбинации параметров, повышения стабильности и прибыльности стратегии.
- Фильтрация сигнала: после появления прорывного сигнала, можно ввести другие технические показатели или условия для повторного подтверждения сигнала, повысить качество сигнала, уменьшить ошибочные и ложные сигналы.
- Определение тенденций: можно попробовать использовать другие индикаторы определения тенденций, такие как MACD, DMI и т. Д., Или объединить несколько показателей для определения тенденций, чтобы повысить точность идентификации тенденций.
- Динамические остановки: динамическая корректировка стоп-стоп в зависимости от рыночных колебаний, например, использование индикатора ATR для расчета динамических стоп-стоп или внедрение стратегии отслеживания стоп-стоп для лучшего контроля риска.
- Управление позициями: оптимизация стратегии управления позициями, динамическая корректировка размеров позиций в зависимости от рыночных колебаний и состояния средств на счетах, контроль рисковых выходов в отдельных сделках, повышение эффективности использования средств.
Подвести итог
Эта стратегия является стратегией отслеживания тенденции на основе прорыва и частоты фильтрации, которая определяет направление тенденции с помощью показателей EMA, используя ценовой прорыв в качестве входного сигнала, а также вводит частотный фильтр для контроля частоты торгов и установки риска контроля остановочных потерь. Преимущества стратегии заключаются в отслеживании тенденции, подтверждении прорыва, частоте контроля, защите от остановочных потерь и динамическом выравнивании, но в то же время существуют потенциальные риски, такие как чувствительность к параметрам, выявление тенденции прорыва и неудач, частые сделки и риск остановочных потерь.
Исходный код стратегии
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend Following with Breakout and Frequency Filter (Long Only)", overlay=true)
// 输入参数
emaLength = input.int(50, title="EMA长度")
lookbackPeriodMin = input.int(80, title="最短回溯期")
lookbackPeriodMax = input.int(120, title="最长回溯期")
stopLossPct = input.float(2, title="止损百分比") / 100 // 止损百分比
minHoldBars = input.int(10, title="最小持仓K线数量") // 最小持仓K线数量
// 计算EMA
ema = ta.ema(close, emaLength)
// 计算最高价和最低价
highestHigh = ta.highest(high, lookbackPeriodMax)
lowestLow = ta.lowest(low, lookbackPeriodMax)
// 定义趋势方向
isBullish = close > ema
// 定义突破信号
breakoutCondition = (ta.crossover(close, highestHigh[lookbackPeriodMin]) or ta.crossover(close, highestHigh[lookbackPeriodMax])) and isBullish
// 计算止损点
stopLossLevelLong = close * (1 - stopLossPct)
// 绘制EMA
plot(ema, title="EMA", color=color.blue)
// 记录上次开仓时间
var float lastEntryTime = na
// 策略执行并标注信号
if (breakoutCondition and (na(lastEntryTime) or (time - lastEntryTime) > minHoldBars * timeframe.multiplier))
strategy.entry("做多", strategy.long)
label.new(bar_index, high, text="买入", style=label.style_label_up, color=color.green, textcolor=color.white)
strategy.exit("止损", from_entry="做多", stop=stopLossLevelLong)
lastEntryTime := time
// 定义趋势结束信号
exitCondition = close < ema
if (exitCondition and (strategy.position_size > 0) and (time - lastEntryTime) > minHoldBars * timeframe.multiplier)
strategy.close("做多")
label.new(bar_index, low, text="卖出", style=label.style_label_down, color=color.red, textcolor=color.white)