
Обзор
Эта стратегия использует главным образом высокие цены, низкие цены и индексные движущиеся средние ((EMA) для подтверждения обратного тренда, что приводит к созданию торгового сигнала. Сначала стратегия рассчитывает высокие и низкие цены в течение указанного периода обратного отсчета, а затем определяет, является ли текущая цена закрытия ниже соответствующей минимальной цены высокого ценового показателя (подтверждение обратного отсчета) или выше соответствующей максимальной цены низкого ценового показателя (подтверждение обратного отсчета).
Стратегический принцип
- Вычислить наивысшую (find_highest) и наименьшую (find_lowest) цену за указанный период.
- Рассчитывается EMA на закрытие цены в течение указанного периода обратной обработки.
- Пройдите через каждую K-линию в течение периода обратного обзора, чтобы найти наименьшую цену, соответствующую самой высокой цене ((dnRv), и наибольшую цену, соответствующую самой низкой цене ((upRv) }}.
- Определить, находится ли текущая цена закрытия ниже dnRv (подтверждение обратного курса) или выше upRv (подтверждение обратного курса).
- Если появляется сигнал подтверждения обратного падения ((dnRv_signal), который ранее не был вызван, то создается сигнал открытия позиции.
- Если появляется сигнал подтверждения обратной позиции (upRv_signal), который ранее не был вызван, то создается сигнал открытия позиции.
Стратегические преимущества
- Сигналы обратного подтверждения помогают стратегии уловить возможность обратного тренда, повышая потенциальную прибыль стратегии.
- Используя EMA, стратегия может адаптироваться к различным рыночным условиям и циклам колебаний.
- Изменчивость просмотра дает стратегию гибкость, которая может быть оптимизирована в зависимости от различных типов торгов и циклов.
Стратегический риск
- После появления сигнала обратного подтверждения цены могут испытывать повторные колебания, а не односторонние трендовые явления, что приводит к тому, что стратегия часто открывает и закрывает позиции, что увеличивает стоимость сделки.
- Отсутствие четкого механизма остановки и устранения убытков в стратегии может привести к чрезмерной степени риска для отдельных сделок.
- Стратегия не учитывает особенности торгуемых сортов и рыночных условий, которые в некоторых случаях могут плохо работать.
Направление оптимизации стратегии
- Внедрены механизмы остановки и остановки, которые контролируют риск входа в отдельные сделки. Уровни остановки могут быть установлены динамически или статически, в зависимости от ATR, процента или фиксированного количества баллов.
- В сочетании с другими техническими показателями или факторами рыночной среды, такими как RSI, MACD, волатильность и т. д., для повышения надежности обратного подтверждения сигналов и фильтрации ложных сигналов.
- Параметрическая оптимизация для различных типов и циклов торгов, поиск наиболее подходящих периодов обратного обзора и циклов EMA, повышение адаптивности и стабильности стратегии.
- Рассмотреть возможность внедрения механизмов управления позициями и контроля риска, например, регулирование размеров позиций в зависимости от рыночной волатильности или чистой стоимости счетов, чтобы контролировать общий риск.
Подвести итог
Стратегия подтверждения торговли с помощью реверсии многократных временных рамок определяет потенциальные возможности для реверсии тренда с помощью максимальной цены, минимальной цены и ЭМА и генерирует соответствующий сигнал для открытия позиции. Преимущества этой стратегии заключаются в том, что она способна улавливать реверсию тренда, но также существуют проблемы с частотой торговли и недостаточным контролем риска.
Исходный код стратегии
/*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"}]
*/
//@version=5
strategy("Reversal Confimation Strategy", overlay=true)
// Indicator inputs
lookback = input.int(50, 'Lookback Period', minval=1, step=1)
downColor = input(color.red, 'Shape Color Down')
upColor = input(color.green, 'Shape Color Up')
// Indicator calculations
find_highest = ta.highest(high, lookback)
find_lowest = ta.lowest(low, lookback)
ema = ta.ema(close, lookback)
var dnRv = 0.0
var dnRv_trigger = false
var upRv = 0.0
var upRv_trigger = false
if high == find_highest
dnRv_trigger := false
if low == find_lowest
upRv_trigger := false
for i = 0 to lookback - 1
if high[i] == find_highest
dnRv := low[i]
for i = 0 to lookback - 1
if low[i] == find_lowest
upRv := high[i]
dnRv_signal = close < dnRv and dnRv_trigger == false
upRv_signal = close > upRv and upRv_trigger == false
if dnRv_signal
dnRv_trigger := true
if upRv_signal
upRv_trigger := true
// Entry and exit conditions
if dnRv_signal
strategy.entry("Sell", strategy.short)
if upRv_signal
strategy.entry("Buy", strategy.long)
// Plotting
plotshape(dnRv_signal ? 1 : 0, style=shape.triangledown, location=location.abovebar, color=downColor, size=size.small)
plotshape(upRv_signal ? 1 : 0, style=shape.triangleup, location=location.belowbar, color=upColor, size=size.small)