
Эта стратегия использует среднюю линию EMA двух различных периодов, чтобы определить обратный тренд через их перекрестку, что служит сигналом входа и выхода. Стратегия проста, понятна и проста в использовании.
Эта стратегия использует функцию ta.ema, которая вычисляет две средние линии EMA, одну длиной в 10 циклов, другую длиной в 20 циклов, которые представляют собой краткосрочную и долгосрочную тенденции. Код определяет пересечение двух EMA через ta.crossover и ta.crossunder, делая больше, когда проходит длинную EMA на короткой EMA, и пустое, когда проходит длинную EMA под короткой EMA. Таким образом, используйте пересечение разных средних линий EMA для того, чтобы захватить поворотные точки тенденции.
Эта стратегия также использует переменную lastCrossTime, чтобы записывать время последней перекрестной сделки, чтобы предотвратить повторные перекрестки, которые приводят к бессмысленной сделке. При каждой эффективной перекрестной сделке, сначала выровняйте все текущие позиции, а затем открывайте позиции в соответствии с направлением перекрестной сделки.
Стратегическая концепция проста, понятна, легко понятна и действует.
Использование EMA для перекрестного определения обратных точек тренда - это часто используемая и эффективная стратегия технических показателей.
Использование различных циклических ЭМА позволяет зафиксировать большие тенденции и повысить чувствительность к краткосрочным изменениям.
Установка стоп-стоп, позволяющая контролировать риски и прибыль от одной сделки.
Используйте переменную lastCrossTime для фильтрации дублирующих сигналов, чтобы избежать бесполезных сделок.
EMA-пересечения могут создавать ложные сигналы и создавать определенные риски ошибочного восприятия.
Фиксированные TP и SL трудно справляются с изменениями рынка, следует установить динамический стоп-стоп.
Система, основанная только на перекрестке EMA, может привести к убыткам в случае землетрясения.
Не учитывая влияние расходов на транзакции, в практической деятельности необходимо обращать внимание на расходы на транзакции, такие как распространение.
Эта стратегия применяется в основном для трендовых ситуаций и может не работать в шокирующих.
Можно улучшить его путем оптимизации стоп-лоста, добавления фильтрационных условий, комбинации других показателей и т. д. При работе на твердом диске необходимо строго контролировать риск, чтобы избежать чрезмерных потерь.
Можно проверить параметры оптимизации EMA, чтобы найти более подходящую комбинацию циклов.
Добавление вспомогательных показателей, таких как KDJ, MACD и т.д.
Настройка динамического стоп-стоп, например, пограничного стоп-стоп с трендом.
Повышение оценки объемов сделок, а также рассмотрение возможности вступления в силу значительного количества.
Суждение в сочетании с другими графическими формами, такими как прорыв важных точек сопротивления и т. д.
Учитывайте затраты на фиксированный диск и установите разумный стоп-лосс.
Общая концепция стратегии проста и понятна. Используйте быстрое и медленное перекрестное определение тренда, используя среднюю линию EMA, в сочетании со стоп-стоп-убытком, чтобы контролировать прибыль от риска. Стратегия проста в использовании, но существует определенный риск ошибочного суждения при перекрестном 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)