
Обзор
Эта стратегия использует технические показатели, такие как индикаторная скользящая средняя ((EMA), наивысшая цена, наименьшая цена и средняя реальная волна ((ATR), чтобы определить текущее направление тренда, оценивая связь цены с EMA, наивысшей и наименьшей ценой, покупая при повышении минимальной цены, продавая при повышении максимальной цены или достижении динамического сопротивления, чтобы уловить тенденцию и получить дополнительную прибыль.
Принципы стратегии
- Расчет ATR, используемый для измерения рыночной волатильности, служит основой для построения динамического канала.
- Вычисление максимальных и минимальных цен в качестве основы для определения направления тренда.
- Вычислить EMA_HL, т.е. максимальную и минимальную цены EMA, как центральную ось динамического канала.
- Вычислить EMA_HIGHEST и EMA_LOWEST, то есть вычислить на основе EMA_HL вычисленный выше и ниже трассы, умноженный на ATR в определенной пропорции.
- Вычислить SELL_LINE, то есть динамическую точку сопротивления, полученную с помощью ATR, умноженную на определенную пропорцию на основе наивысшей цены.
- Судить о многоголовном сигнале: когда EMA_LOWEST нарушает минимальную цену вверх и закрывается ниже EMA_MID, создается сигнал купить.
- Определяет пустой сигнал: сигнал продажи генерируется, когда EMA_HIGHEST нарушает максимум вниз и закрывается выше EMA_MID, или когда максимум касается SELL_LINE.
Стратегическое преимущество
- Сигнал имеет высокую надежность, используя EMA, высокие цены, низкие цены и другие индикаторы для оценки тенденций.
- Введение ATR в качестве стандарта для измерения волатильности, создание динамического канала, адаптирующегося к различным состояниям рынка.
- Настройка динамического уровня сопротивления SELL_LINE, своевременное блокирование прибыли, контроль риска вывода.
- Параметры регулируются, адаптируются к разным сортам и периодам, имеют определенную универсальность и гибкость.
#Стратегические риски
- Возможно, существует задержка в распознавании тенденций, что приводит к недостаточно идеальным срокам вступления.
- Неправильная настройка параметров может привести к частоте сигналов и увеличению стоимости транзакций.
- В случае с шокирующими рынками, стратегия может не работать, и ее необходимо оценить в сочетании с другими методами.
- В экстремальных случаях, например, при быстром смене диска, стратегия может не сработать, требуя установки стоп-лосса.
Стратегия оптимизации направлений
- Внедрение новых показателей, таких как количество клиентов, частота колебаний и т. д., чтобы расширить измерения тенденций и повысить надежность сигнала.
- Оптимизация параметров, таких как ATR-множественность, EMA-циклы и т. д., для поиска оптимальной комбинации параметров и повышения стабильности стратегии.
- Присоединение к управлению позициями, например, изменение позиций в соответствии с динамикой ATR, контроль одиночных рисков.
- Установка стоп-лосс и стоп-стоп, контроль за максимальным убытком и максимальной прибылью, повышение риско-прибыльности.
- В сочетании с другими стратегиями, такими как стратегия прорыва, стратегия средней величины возвращения и т. Д., Формирование портфеля стратегий, повышение общей устойчивости.
Подведение итогов
Эта стратегия использует технические показатели, такие как EMA, максимальная цена, минимальная цена, в сочетании с ATR, чтобы создать динамический канал, чтобы генерировать торговый сигнал, чтобы поймать тенденцию. Это простая и практичная стратегия для отслеживания тенденций.
Исходный код стратегии
/*backtest
start: 2023-05-05 00:00:00
end: 2024-05-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Maboi_q
//@version=5
strategy("buy sell Trend", overlay=true)
atr_length = input.int(defval=14, title='atr length')
highest_length = input.int(defval=60, title='highest length')
highest_s_length = input.int(defval=60, title='sell highest length')
lowest_length = input.int(defval=30, title='lowest length')
sell_l_length = input.int(defval=55, title='sell line length')
f = 2.382
f2 = 5.618
atr = ta.atr(atr_length)
highest = ta.highest(highest_length)
lowest = ta.lowest(lowest_length)
f_atr = atr * f
ema_hl = ta.ema((highest[1] + lowest[1]) / 2, 14)
ema_highest = ema_hl + f_atr
ema_lowest = ema_hl - f_atr
ema_mid = (ema_highest + ema_lowest) / 2
bs_hi = ta.highest(highest_s_length)
f_atr2 = atr * f2
sell_line = ta.ema(bs_hi[1] + f_atr2, sell_l_length)
buy_cond = ta.crossover(ema_lowest, lowest) and close < ema_mid
sell_cond = (ta.crossunder(ema_highest, highest) and close > ema_mid) or high >= sell_line
if buy_cond
strategy.entry('BUY', strategy.long)
if sell_cond
strategy.entry('SELL', strategy.short)
plot(sell_line, color=color.new(color.maroon, 50))
plot(highest, color=color.new(color.red, 50))
plot(lowest, color=color.new(color.green, 50))
plot(ema_highest, color=color.new(color.blue, 50))
// plot(ema_mid, color=color.new(color.gray, 50))
plot(ema_lowest, color=color.new(color.blue, 50))
plotshape(buy_cond, title='buy', style=shape.triangleup, location=location.belowbar,
color=color.green, textcolor=color.green, size=size.tiny)
plotshape(sell_cond, title='sell', style=shape.triangledown, location=location.abovebar,
color=color.red, textcolor=color.red, size=size.tiny)