Стратегия двойного временного рамок

Автор:Чао Чжан, Дата: 2024-04-25 17:33:02
Тэги:SMA

img

Обзор

Эта стратегия представляет собой двойную стратегию импульса временных рамок. Она определяет направление тренда на более высоком временном отрезке с использованием простой скользящей средней (SMA) и определяет точки обратного движения на более низком временном отрезке с использованием поворотных точек (PivotLow и PivotHigh). Она входит в длинный, когда более высокий временной отрез показывает восходящий тренд, а бычий поворотный момент появляется на более низком временном отрезке, и входит в короткий, когда более высокий временной отрез показывает нисходящий тренд, а медвежий поворотный момент появляется на более низком временном отрезке.

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

Основной принцип этой стратегии заключается в том, что направление тренда более высокой временной рамки будет влиять на движение более низкой временной рамки. Когда более высокая временная рамка показывает восходящий тренд, откат на более низкой временной рамке скорее всего будет покупать возможности; когда более высокая временная рамка показывает нисходящий тренд, отскоки на более низкой временной рамке скорее всего будут короткими возможностями. Эта стратегия использует Простую скользящую среднюю (SMA) для определения направления тренда более высокой временной рамки и ключевых точек (PivotLow и PivotHigh) для выявления точек переворота на более низкой временной рамке.

Преимущества стратегии

  1. Анализ двойных временных рамок, используя влияние более высоких временных рамок на более низкие временные рамки, увеличивает вероятность успешных сделок.
  2. Использование SMA для определения направления тренда является относительно надежным, а использование поворотных точек для определения точек переворота относительно точным.
  3. Параметры регулируемы, что делает стратегию очень адаптивной. Пользователи могут регулировать более высокие и более низкие временные рамки, период SMA и параметры ключевых точек в соответствии со своими потребностями.
  4. Логика ясна и легко понять и применить.

Стратегические риски

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

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

  1. Добавить обнаружение изменения тренда. Логика может быть добавлена, чтобы определить, изменилась ли тенденция более высокого временного рама, чтобы скорректировать торговлю на более низком временном раме.
  2. Методы оптимизации параметров (такие как генетические алгоритмы, поиск сетки и т. Д.) могут быть использованы для поиска оптимальной комбинации параметров.
  3. Добавьте меры контроля риска (такие как стоп-лосс, управление позициями и т.д.) для уменьшения потерь в экстремальных рыночных условиях.
  4. Многофакторное слияние. Другие показатели или факторы (такие как волатильность, объем и т.д.) могут рассматриваться как включенные в стратегию для повышения ее надежности.

Резюме

Эта двойная стратегия импульса времени использует связь между более высокими и более низкими временными рамками, определяя направление тренда на более высоком временном отрезке и захватывая точки перелома на более низком временном отрезке для достижения следующего тренда и перелома торговли.


/*backtest
start: 2023-04-19 00:00:00
end: 2024-04-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Riester

//@version=5
strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(20, "Moving Average Period", minval=1)
src = input.source(close, "Source")
high_tf = input.timeframe("240", "Resolution")
pivot_l = input.int(5, "Pivot Let Bars")
pivot_r = input.int(2, "Pivot Right Bars")

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Calculations
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// 1. Define low and high timeframe prices
low_src = src
high_src = request.security(syminfo.tickerid, high_tf, src)

// 2. Use simple moving average to determine trend of higher timeframe (up or down)
high_tf_ma = ta.sma(high_src, n)
plot(high_tf_ma,  color=color.yellow)
high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1

// 3. Use pivots to identify reversals on the low timeframe
low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r)
plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r)

low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r)
plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r)

bool long = low_tf_pl and high_tf_trend == 1
bool short = low_tf_ph and high_tf_trend == -1

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)


Связанные

Больше