Стратегия пересечения скользящих средних на длинные и короткие позиции


Дата создания: 2023-10-24 11:02:52 Последнее изменение: 2023-10-24 11:02:52
Копировать: 0 Количество просмотров: 607
1
Подписаться
1617
Подписчики

Стратегия пересечения скользящих средних на длинные и короткие позиции

Обзор

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

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

  1. Вычислить скользящие средние для двух различных циклов EMA1 и EMA2. EMA1 - короткий, EMA2 - длинный.

  2. Определить, будет ли EMA1 использовать EMA2, и если да, то сделайте больше.

  3. Определить, является ли EMA1 свободным от EMA2, и если да, то освободить его.

  4. В качестве входного сигнала используется определение того, будет ли цена закрытия преодолевать EMA1.

  5. Стоп-выход: устанавливается фиксированная стоп-стоп или через Donchian channel.

Основными функциями являются:

  • ema ((): вычислить скользящую среднюю индексную
  • crossover (((): определить, будет ли EMA1 носить EMA2
  • crossunder (((): определить, проходит ли EMA1 через EMA2
  • rising () /falling (): определяет, повышается или падает цена
  • valuewhen(): возвращает различные значения в зависимости от условий

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

  1. Стратегическая концепция проста, ее реализация понятна.

  2. Используя свойства отслеживания тенденций среднелинейной системы, можно эффективно отслеживать тенденции.

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

  4. Гибкость в использовании равнолинейных комбинаций различных параметров для различных циклов.

  5. Можно установить механизм сдерживания убытков для контроля риска.

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

  1. Когда рынок находится в состоянии колебаний, уравнительная линия будет генерировать частые сигналы золотой форки, которые могут быть легко потеряны.

  2. Фиксированная стоп-стоп может быть слишком жесткой и не может корректироваться в соответствии с изменениями рынка.

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

  4. Необходимо точно определить уклон равномерной линии для фильтрации ложных прорывов.

  5. Необходимо осторожно выбирать параметры, слишком частое или задержанное сочетание параметров может повлиять на эффективность стратегии.

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

  1. Для определения тенденции можно использовать нулевой пересечение MACD-индикатора, фильтруя колебания.

  2. Дополнительно к Donchian channel можно установить динамическую линию стоп-порогов, улучшая фиксированные проблемы стоп-порогов.

  3. При использовании индекса Брин-Бенд можно оценивать сильные и слабые тенденции, чтобы избежать неэффективной торговли на рынке во время колебаний.

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

  5. Можно рассмотреть возможность включения фиксированной скользящей средней для избежания задержек.

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

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

Исходный код стратегии
/*backtest
start: 2023-09-01 00:00:00
end: 2023-10-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='Mega crypto bot strategy', shorttitle='megacryptobot_Strategy', overlay=true, pyramiding=0, initial_capital=10000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
period = input('720')
ch1 = request.security(syminfo.tickerid, period, open)
ch2 = request.security(syminfo.tickerid, period, close)
longCondition = crossover(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////