Эта стратегия определяет длинный / короткий направление, судя по направлению экспоненциальных скользящих средних (EMA). Она идет длинный, когда есть бычий охватывающий шаблон и увеличенный объем торговли. Она закрывает позицию, когда направление EMA переворачивается или наблюдается медвежий охватывающий шаблон.
Для определения рыночной тенденции используйте две EMA с различными параметрами.
Когда рынок находится в бычьем состоянии, если появляется бычий охватывающий шаблон и объем торговли в 1,2 раза больше предыдущего бар, запускается длинный сигнал.
Когда рыночная тенденция переворачивается, то есть короткая EMA пересекается ниже длинной EMA, это показывает ослабление импульса быков и существующую позицию следует закрыть.
Использование двойных EMA для определения структуры рынка может точно оценить статус быка/медведя.
Поглощающая модель показывает, что на одной стороне импульс внезапно увеличивается, что может зафиксировать основные тенденции.
Не устанавливая цену стоп-лосса, а используя изменение структуры рынка для остановки потерь, можно уменьшить ненужное скольжение.
Двойные EMA также могут неправильно оценивать структуру рынка, тем самым упуская тенденции или ошибочно выходя на длинный.
Поглощающие модели могут быть введены в заблуждение различными рынками. Больше фильтров можно добавить, чтобы избежать ложных сделок.
Не имея стоп-лосс цены может привести к большим потерям.
Для определения длинного/короткого можно использовать больше индикаторов, таких как MACD, A/D.
Добавить умеренную фиксированную цену стоп-лосса на основе потребности.
Оптимизировать периоды EMA на основе характеристик торговли символами.
Логика стратегии ясна и легко понятна, используя EMA для определения структуры и охватывающих моделей для захвата прорыва. Ее преимущества - простая логика суждения и четкие торговые сигналы. Но существуют риски попадания в ловушку. Дальнейшая оптимизация может принести лучшую отдачу.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 // # ========================================================================= # // # | STRATEGY | // # ========================================================================= # strategy( title = "fpemehd Strategy001", shorttitle = "f_001", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000000, currency = currency.USD, slippage = 0, commission_type = strategy.commission.cash_per_order, commission_value = 0.01, process_orders_on_close = true) // # ========================================================================= # // # | STRATEGY | // # ========================================================================= # // Inputs I_start_date = input (defval = timestamp("20 Jan 1990 00:00 +0900")) I_finish_date = input(defval = timestamp("20 Dec 2030 00:00 +0900")) I_short_ema = input.int(defval = 15 , title = "Short EMA", minval = 1 , maxval = 300 , step = 1) I_long_ema = input.int(defval = 30 , title = "Long EMA", minval = 1 , maxval = 300 , step = 1) I_body = input.float(defval = 1 , title = "Size of Body", minval = 1 , maxval = 5 , step = 0.1) time_cond = true // Calculate Engulfing Candles C_uptrend = false C_downtrend = false C_ema_short = ta.ema(source = close, length = I_short_ema) C_ema_long = ta.ema(source = close, length = I_long_ema) C_uptrend := close > C_ema_short and C_ema_short > C_ema_long C_downtrend := close < C_ema_short and C_ema_short < C_ema_long C_pre_body = math.abs(open[1]-close[1]) C_pre_body_ratio = (math.abs(open[1]-close[1])) / (math.abs(high[1]-low[1])) * 100 C_now_body = math.abs(open-close) C_now_body_ratio = (math.abs(open-close)) / (math.abs(high-low)) * 100 C_bullish_engulfing = (open[1] > close[1] and open <= close) and (low < low[1] and high > high[1]) C_bearish_engulfing = (open[1] < close[1] and open >= close) and (low < low[1] and high > high[1]) C_avoid_doge = (C_pre_body_ratio > I_body and C_now_body_ratio > I_body) ? true : false C_volume_filter = volume > volume[1] * 1.2 // Signals long_signal = C_uptrend and C_bullish_engulfing and C_avoid_doge and C_volume_filter close_signal = C_downtrend or C_bearish_engulfing if long_signal and time_cond strategy.entry(id = "Long", direction = strategy.long) if close_signal and time_cond strategy.close(id = "Long")