Стратегия схождения и расхождения логарифмической скользящей средней


Дата создания: 2023-09-21 15:38:05 Последнее изменение: 2023-09-21 15:38:05
Копировать: 4 Количество просмотров: 929
1
Подписаться
1617
Подписчики

Обзор

Стратегия основана на генерировании торгового сигнала на основе LMA (Logarithmic MACD). Он определяет тенденции и возможности рынка, рассчитывая разницу между быстрыми и медленными LMA.

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

Основная логика этой стратегии заключается в следующем:

  • Вычислить быстрое скользящее среднее ((по умолчанию 12 дней) и медленное скользящее среднее ((по умолчанию 26 дней)

  • Параметр MACD - это разница между двумя параметрами, выраженная в динамике рынка

  • Сигнальная линия является гладкой скользящей средней MACD (по умолчанию 9 дней)

  • Когда MACD-линия прорывает сигнальную линию снизу, делается больше

  • Когда MACD-линия сверху пропадает вниз по сигнальной линии, пустота

  • Расхождение между MACD и сигнальной линией в виде столбика

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

Стратегические преимущества

  • Изменения цены на уровне индекса с использованием логического преобразования

  • Показатели MACD для подчеркивания информации о колебании цен

  • Сигнальная линия гладкая MACD, образующая торговый сигнал

  • Полюс MACD интуитивно выражает направление тренда

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

  • Перевод может усилить колебания цен

  • Сигналы частые и легко переплачиваются

  • Не учтены меры по сдерживанию убытков, недостаточный контроль рисков

Соответствующие меры:

  • Настройка параметров, снижение частоты сигнала

  • Увеличение условий фильтрации для предотвращения появления сигналов при колебаниях

  • Установка стратегии стоп-лосса и контроль за одиночными потерями

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

  • Оптимизация параметров, повышение стабильности

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

  • Фильтрация сигналов в сочетании с трендовыми индикаторами

  • Увеличение стратегии по удержанию

  • Использование машинного обучения для определения надежности сигнала

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

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

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

//@version=3
strategy(title="Logarithmic Moving Average Convergence Divergence Strategy", shorttitle="LMACD Strategy")

// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)",  defval=false)
sma_signal = input(title="Simple MA(Signal Line)", defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
lmacd = log(fast_ma) - log(slow_ma)
signal = sma_signal ? sma(lmacd, signal_length) : ema(lmacd, signal_length)
hist = lmacd - signal

plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(lmacd, title="LMACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

if (crossover(hist, 0))
	strategy.entry("Long", strategy.long, comment="LMACD long")
if (crossunder(hist, 0))
	strategy.entry("Short", strategy.short, comment="LMACD short")