Эта стратегия объединяет скользящие средние и стохастический осциллятор для реализации автоматизированной системы торговли акциями. Она использует две скользящие средние различной длины и стохастический индикатор для улавливания тренда и сигналов перекупления/перепродажи, и принимает решения о покупке и продаже на основе направления тренда и сигналов индикатора в регионах перекупления/перепродажи.
Быстрая линия (5-дневная) и медленная линия (20-дневная) скользящая средняя используются. Быстрая линия, пересекающая над медленной линией, является сигналом покупки, а пересекающая ниже - сигналом продажи.
Стохастические параметры устанавливаются на: K-линейный период 14, K-линейный гладкий период 3, D-линейный гладкий период 3. Ниже 20 на линии K - перепроданный регион, а выше 80 - перекупленный регион.
Условие покупки: быстрый перекресток MA над медленными линиями MA и K <20 (регион перепроданности) Условие продажи: быстрый перекресток MA ниже медленной линии MA и K > 80 (перекупленный регион)
Выйти длинным, когда выполняется условие покупки; выйти коротким, когда выполняется условие продажи.
Установите 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")