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

Автор:Чао Чжан, Дата: 2024-02-02 10:48:37
Тэги:

img

Обзор

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

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

1. Движущиеся средние

Быстрая линия (5-дневная) и медленная линия (20-дневная) скользящая средняя используются. Быстрая линия, пересекающая над медленной линией, является сигналом покупки, а пересекающая ниже - сигналом продажи.

2. Стохастический осциллятор

Стохастические параметры устанавливаются на: K-линейный период 14, K-линейный гладкий период 3, D-линейный гладкий период 3. Ниже 20 на линии K - перепроданный регион, а выше 80 - перекупленный регион.

3. Правила входа

Условие покупки: быстрый перекресток MA над медленными линиями MA и K <20 (регион перепроданности) Условие продажи: быстрый перекресток MA ниже медленной линии MA и K > 80 (перекупленный регион)

Выйти длинным, когда выполняется условие покупки; выйти коротким, когда выполняется условие продажи.

4. Настройки остановки потерь

Установите 1% целевой прибыли после покупки; установить 1% стоп-лосс после продажи.

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

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

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

  • Повышение цены в результате значительных событий может привести к большим потерям.

  • Устойчивые рынки с ограниченным диапазоном могут привести к последовательным небольшим потерям.

  • Избегайте ключевых периодов рынка, когда цены склонны к перепаду.

Оптимизация

  • Испытать различные комбинации параметров для поиска оптимальных параметров, таких как различные длины MA.

  • Включить другие инструменты анализа, такие как объем, волатильность для фильтра условий для улучшения показателя прибыли.

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

Заключение

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


/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)

// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")

// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20

// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target

// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)

// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)

// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought

// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought

// Strategy Logic
if (longConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))

if (shortConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))

// Opposite Strategy Logic
if (oppositeLongConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))

if (oppositeShortConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))

// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")

Больше