Двунаправленная стратегия стоп-лосс-прибыль на основе стохастического кроссовера

Автор:Чао Чжан, Дата: 2024-03-08 15:12:42
Тэги:

img

Обзор

Эта стратегия использует перекрестные сигналы стохастического осциллятора для инициирования операций покупки и продажи. Когда линия %K пересекает линию %D и значение %K ниже 20, она открывает длинную позицию; когда линия %K пересекает линию %D и значение %K выше 80, она открывает короткую позицию. Кроме того, набор стратегий принимает дистанции прибыли и остановки потери для управления позициями и предотвращения расширения потерь. Кроме того, стратегия также устанавливает логические условия для закрытия позиций. Когда стохастический осциллятор показывает перекрестный сигнал, противоположный сигналу открытия, он закрывает соответствующую длинную или короткую позицию, даже если цена прибыли или остановки потери не достигнута.

Принцип стратегии

  1. Вычислить значения %K и %D 14-периодного стохастического осциллятора и сгладить их с помощью простых скользящих средних.
  2. Определить, пересекаются ли строка % K и строка % D:
    • Когда линия %K пересекает линию %D и значение %K ниже 20, это запускает сигнал покупки и открывает длинную позицию.
    • Когда линия %K пересекается ниже линии %D и значение %K превышает 80, это запускает сигнал продажи и открывает короткую позицию.
  3. Установите расстояния получения прибыли и остановки убытков (в тиках) для управления открытыми позициями:
    • Для длинных позиций установить цену получения прибыли TP выше цены входа и цену остановки SL ниже цены входа.
    • Для коротких позиций установить цену получения прибыли TP ниже цены входа и цену остановки SL выше цены входа.
    • Когда цена достигнет цены получения прибыли или стоп-лосса, закрыть соответствующую позицию.
  4. Установка логических условий закрытия позиций:
    • Когда линия %K пересекается ниже линии %D и значение %K меньше или равно 80, все длинные позиции закрываются.
    • Когда линия %K пересекает линию %D и значение %K больше или равно 20, закрыть все короткие позиции.

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

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

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

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

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

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

Резюме

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


/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("How to force strategies fire exit alerts not reversals", initial_capital = 1000, slippage=1, commission_type = strategy.commission.cash_per_contract, commission_value = 0.0001, overlay=true) 
// disclaimer: this content is purely educational, especially please don't pay attention to backtest results on any timeframe/ticker

// Entries logic: based on Stochastic crossover
k = ta.sma(ta.stoch(close, high, low, 14), 3)
d = ta.sma(k, 3)
crossover = ta.crossover(k,d)
crossunder = ta.crossunder(k,d)

if (crossover and k < 20)
	strategy.entry("Buy", strategy.long, alert_message="buy")
if (crossunder and k > 80)
	strategy.entry("Sell", strategy.short, alert_message="sell")

// StopLoss / TakeProfit exits:
SL = input.int(600, title="StopLoss Distance from entry price (in Ticks)")
TP = input.int(1200, title="TakeProfit Distance from entry price (in Ticks)")
strategy.exit("xl", from_entry="Buy", loss=SL, profit=TP, alert_message="closebuy")
strategy.exit("xs", from_entry="Sell", loss=SL, profit=TP, alert_message="closesell")

// logical conditions exits:
if (crossunder and k <= 80)
	strategy.close("Buy", alert_message="closebuy")
if (crossover and k >= 20)
	strategy.close("Sell", alert_message="closesell")

Больше