Эта стратегия использует две линии EMA разных периодов для выявления обратных трендов через их перекрестки как сигналы входа и выхода.
Стратегия рассчитывает две линии EMA с использованием ta.ema, одна с длиной 10 для краткосрочной и одна с длиной 20 для долгосрочной тенденции. Она определяет перекрестки и перекрестки EMA с использованием ta.crossover и ta.crossunder для определения точек входа и выхода. Когда короткая EMA пересекает длинную EMA, она длится. Когда короткая EMA пересекает длинную EMA, она становится короткой. Таким образом, перекрестки EMA используются для захвата поворотных точек в тренде.
Стратегия также использует переменную lastCrossTime для записи времени последнего кроссовера, чтобы избежать повторения сигналов. На каждом действительном кроссовре сначала закрывает все текущие позиции, а затем открывает новую позицию в направлении кроссовера. После открытия позиции, вывод прибыли и стоп-лосс устанавливаются на выход.
Логика стратегии проста и понятна, легко понять и реализовать.
Использование перекрестных показателей EMA для выявления точек переворота тренда является широко используемой эффективной стратегией технического индикатора.
Принятие EMA различных периодов помогает улучшить чувствительность к краткосрочным движениям, при этом отслеживая большие тенденции.
Приобретение прибыли и остановка потерь помогает контролировать риск и прибыль каждой сделки.
Переменная lastCrossTime фильтрует дублирующие сигналы и избегает ненужных сделок.
Пересечение ЭМА может генерировать ложные сигналы, с некоторым риском.
Фиксированные TP и SL могут не адаптироваться к изменяющимся рыночным условиям.
Системы, основанные исключительно на перекрестном использовании EMA, могут понести убытки на различных рынках.
Стоимость торговли, такая как спред, не учитывается, что влияет на фактическую производительность.
Стратегия лучше работает в трендах, а не в диапазоне рынков.
Улучшения могут быть достигнуты путем оптимизации TP/SL, добавления фильтров, объединения других индикаторов и т. д. Для реальной торговли необходим строгий контроль рисков и избежание больших потерь на одной сделке.
Тестируйте и оптимизируйте периоды EMA для поиска лучших комбинаций.
Добавьте другие индикаторы, такие как KDJ, MACD и т. д., чтобы улучшить качество сигнала и избежать сбоев.
Используйте динамический прием прибыли и стоп-лосс, например, стоп-остановку вдоль тренда.
Подумайте о объеме торговли, чтобы подтвердить сигналы.
Включайте модели ценового действия, такие как прорывы, чтобы усилить сигналы.
Учитывайте торговые издержки, такие как спред, и соответствующим образом оптимизируйте уровень TP/SL.
Стратегия определяет обратные тенденции с использованием EMA-кроссоверов простым и прямолинейным способом. TP/SL используются для контроля рисков и вознаграждений. Она проста в реализации, но EMA-кроссоверы имеют риски. Дальнейшие оптимизации могут быть выполнены путем настройки параметров, добавления фильтров и сочетания других индикаторов для улучшения надежности.
/*backtest start: 2023-10-30 00:00:00 end: 2023-11-06 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('XXXquang', overlay=true) // Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị length1 = input.int(10, title="Length EMA Short", minval=1) length2 = input.int(20, title="Length EMA Long", minval=1) lotSize = input.int(1, title="Lot Size", minval=1) takeProfitLevel = input.int(600, title="Take Profit Level", minval=1) stopLossLevel = input.int(200, title="Stop Loss Level", minval=1) ema1 = ta.ema(close, length1) ema2 = ta.ema(close, length2) var float lastCrossTime = na if ta.crossover(ema1, ema2) if na(lastCrossTime) strategy.close_all() strategy.entry('Buy Order', strategy.long, qty=lotSize) strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue) lastCrossTime := timenow if ta.crossunder(ema1, ema2) if na(lastCrossTime) strategy.close_all() strategy.entry('Sell Order', strategy.short, qty=lotSize) strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue) lastCrossTime := timenow plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2) plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)