Стратегия торговли по тренду Ruda Momentum

Обзор

Трендовая торговая стратегия Ruda Momentum — это количественная торговая стратегия, основанная на индикаторах импульса и тренда. Эта стратегия использует такие индикаторы, как OBV (On Balance Volume), EMA (Exponential Moving Average) и коэффициент сущности K-line для определения времени покупки и продажи. Когда краткосрочная EMA пересекает долгосрочную EMA, OBV достигает нового максимума, а доля сущностей K-line больше установленного порога, стратегия покупает по цене открытия следующего дня; когда цена упадет ниже цены стоп-лосса или цена закрытия упадет ниже краткосрочной EMA, стратегия закроет позицию.

Принципы стратегии

  1. Рассчитаем две линии EMA, параметр краткосрочной EMA равен 5, а параметр долгосрочной EMA равен 21. Когда краткосрочная EMA пересекает долгосрочную EMA, тренд восходящий, и наоборот.
  2. Рассчитайте показатель OBV. Когда OBV достигает нового 10-дневного максимума, считается, что быки имеют сильный импульс.
  3. Вычислите долю объектов K-линии. Когда доля сущностей превышает установленный порог (по умолчанию 50%), тренд считается установившимся.
  4. Когда тренд восходящий, бычий импульс сильный и тренд установлен, стратегия заключается в покупке по цене открытия следующего дня, а цена стоп-лосса — минимум самой низкой цены дня и -1% от цены открытия.
  5. Стратегия закрывает позицию, когда цена опускается ниже цены стоп-лосса или цена закрытия опускается ниже краткосрочной EMA.

Анализ преимуществ

  1. В сочетании с индикаторами тренда и импульса можно поймать сильные разновидности.
  2. Использование покупок по цене открытия следующего дня и динамического стоп-лосса позволяет избежать ложных пробоев.
  3. Условия стоп-лосса и тейк-профита понятны, а риски контролируемы.

Анализ риска

  1. Наблюдается запаздывание индикаторов тренда и импульса, и можно покупать максимум и стоп-лоссы слишком рано.
  2. Параметры фиксированы, отсутствует адаптивность, а производительность может сильно варьироваться в зависимости от различных рыночных условий.
  3. Необходимо дополнительно проверить единый рынок и разнообразие бэктестинга, стабильность и применимость стратегии.

Направление оптимизации

  1. Оптимизируйте параметры трендовых и импульсных индикаторов для повышения чувствительности и эффективности индикаторов.
  2. Оценивайте состояние рынка и динамически корректируйте параметры в соответствии с текущими характеристиками рынка.
  3. Расширьте масштабы тестирования на истории, увеличьте тестирование различных рынков и разновидностей, а также повысьте надежность стратегии.
  4. Рассмотрите возможность внедрения модулей управления позициями и контроля рисков для улучшения соотношения доходности к риску.

Суммировать

Трендовая торговая стратегия Ruda momentum — это простая и легкая в использовании количественная торговая стратегия, которая может использовать сильные разновидности и возможности тренда за счет комбинации индикаторов тренда и импульса. Однако у этой стратегии есть и определенные ограничения, такие как запаздывающие индикаторы и фиксированные параметры. В дальнейшем стратегия может быть оптимизирована и улучшена за счет таких аспектов, как оптимизация параметров индикаторов, внедрение адаптивных механизмов, расширение масштабов тестирования на истории и усиление риск-менеджмента для повышения надежности и прибыльности стратегии.

Исходный код стратегии

/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-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/
// © lhcbenac

//@version=5
strategy('Ruda_Strategy', overlay=true , initial_capital=5000 , pyramiding = 3, commission_type = strategy.commission.cash_per_contract , commission_value = 1 )

//
//
////////////////////////////////////////////////////////
// //
// //
// Otimizações //
// //
// //
////////////////////////////////////////////////////////
//
//

////////////////////////////////////////////////////////
// //
// //
// Codigo Operacional //
// //
// //
////////////////////////////////////////////////////////
//
//
// Indica situação de Compra ou Venda

// Condição True or False
YEAR_BT= input.int(1,title="Nº Anos ", group = "Backtest")

INPUT_ME1 = input.int(5,title="Momentum ", group = "RUDA")
INPUT_ME2 = input.int(21,title="Trend ", group = "RUDA")
INPUT_CORPO = input.int(50,title="CORPO ", group = "RUDA")/100



v_obv = ta.obv
v_med1 = ta.ema(close , INPUT_ME1)
v_med2 = ta.ema(close , INPUT_ME2)
valid_1 = v_med1 > v_med2
valid_2 = v_obv >= ta.highest(v_obv[1], 10)
valid_3 = math.abs(close - open) / (high-low) > INPUT_CORPO
plot(v_med1)
plot(v_med2)

compra = valid_1 and valid_2 and strategy.position_size == 0 and valid_3


var float v_minima_ref = na

dataInicio = timestamp(year(timenow) - YEAR_BT, month(timenow), dayofmonth(timenow), 00, 00)

// Variáveis globais
var float preco_entrada = na
var float preco_stop = na

if compra and time >= dataInicio and ta.change(time("D")) != 0 and ta.change(compra)
v_minima_ref := low
preco_entrada := open
preco_stop := math.min(low, open - 0.01 * open)
strategy.entry("Compra", strategy.long , stop = preco_stop )
if (not na(preco_entrada) and not na(preco_stop))
label.new(x=bar_index, y= low * 0.9, text= "Dia: " + str.tostring(dayofmonth) + "\nPreço de Entrada: " + str.tostring(preco_entrada) + "\nPreço de Stop Loss: " + str.tostring(preco_stop), style=label.style_label_up, color=color.green)



// Lógica de saída
// Saída no stop loss
if (not na(preco_stop) and low < preco_stop and ta.change(low) < 0)
strategy.close("Compra", comment="Saída no Stop")

// Saída no lucro
if (close < v_med1 and ta.change(close) < 0)
strategy.close("Compra", comment="Saída na Media")

venda =( (not na(preco_stop) and low < preco_stop and ta.change(low) < 0) or (close < v_med1 and ta.change(close) < 0) ) and strategy.position_size > 0
codiff = compra ? 1 : venda ? -1 : na
plotarrow(codiff, colorup=#00c3ff, colordown=#ff0062,title="Compra", maxheight=20, offset=0)


Параметры стратегии

Исходный адрес: FMZ — Торговая платформа FMZ Quant

Источник