
Эта стратегия является стратегией, основанной на двух линиях, которые пересекаются на основе средней линии EMA. Она использует две средние линии EMA, отличающиеся по длине, для определения текущей тенденции к повышению в течение консолидационного периода путем определения отношений между позициями средней линии EMA, а также для подачи сигнала покупки в период прорыва путем определения пересечения цены и средней линии EMA.
Стратегия использует две средние линии EMA на 30 и 60 циклов. Средняя линия EMA - это скользкая скользящая средняя, которая придает более высокий вес последним ценам, чтобы средняя линия EMA могла быстрее реагировать на изменения цен.
Когда короткопериодическая EMA генерирует сигнал к покупке, когда она пересекает долгопериодическую EMA, это означает, что она находится в восходящем тренде. Когда цена пересекает короткопериодическую EMA снизу вверх, она будет продолжать двигаться вверх при поддержке долгосрочной тенденции.
Стратегия одновременно устанавливает стоп-стоп. Стоп-стоп устанавливается как наивысшая из последних 10 K-линейных максимумов для блокирования максимальной прибыли. Стоп-стоп устанавливается как средняя длительная EMA для контроля риска.
Основные преимущества этой стратегии:
Основные риски этой стратегии:
Решение проблемы:
Основными направлениями оптимизации стратегии являются:
Эта стратегия в целом является довольно типичной стратегией, основанной на EMA, которая определяет направление тенденции и посылает сигналы с перекрёстками. Она использует EMA для определения больших тенденций и перекрёстков для повышения точности сигналов. Однако задержка в ответе EMA на обратные тенденции и возможные ошибочные сигналы с перекрёстками являются основными рисками этой стратегии.
/*backtest
start: 2023-12-23 00:00:00
end: 2024-01-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross Strategy", overlay=true)
// 输入设置
ema30_length = input.int(30, title="EMA 30 Length", minval=1)
ema60_length = input.int(60, title="EMA 60 Length", minval=1)
// 计算EMA
ema30 = ta.ema(close, ema30_length)
ema60 = ta.ema(close, ema60_length)
// 绘制EMA
plot(ema30, title="EMA 30", color=color.blue, linewidth=2)
plot(ema60, title="EMA 60", color=color.red, linewidth=2)
// 判断上升趋势
uptrend = close > ema30 and ema30 > ema60
// 买入条件
buy_signal = ta.crossover(close, ema30) and close[1] < ema30[1] and close[1] > ema60[1] and uptrend
// 止盈止损
take_profit_level = ta.highest(high, 10)
stop_loss_level = ema60
// 执行交易
if (buy_signal)
strategy.entry("Long", strategy.long)
strategy.exit("Exit", "Long", stop=stop_loss_level, limit=take_profit_level)