В процессе загрузки ресурсов... загрузка...

Ранняя стратегия выхода с движущейся средней прибыли

Автор:Чао Чжан, Дата: 2023-12-01 14:32:48
Тэги:

img

Обзор

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

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

Стратегия использует 3 скользящих средних с различными параметрами: 14-дневные, 28-дневные и 56-дневные линии. Она длится, когда 14-дневная линия пересекает 56-дневную, и становится короткой, когда пересекает ниже. Этот базовый подход отслеживает долгосрочные тенденции.

Ключевое нововведение заключается в том, что он останавливает потери и получает прибыль только в период с 4 до 5 часов вечера. Статистика показывает 70% вероятность ежедневного высокого / низкого уровня в течение первого часа после открытия.

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

Преимущества этой стратегии включают:

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

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

Существуют также некоторые риски:

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

Возможности для расширения

Некоторые способы дальнейшей оптимизации стратегии:

  1. Испытать различные комбинации скользящих средних для поиска оптимальных параметров
  2. Диапазон прекращения потерь на основе вариантов волатильности конкретных акций
  3. Добавьте фильтр объема, чтобы избежать ловушек
  4. Добавление динамических остановок к отступлениям после прорывов

Заключение

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


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MAC 1st Trading Hour Walkover", overlay=true)

// Setting up timeperiod for testing
startPeriodYear = input(2014, "Backtest Start Year")
startPeriodMonth = input(1, "Backtest Start Month")
startPeriodDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0)

stopPeriodYear = input(2025, "Backtest Stop Year")
stopPeriodMonth = input(12, "Backtest Stop Month")
stopPeriodDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0)

// Moving Averages
ema14 = ema(close, 14)
ema28 = ema(close, 28)
sma56 = sma(close, 56)

// Plot
plot(ema14, title="ema14", linewidth=2, color=green)
plot(ema28, title="ema28", linewidth=2, color=red)
plot(sma56, title="sma56", linewidth=3, color=blue)

// Strategy
goLong = cross(ema14, sma56) and ema14 > ema28
goShort = cross(ema14, sma56) and ema14 < ema28

// Strategy.When to enter
if time >= testPeriodStart
    if time <= testPeriodStop
        strategy.entry("Go Long", strategy.long, 1.0, when=goLong)
        strategy.entry("Go Short", strategy.short, 1.0, when=goShort)

// Strategy.When to take profit 
if time >= testPeriodStart 
    if time <= testPeriodStop 
        strategy.exit("Close Long", "Go Long", profit=2000) 
        strategy.exit("Close Short", "Go Short", profit=2000) 

// Strategy.When to stop out 
// Some studies show that 70% of the days high low happen in the first hour 
// of trading. To avoid having that volatility fire our loss stop we 
// ignore price action in the morning, but allow stops to fire in the afternoon. 
if time("60", "1000-1600") 
    strategy.exit("Close Long", "Go Long", loss=500) 
    strategy.exit("Close Short", "Go Short", loss=500)

Больше