Стратегия смены импульса

Автор:Чао Чжан, Дата: 2023-11-13 10:02:25
Тэги:

img

Обзор

Эта стратегия направлена на обнаружение процентного изменения цен на акции в течение определенного периода времени и генерирует торговые сигналы при превышении порога.

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

  1. Входной параметр x представляет собой количество периодов свечей, которые необходимо проверить, при этом по умолчанию для 5-минутных свечей 5.

  2. Вычислить процентное изменение текущей цены закрытия относительно цены закрытия x периодов назад, сохраненное как trueChange1 и trueChange2.

  3. Входные параметры percentChangePos и percentChangeNeg представляют собой пороговое процентное изменение с значениями по умолчанию 0,4% и -0,4%.

  4. Когда trueChange1 больше %ChangePos, генерируется сигнал покупки. Когда trueChange2 меньше %ChangeNeg, генерируется сигнал продажи.

  5. Добавить цвета текста и фона для состояния покупки и продажи.

  6. Установите правила входа и выхода на основе сигналов.

  7. Настройте сигналы и чертежи.

Преимущества

  1. Используйте процентное изменение, а не абсолютное изменение цены, адаптируемое к различным запасам.

  2. Гибко устанавливать положительные и отрицательные процентные пороги для выявления прорывов полос Боллинджера.

  3. Регулируемый период обнаружения для выявления изменений тенденции в разные временные рамки.

  4. Конфигурируемые сигналы для обнаружения важных сигналов.

  5. Простая и понятная логика сигналов, легкая в понимании и использовании.

  6. Поймать краткосрочные изменения на открытом рынке.

Риски

  1. Процентная смена не определяет направление тренда, может генерировать вводящие в заблуждение сигналы.

  2. Параметры по умолчанию могут не подходить для всех запасов, требуется специальная настройка.

  3. Нет остановки убытков, невозможно ограничить убытки.

  4. Частые сигналы, потенциально высокие торговые издержки.

  5. Невозможно определить структуру рынка, склонны к сбоям на различных рынках.

Решения:

  1. Объедините с индикаторами тренда, такими как линейная регрессия, чтобы определить общую тенденцию.

  2. Оптимизировать параметры на основе характеристик запасов.

  3. Внедрить правильную стоп-лосс.

  4. Профильтруйте сигналы, чтобы избежать чрезмерной торговли.

  5. Измерить структуру рынка с более высоких временных рамок, чтобы избежать торговых сбоев.

Усовершенствования

  1. Добавьте механизмы остановки потери, такие как остановка остановки потери, чтобы ограничить потери.

  2. Добавьте условия фильтрации, такие как объем, скользящие средние, чтобы избежать сбоев.

  3. Оптимизируйте правила входа и выхода с помощью таких индикаторов, как MACD.

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

  5. Включите анализ структуры рынка, чтобы избежать ошибок.

  6. Динамические параметры, основанные на волатильности и ликвидности.

  7. Для определения общей тенденции комбинируйте с более высоким временным анализом.

Резюме

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


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)

x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")

//if (percentChange > trueChange) then Signal  

plotChar1 = if percentChangePos > trueChange1
    false
else
    true

plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )

trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")

plotChar2 = if percentChangeNeg < trueChange2
    false
else
    true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)

//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2

//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2


col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)

//Background Highlights
//bgcolor(condColor, transp=70)


//---------

barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)

//------------------------------------------------------------------------

buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2


//------------------------------------------------------------------------
/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

//-------------------------------------------------

if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)


/////////////////// Plotting //////////////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


Больше