Стратегия пересечения максимальной скользящей средней, следующая за трендом


Дата создания: 2023-10-17 13:05:29 Последнее изменение: 2023-10-17 13:05:29
Копировать: 1 Количество просмотров: 657
1
Подписаться
1617
Подписчики

Стратегия пересечения максимальной скользящей средней, следующая за трендом

Обзор

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

Стратегический принцип

Стратегия использует 9-циклический короткосрочный SMA и 50-циклический LMA. Когда короткосрочный SMA пересекает долгосрочный SMA снизу, создается сигнал покупки; когда короткосрочный SMA пересекает долгосрочный SMA снизу, создается сигнал продажи.

В то же время, стратегия также вводит индикатор RSI для определения силы тренда. Торговый сигнал будет подаваться только в том случае, если RSI будет больше установленного порога ((по умолчанию 55), что позволит избежать ошибочного сигнала, когда RSI находится в пределах перепродажи.

Стратегия Каждая сделка составляет 30% от общего капитала, при этом только один заказ может быть размещен за один раз.

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

  • Эта стратегия использует трендовые сигналы, образующиеся при перекрестном формировании скользящих средних, чтобы эффективно отслеживать тенденции.
  • Введение RSI-индикатора для определения силы тренда позволяет избежать ошибочного сигнала при сдерживании тренда.
  • Оптимизированные параметры по умолчанию позволяют получать более стабильные доходы на различных рынках.
  • Управление деньгами разумно, чтобы избежать лишних потерь.

Анализ рисков

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

Оптимизация параметров, комбинация других показателей для определения возможности получения прибыли, строгое управление капиталом, установка стоп-лосса для снижения риска.

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

  • Можно тестировать различные комбинации скользящих средних для поиска оптимальных параметров.
  • Можно использовать другие показатели, такие как MACD и т.д.
  • Динамическая стоп-убытка может быть установлена для управления единичными потерями.
  • Пропорции управления капиталом могут быть изменены в зависимости от рынка.
  • Сила тренда может быть определена в сочетании с показателями объема торгов.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 2h
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/
// © relevantLeader16058

//@version=4
strategy(shorttitle='Maximized Moving Average Crossing ',title='Maximized Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
inlong=input(50, title='MA long period')
inshort=input(9, title='MA short period')

MAlong = sma(close, inlong)
MAshort= sma(close, inshort)

// RSI inputs and calculations
lengthRSI = (14)

RSI = rsi(close, lengthRSI)
RSI_Signal = input(55, title = 'RSI Trigger', minval=1)

//Entry and Exit
bullish = crossover(MAshort, MAlong)
bearish = crossunder(MAshort, MAlong)

strategy.entry(id="long", long = true, when = bullish and RSI > RSI_Signal and window())
strategy.close(id="long", when = bearish and window())

 
plot(MAshort, color=color.purple, linewidth=2)
plot(MAlong, color=color.red, linewidth=2)