
Обзор
Эта стратегия сочетает в себе 200-дневную скользящую среднюю ((200 EMA), среднюю цену с переходной нагрузкой ((VWAP) и индикатор денежных потоков ((MFI) для создания сигнала купли-продажи. Основная идея заключается в том, чтобы использовать комбинацию этих трех показателей для определения направления и силы тренда, чтобы создать торговый сигнал в случае, если цена преодолевает 200 EMA и подтверждается показателями VWAP и MFI.
Стратегический принцип
- Вычислите 200-дневную ЭМА и вычислите процент буферной зоны в зависимости от ввода.
- Расчет показателя VWAP.
- Расчет 14-циклического показателя МФИ и установление порога покупки и продажи.
- Получение 200 EMA для высоких временных циклов в качестве фильтра тренда.
- Оценить непрерывность движения цен, проверить, соответствует ли условию непрерывного роста или падения.
- Комбинируя вышеперечисленные условия, создание сигнала покупки происходит при условии: цена закрытия преодолевает 200 EMA и выше VWAP, MFI больше, чем цена покупки, цена закрытия выше 200 EMA в высоком периоде времени, и цена продолжает расти.
- Условия для продажи сигналов: цена закрытия упала ниже 200 EMA и ниже VWAP, MFI меньше, чем продажи, цена закрытия ниже 200 EMA высокого временного периода, и ценовой тренд продолжается.
- При выполнении условий покупки или продажи, стратегия проводит соответствующую многоголовую или пустую сделку.
Стратегические преимущества
- В сочетании с несколькими показателями для комплексного суждения, эффективное фильтрация ложных сигналов, повышение надежности сигнала.
- Внедрение фильтрации трендов на высоких временных циклах позволяет согласовывать торговые решения с основными тенденциями и снижать риск регрессивной торговли.
- Для дальнейшего подтверждения интенсивности тренда, а также для повышения точности времени входа в рынок, используя оценку непрерывности ценового движения.
- Использование концепции буферных зон, позволяющих ценам колебаться в определенном диапазоне, чтобы избежать частых торгов.
- Параметры регулируемы, имеют высокую гибкость и могут быть оптимизированы в соответствии с различными рынками и стилями торговли.
Стратегический риск
- В рыночных колебаниях или в момент перелома тренда индикатор может подавать ложные сигналы, что приводит к убыткам.
- Неправильная настройка параметров может привести к плохой эффективности стратегии, например, слишком большое буферное пространство может привести к пропущенным торговым возможностям, а слишком маленькое может привести к частым сделкам.
- Стратегия опирается на исторические данные для вычислений и суждений, и может не реагировать вовремя на внезапные события или события черной лебеди.
- В некоторых особых рыночных условиях, например, в условиях крайнего продолжения или резкого колебания тенденций, стратегия может не сработать.
Направление оптимизации стратегии
- Для оптимизации параметров можно искать оптимальную комбинацию параметров, например, циклы EMA, циклы MFI и пороговое значение, размер буферной зоны и т. Д., путем обратной проверки исторических данных.
- Для дальнейшего повышения надежности и устойчивости сигналов можно рассмотреть возможность внедрения других вспомогательных индикаторов или индикаторов рыночной сентиментальности, таких как BRI, RSI и т. д.
- С точки зрения управления сделками, могут быть введены механизмы стоп-стоп, такие как мобильный стоп или динамический стоп на основе ATR, для контроля риска в одной сделке.
- Можно исследовать различные стратегии управления позициями, такие как размещение позиций на основе риска или формула Келли, чтобы оптимизировать риск-прибыль соотношения стратегий.
- Подумайте о внедрении машинного обучения или адаптивных алгоритмов, динамично адаптирующих параметры стратегии к изменениям рынка.
Подвести итог
Стратегия создает относительно надежную систему для отслеживания трендов, используя в сочетании 200-дневную EMA, VWAP и MFI, а также учитывая тенденции высоких временных циклов и непрерывность ценового движения. Стратегия фильтрует ложные сигналы и повышает точность входа в рынок, используя комплексный анализ нескольких условий.
Исходный код стратегии
/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("200 EMA, VWAP, MFI Strategy - Visible Signals", overlay=true, pyramiding=0)
// Inputs for dynamic adjustments
buffer = input.float(0.2, title="EMA Buffer Percentage", step=0.1) / 100
higherTimeframe = input.timeframe("15", title="Higher Timeframe")
mfiBuyThreshold = input(60, title="MFI Buy Threshold")
mfiSellThreshold = input(40, title="MFI Sell Threshold")
consecutiveCloses = input.int(1, title="Consecutive Closes for Confirmation")
// Calculate the 200-period EMA
ema200 = ta.ema(close, 200)
emaBufferedHigh = ema200 * (1 + buffer)
emaBufferedLow = ema200 * (1 - buffer)
emaHigher = request.security(syminfo.tickerid, higherTimeframe, ta.ema(close, 200))
// VWAP calculation
vwap = ta.vwap(hlc3)
// Money Flow Index calculation
mfiLength = 14
mfi = ta.mfi(close, mfiLength)
// Plotting the indicators
plot(ema200, title="200 EMA", color=color.blue)
plot(vwap, title="VWAP", color=color.orange)
plot(mfi, title="MFI", color=color.purple)
hline(50, "MFI Reference", color=color.gray, linestyle=hline.style_dashed)
plot(emaHigher, title="Higher TF EMA", color=color.red)
// Price action confirmation
isUpTrend = ta.rising(close, consecutiveCloses)
isDownTrend = ta.falling(close, consecutiveCloses)
// Define entry conditions
longCondition = close > emaBufferedHigh and close > vwap and mfi > mfiBuyThreshold and close > emaHigher and isUpTrend
shortCondition = close < emaBufferedLow and close < vwap and mfi < mfiSellThreshold and close < emaHigher and isDownTrend
// Trading execution
if (longCondition)
strategy.entry("Buy", strategy.long)
if (shortCondition)
strategy.entry("Sell", strategy.short)
// Plot shapes for signals
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, size=size.small, title="Buy Signal", text="Buy")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, size=size.small, title="Sell Signal", text="Sell")