Стратегия импульса двойной шкалы времени

SMA
Дата создания: 2024-04-25 17:33:02 Последнее изменение: 2024-04-25 17:33:02
Копировать: 0 Количество просмотров: 592
1
Подписаться
1617
Подписчики

Стратегия импульса двойной шкалы времени

Обзор

Эта стратегия является двукратной динамической стратегией по временным масштабам. Она определяет направление тренда с помощью простой скользящей средней (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)