Обратная тенденция ценового объема Стратегия торговли на Форекс на основе лестничной EMA

Автор:Чао Чжан, Дата: 2023-11-07 17:03:57
Тэги:

img

Обзор

Это краткосрочная (1-5 минут) стратегия торговли на форекс, которая в основном использует соотношение цены на объем в теории приливов и множественных EMA для прогнозирования точек обратного тренда для краткосрочной торговли.

Принцип

Торговые сигналы этой стратегии состоят из двух частей:

  1. Суждение о соотношении цены по объему на основе средней цены по объему. В частности, стратегия рассчитывает EMA средней цены по объему различных периодов (конфигурируемый), чтобы судить об изменении бычьих и медвежьих тенденций. Если краткосрочная EMA пересекает выше длинной EMA, это считается бычьим сигналом. Если краткосрочная EMA пересекает ниже длинной EMA, это считается медвежьим сигналом.

  2. Степень EMA относится к установке нескольких EMA с различными параметрами, такими как 10-дневная, 20-дневная, 50-дневная и т. д. Суждение об изменении тренда в соответствии с их порядком. Если короткий период EMA опережает длительный период EMA, это означает, что тенденция изменяется.

Стратегия будет объединять эти два сигнала для определения входа. В частности, если соотношение цены объема оценивается как быстрый, и Stairstep EMA показывает, что несколько EMA стали быстрым, будут заняты длинные позиции. И наоборот, если соотношение цены объема оценивается как медвежий, и Stairstep EMA показывает, что несколько EMA стали медвежими, будут заняты короткие позиции.

Преимущества

Эта стратегия объединяет в себе преимущества средней цены объема и множественных EMA, которые могут улучшить точность и стабильность сигналов:

  1. Суждение о взаимосвязи объемных цен на основе средних объемных цен может быть более точным, чем простое суждение о цене EMA, избегая введения в заблуждение усиленными колебаниями цен.

  2. Степной EMA может увеличить размер суждения порядком различных параметров EMA, избегая шума одной EMA.

  3. Сочетание этих двух сигналов позволяет осуществлять взаимную проверку и уменьшать количество ложных сигналов.

  4. Он подходит для высокочастотного краткосрочного трейдинга и может быстро улавливать небольшие возможности для реверсии в пределах диапазона.

  5. Параметры стратегии могут быть гибко настроены для оптимизации для различных сортов и частот.

Риски

Эта стратегия также сопряжена с некоторыми рисками:

  1. Излишняя зависимость от технических индикаторов, есть возможность быть введены в заблуждение неустойчивыми условиями рынка.

  2. Краткосрочные операции относительно чувствительны к затратам на торговлю, скольжение и комиссионные должны быть хорошо контролированы.

  3. Краткосрочные параметры EMA требуют частой оптимизации, иначе они могут стать недействительными.

  4. Дивергенция в объеме цен не обязательно приводит к обратному движению, существует риск ошибочного суждения.

  5. Последовательность нескольких EMA не является полностью надежной и может также вызывать ошибки в оценке.

Контрмеры:

  1. Объедините более фундаментальные факторы для суждения.

  2. Корректировать позиции, чтобы гарантировать, что убытки на отдельных сделках не будут слишком большими.

  3. Регулярно пересматривать и оптимизировать параметры.

  4. Торгуйте вблизи ключевых уровней поддержки/сопротивления, чтобы увеличить уровень успеха.

  5. Использование с другими показателями для многомерной проверки.

Руководство по оптимизации

Эта стратегия также может быть оптимизирована в следующих аспектах:

  1. Испытать различные методы расчета объемной ценовой связи для поиска более стабильных параметров.

  2. Увеличить уровень показателей Stairstep EMA.

  3. Комбинировать другие индикаторные сигналы для фильтрации, такие как RSI, MACD и т.д.

  4. Оптимизировать механизмы стоп-лосса, такие как перемещение стоп-лосса, ожидание ордеров и т.д.

  5. Оптимизировать параметры на основе характеристик различных торговых инструментов для разработки подходящих наборов параметров.

  6. Внедрение алгоритмов машинного обучения для обучения моделей суждений с использованием больших данных.

  7. Исследуйте различные стратегии выхода, такие как фиксированные выходы, выходы отслеживания тренда и т. Д.

  8. Внедрение адаптивных параметровых механизмов для автоматической корректировки параметров на основе изменений на рынке.

Резюме

Эта стратегия сочетает в себе преимущества средней цены объема и EMA ступеньки для краткосрочной торговли отслеживанием тренда. Стратегия имеет высокую стабильность и точность, но необходимо отметить контроль рисков и оптимизацию параметров. При постоянной оптимизации и тестировании в сочетании с другими техническими индикаторами она может стать эффективной краткосрочной торговой стратегией.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
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/
// © exlux99

//@version=5

strategy("Forex Fractal EMA Scalper", overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters")

src = input(hl2, title="Source for EMA's", group="Optimization Parameters")
len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters")
out1 = ta.ema(src, len1)
len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters")
out2 = ta.ema(src, len2)
len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters")
out3 = ta.ema(src, len3)



// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

// plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small)
// plotshape(upFractal, style=shape.triangleup,   location=location.abovebar, offset=-n, color=#009688, size = size.small)


long= out1 > out2 and out2>out3 and upFractal
short= out1 < out2 and out2<out3 and downFractal


strategy.entry("long",strategy.long,when= short)
strategy.entry("short",strategy.short,when=long)

tp=input(25, title="TP in PIPS", group="Risk Management")*10
sl=input(25, title="SL in PIPS", group="Risk Management")*10


strategy.exit("X_long", "long", profit=tp,  loss=sl  )
strategy.exit("x_short", "short",profit=tp, loss=sl  )


Больше