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


Дата создания: 2024-01-03 16:22:18 Последнее изменение: 2024-01-03 16:22:18
Копировать: 1 Количество просмотров: 574
1
Подписаться
1621
Подписчики

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

Обзор

Эта стратегия является многолинейной прогрессивной торговой стратегией, основанной на движущемся среднем, которая формирует торговый сигнал. При прохождении быстрого движущегося среднего сверху через медленное движущееся среднее, создается сигнал покупки; при прохождении быстрого движущегося среднего сверху вниз, создается сигнал продажи.

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

Эта стратегия использует две движущиеся средние, 20-дневную простую и 30-дневную простую. При этом, когда 20-дневная движущаяся средняя проходит через 30-дневную движущуюся среднюю снизу, создается сигнал покупки; когда 20-дневная движущаяся средняя проходит через 30-дневную движущуюся среднюю снизу, создается сигнал продажи.

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

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

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

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

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

Основные риски этой стратегии:

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

Ответ:

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

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Попробуйте различные типы скользящих средних, такие как скользящие средние с загрузкой, скользящие средние с треугольниками и т.д.
  2. Добавление других технических показателей, чтобы избежать создания торговых сигналов в условиях нестабильных рынков;
  3. определение тенденций в сочетании с методами технического анализа, такими как теория волн и теория каналов;
  4. Оптимизация параметров в режиме реального времени с использованием таких моделей, как машинное обучение;
  5. Вместе с количественными инструментами используйте стратегию “стоп-стоп-лосс” для оптимизации управления капиталом.

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

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

Исходный код стратегии
/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
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/
// © gliese581d

//@version=4
strategy(title="Moving Averages Testing", overlay=true, precision=2, calc_on_every_tick=false, max_bars_back=5000, pyramiding=2,  
 default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, initial_capital=10000)


//SETTINGS

longs_on = input(title="Long Trades enabled", defval=true)
shorts_on = input(title="Short Trades enabled", defval=true)

long_cond = input(title="Buy/Long Crossover Condition", defval="price x MA1", options=["price x MA1", "price x MA2", "MA1 x MA2"])
short_cond = input(title="Sell/Short Crossunder Condition", defval="price x MA2", options=["price x MA1", "price x MA2", "MA1 x MA2"])

ma1_type = input(title="Moving Average 1 Type", defval="SMA", options=["SMA", "EMA"])
ma1_len = input(defval=20, title="Moving Average 1 Len", type=input.integer, minval=1, maxval=1000, step=1)
ma2_type = input(title="Moving Average 2 Type", defval="SMA", options=["SMA", "EMA"])
ma2_len = input(defval=30, title="Moving Average 2 Len", type=input.integer, minval=1, maxval=1000, step=1)


//MOVING AVERAGES

ma_1 = ma1_type == "EMA" ? ema(close, ma1_len) : sma(close, ma1_len)
ma_2 = ma2_type == "EMA" ? ema(close, ma2_len) : sma(close, ma2_len)


//STRATEGY

//trade entries
long_entry = long_cond == "price x MA1" ? crossover(close, ma_1) : long_cond == "price x MA2" ? crossover(close, ma_2) : long_cond == "MA1 x MA2" ? crossover(ma_1, ma_2) : false
short_entry = short_cond == "price x MA1" ? crossunder(close, ma_1) : short_cond == "price x MA2" ? crossunder(close, ma_2) : short_cond == "MA1 x MA2" ? crossunder(ma_1, ma_2) : false

start_month = input(defval=4, title="Strategy Start Month", type=input.integer, minval=1, maxval=12, step=1)
start_year = input(defval=2018, title="Strategy Start Year", type=input.integer, minval=2000, maxval=2025, step=1)
end_month = input(defval=12, title="Strategy End Month", type=input.integer, minval=1, maxval=12, step=1)
end_year = input(defval=2020, title="Strategy End Year", type=input.integer, minval=2000, maxval=2025, step=1)

in_time =true

strategy.entry("Long", strategy.long, when=longs_on and in_time and long_entry)
strategy.close("Long", when=longs_on and not shorts_on and short_entry)

strategy.entry("Short", strategy.short, when=shorts_on and in_time and short_entry)
strategy.close("Short", when=shorts_on and not longs_on and long_entry)


//PLOTTING

//color background
last_entry_was_long = nz(barssince(long_entry)[1], 5000) < nz(barssince(short_entry)[1], 5000)
bgcol = (longs_on and last_entry_was_long) ? color.green : (shorts_on and not last_entry_was_long) ? color.red : na
bgcolor(color=bgcol, transp=90)

plot((long_cond == "price x MA1" or long_cond == "MA1 x MA2") or (short_cond == "price x MA1" or short_cond == "MA1 x MA2") ? ma_1 : na, color=color.blue)
plot((long_cond == "price x MA2" or long_cond == "MA1 x MA2") or (short_cond == "price x MA2" or short_cond == "MA1 x MA2") ? ma_2 : na, color=color.black)
plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(short_entry, style=shape.triangledown, location=location.abovebar, color=color.red)