Williams %R Стратегия перекрестка с фильтром скользящей средней

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

Обзор

Эта стратегия использует кроссоверные сигналы Williams %R и добавляет фильтр скользящей средней для создания гибкой краткосрочной торговой системы.

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

  1. Вычислить Williams %R и 200-периодную простую скользящую среднюю (MA).

  2. Продолжительность сделки начинается, когда %R превышает уровень -50 на порог и закрытие превышает MA.

  3. Пройти короткий период, когда %R пересекает уровень ниже -50 на порог и закрытие находится ниже MA.

  4. Если длинная, закрыть позицию, когда близкие достигают уровень получения прибыли (цена входа + пипы получения прибыли) или уровень остановки потери (цена входа - пипы остановки потери).

  5. Если короткая, закрыть позицию, когда близкие достигают прибыли (цена входа - прибыль пип) или уровень остановки потери (цена входа + остановка пип).

Стратегия использует природу перекупленности/перепроданности Williams %R и сочетает в себе фильтр тренда MA для более надежных сигналов.

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

  1. Williams %R эффективно идентифицирует уровни перекупленности/перепроданности с помощью четких сигналов.

  2. Фильтр MA добавляет тенденции, чтобы избежать сбоев.

  3. Настраиваемые параметры для гибкости.

  4. Следующая стоп-потеря блокирует большинство прибылей.

  5. Простая, понятная логика, легкая для понимания и реализации, хорошая для краткосрочной торговли.

  6. Применяется для нескольких продуктов с гибкостью.

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

  1. У Уильямса %R отстающий эффект, может упустить некоторые возможности.

  2. У фильтра также есть некоторая задержка.

  3. Строгие правила перекупки/перепродажи могут упускать из виду некоторые тенденции.

  4. Стоп-потеря слишком плотно может быть остановлена с помощью випса.

  5. Слишком широкая стоп-лосс может ограничить прибыль.

  6. Параметры должны быть настроены для различных рыночных условий.

Руководство по оптимизации

  1. Оптимизируйте параметры для более высокой скорости победы.

  2. Добавьте другие фильтры, такие как MACD, KDJ и т.д.

  3. Попробуйте разные типы MA, например, экспоненциальный MA.

  4. Добавьте тенденционный уклон, торгуйте только в направлении тренда.

  5. Оптимизируйте стратегии стоп-лосса, такие как динамические остановки, выходы люстры и т. Д.

  6. Попробуйте размещение позиции, как фиксированная дроби, Мартингейл и т.д.

  7. Используйте машинное обучение для лучшей оптимизации параметров.

Заключение

Эта стратегия объединяет сигналы Williams %R сверхпокупки/сверхпродажи с фильтром тренда MA в простую краткосрочную систему. У нее есть четкие сигналы входа и логика остановки потери / получения прибыли. Дальнейшие улучшения могут быть сделаны с помощью настройки параметров, выбора индикатора, управления остановкой потери и т. Д. Для большей надежности.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Williams %R Cross Strategy with MA Filter", overlay=true)

// User Inputs
wrLength = input(14, title="Williams %R Length")
crossPips = input(10, title="Cross Threshold (Pips)")
takeProfitPips = input(30, title="Take Profit (Pips)")
stopLossPips = input(20, title="Stop Loss (Pips)")

// Calculate Williams %R
wrHigh = ta.highest(high, wrLength)
wrLow = ta.lowest(low, wrLength)
wr = (wrHigh - close) / (wrHigh - wrLow) * -100

// Calculate 200-period Simple Moving Average
ma200 = ta.sma(close, 200)

// Entry Conditions
enterLong = ta.crossover(wr, -50 - crossPips) and close > ma200
enterShort = ta.crossunder(wr, -50 + crossPips) and close < ma200

// Exit Conditions
exitLong = close >= (strategy.position_avg_price + (takeProfitPips / syminfo.mintick)) or close <= (strategy.position_avg_price - (stopLossPips / syminfo.mintick))
exitShort = close <= (strategy.position_avg_price - (takeProfitPips / syminfo.mintick)) or close >= (strategy.position_avg_price + (stopLossPips / syminfo.mintick))

// Order Management
if enterLong
    strategy.entry("Long", strategy.long)
    
if enterShort
    strategy.entry("Short", strategy.short)

if exitLong
    strategy.close("Long")

if exitShort
    strategy.close("Short")


Больше