Стратегия отслеживания тенденций по нескольким показателям

Автор:Чао Чжан, Дата: 2023-09-23 15:19:46
Тэги:

Обзор

Эта стратегия объединяет несколько индикаторов для определения тренда и генерирует торговые сигналы на основе согласованных направленных изменений.

Логика стратегии

Основными показателями являются:

  1. Средняя скорость движения: отражает динамику цены.

  2. STOCH: перепроданные/перекупленные из-за изменения тренда.

  3. MACD: изменение тренда от двойных скользящих средних.

Правила торговли:

  1. Увеличение скорости движения дает положительный сигнал.

  2. STOCH в зоне перекупленности дает медвежий сигнал.

  3. Положительный перекресток MACD дает бычий сигнал.

  4. Введите, когда любые два индикатора выравнивают сигналы.

  5. Выйти, когда индикаторные сигналы изменятся.

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

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

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

  1. Комбинированный вид улучшает точность.

  2. Ансамбль фильтрации уменьшает ложные сигналы.

  3. Включает индикаторы тренда и среднего отклонения.

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

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

  6. Гибкая настройка параметров, прочность.

  7. Применимо к разным временным рамкам.

  8. Могу обучить весовые индикаторы с помощью машинного обучения.

  9. В целом стабильность и рентабельность лучше, чем у отдельных показателей.

Риски

Несмотря на достоинства, риски, которые следует учитывать, включают:

  1. Увеличение сложности с помощью нескольких показателей.

  2. Очень сложная оптимизация параметров и взвешивание.

  3. Могут возникнуть противоречивые индикаторные сигналы.

  4. Некоторые задержки всегда существуют, не может избежать всех потерь.

  5. Неопределенный однонаправленный период ожидания с фактором удачи.

  6. Совокупные сигналы не могут устранить присущие трендовые риски торговли.

  7. Высокая частота торговли увеличивает затраты на транзакции.

  8. Нужно следить за соотношением вознаграждения/риска.

Усовершенствования

На основе анализа улучшения могут включать:

  1. Оценить эффективность показателей на разных рынках.

  2. Добавьте проверки прочности параметров для предотвращения чрезмерного приспособления.

  3. Оптимизировать вес показателей для уменьшения конфликтов.

  4. Внедряйте остановки, чтобы ограничить серьезные потери.

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

  6. Оценить влияние частоты торговли на затраты на транзакции.

  7. Включить ограничения по показателям риска.

  8. Проверка надежности на нескольких рынках.

  9. Постоянно проверяйте эффективность стратегии.

Заключение

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


/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// By TradeStation
//@version=5

strategy("Mov Avg Speed Strategy", overlay=true)

src = input(close, title="Source")

// MA Speed  
avg_len = input.int(50, minval=1, title="Avg Length", group="MA Speed")
roc_len = input.int(1, minval=1, title="Rate of Change Length", group="MA Speed")
avg_roc_len = input.int(10, minval=1, title="Avg Rate of Change Length", group="MA Speed")

// Stochastic
stoch_len = input.int(14, minval=1, title="Stochastic Length", group="Stochastic")
smooth_k = input.int(3, minval=1, title="Stochastic Smooth K", group="Stochastic")
overbought = input.float(80, title="Stochastic Overbought", group="Stochastic")
oversold = input.float(20, title="Stochastic Oversold", group="Stochastic")

// MACD
fast_length = input(12, title="Fast Length", group="MACD")
slow_length = input(26, title="Slow Length", group="MACD")
macd_avg_length = input.int(9, title="MACD Avg Length",  minval=1, group="MACD")

// MA Speed
avg = ta.sma(src, avg_len)
roc = ta.roc(avg, roc_len)
avg_roc = ta.sma(roc, avg_roc_len)
avg_roc_signal = avg_roc > 0 ? 1 : avg_roc < 0 ? -1 : 0 

// Stochastic k
k = ta.sma(ta.stoch(close, high, low, stoch_len), smooth_k)
stochastic_signal = k <= oversold ? 1 : k >= overbought ? -1 : 0

// MACD
fast_ma = ta.ema(src, fast_length)
slow_ma = ta.ema(src, slow_length)
macd = fast_ma - slow_ma
macd_avg = ta.ema(macd, macd_avg_length)
macd_signal = macd_avg > macd_avg[1] ? 1 : macd_avg < macd_avg[1] ? -1 : 0

// set the signal couint
long_count = 0
short_count = 0

if macd_signal == 1
    long_count += 1

else if macd_signal == -1
    short_count += 1
 
if stochastic_signal == 1
    long_count += 1

else if stochastic_signal == -1
    short_count += 1
 
if avg_roc_signal == 1
    long_count += 1

else if avg_roc_signal == -1
    short_count += 1

if (long_count >= 2)
    strategy.entry("Long", strategy.long)

if (short_count >= 2)
    strategy.entry("Short", strategy.short)

Больше