Комплексная стратегия с несколькими скользящими средними


Дата создания: 2023-12-22 11:56:42 Последнее изменение: 2023-12-22 11:56:42
Копировать: 0 Количество просмотров: 733
1
Подписаться
1621
Подписчики

Комплексная стратегия с несколькими скользящими средними

Обзор

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

Принципы

В основе стратегии лежит вычисление и отслеживание скользящих средних за различные периоды длины, включая скользящие средние за 10, 20, 30 и даже 100 дней. Эти скользящие средние устанавливаются как среднее значение цены закрытия на сегодняшний день и цены закрытия на определенный период прошлого времени (например, 10 дней, 20 дней и т. д.). Например, 20-дневная скользящая средняя - это среднее значение цены закрытия за последние 20 дней.

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

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

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

  2. Сигнал более надежен с помощью многократного подтверждения, фильтрации шума

  3. Правила торговли ясны, легко понятны и применяются

  4. Высокая настраиваемость, пользователь может настроить параметры для удовлетворения индивидуальных потребностей

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

Риски и решения

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

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

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

  4. Торговля может быть небольшой и трудно получить стабильную прибыль. Длина движущейся средней может быть соответствующим образом сокращена или использоваться в сочетании с другими стратегиями / индикаторами.

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

  1. Параметровая коррекция: коррекция количества и длины циклов для поиска оптимальной комбинации параметров. Например, комбинации для тестирования 5-дневных, 10-дневных и 20-дневных скользящих средних.

  2. В сочетании с другими показателями: используется в сочетании с другими показателями, такими как MACD, RSI, для повышения устойчивости стратегии. Различные показатели могут дополнять друг друга.

  3. Комбинация стратегий: с другими стратегиями, такими как система прорыва, система отслеживания тенденций, повышает стабильность. Различные стратегии могут распределять риск.

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

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

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

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

//@version=5
strategy("Multiple Moving Average Strategy", overlay=true)

// Function to calculate moving average
get_ma(src, length) =>
    ta.sma(src, length)

// Initialize moving average lengths
ma_length_10 = 10
ma_length_20 = 20
ma_length_30 = 30
ma_length_40 = 40
ma_length_50 = 50
ma_length_60 = 60
ma_length_70 = 70
ma_length_80 = 80
ma_length_90 = 90
ma_length_100 = 100

// Calculate 10-day, 20-day, 30-day, 40-day, 50-day, 60-day, 70-day, 80-day, 90-day, and 100-day moving averages
ma_10 = get_ma(close, ma_length_10)
ma_20 = get_ma(close, ma_length_20)
ma_30 = get_ma(close, ma_length_30)
ma_40 = get_ma(close, ma_length_40)
ma_50 = get_ma(close, ma_length_50)
ma_60 = get_ma(close, ma_length_60)
ma_70 = get_ma(close, ma_length_70)
ma_80 = get_ma(close, ma_length_80)
ma_90 = get_ma(close, ma_length_90)
ma_100 = get_ma(close, ma_length_100)

// Generate Buy/Sell signals for the 10 moving averages
buy_signal = close > ma_10
sell_signal = close < ma_10

// Add conditions for each additional moving average length
buy_signal := buy_signal and (close > get_ma(close, ma_length_20))
sell_signal := sell_signal and (close < get_ma(close, ma_length_20))

buy_signal := buy_signal and (close > get_ma(close, ma_length_30))
sell_signal := sell_signal and (close < get_ma(close, ma_length_30))

buy_signal := buy_signal and (close > get_ma(close, ma_length_40))
sell_signal := sell_signal and (close < get_ma(close, ma_length_40))

buy_signal := buy_signal and (close > get_ma(close, ma_length_50))
sell_signal := sell_signal and (close < get_ma(close, ma_length_50))

buy_signal := buy_signal and (close > get_ma(close, ma_length_60))
sell_signal := sell_signal and (close < get_ma(close, ma_length_60))

buy_signal := buy_signal and (close > get_ma(close, ma_length_70))
sell_signal := sell_signal and (close < get_ma(close, ma_length_70))

buy_signal := buy_signal and (close > get_ma(close, ma_length_80))
sell_signal := sell_signal and (close < get_ma(close, ma_length_80))

buy_signal := buy_signal and (close > get_ma(close, ma_length_90))
sell_signal := sell_signal and (close < get_ma(close, ma_length_90))

buy_signal := buy_signal and (close > get_ma(close, ma_length_100))
sell_signal := sell_signal and (close < get_ma(close, ma_length_100))

// Plot Buy/Sell signals on the chart
plotshape(buy_signal, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(sell_signal, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Execute long buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.entry("Buy", strategy.long)

// Execute sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.close("Buy")

// Execute short sell order when all ten moving averages give a Sell signal
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Execute buy order when all ten moving averages give a Buy signal
if (buy_signal)
    strategy.close("Sell")

// Plot closing price and moving averages on the chart
plot(close, title="Close", color=color.blue)
plot(ma_10, title="MA 10", color=color.orange)
plot(ma_20, title="MA 20", color=color.purple)
plot(ma_30, title="MA 30", color=color.blue)
plot(ma_40, title="MA 40", color=color.red)
plot(ma_50, title="MA 50", color=color.green)
plot(ma_60, title="MA 60", color=color.yellow)
plot(ma_70, title="MA 70", color=color.fuchsia)
plot(ma_80, title="MA 80", color=color.gray)
plot(ma_90, title="MA 90", color=color.teal)
plot(ma_100, title="MA 100", color=color.maroon)