Эта стратегия направлена на обнаружение процентного изменения цен на акции в течение определенного периода времени и генерирует торговые сигналы при превышении порога.
Входной параметр x представляет собой количество периодов свечей, которые необходимо проверить, при этом по умолчанию для 5-минутных свечей 5.
Вычислить процентное изменение текущей цены закрытия относительно цены закрытия x периодов назад, сохраненное как trueChange1 и trueChange2.
Входные параметры percentChangePos и percentChangeNeg представляют собой пороговое процентное изменение с значениями по умолчанию 0,4% и -0,4%.
Когда trueChange1 больше %ChangePos, генерируется сигнал покупки. Когда trueChange2 меньше %ChangeNeg, генерируется сигнал продажи.
Добавить цвета текста и фона для состояния покупки и продажи.
Установите правила входа и выхода на основе сигналов.
Настройте сигналы и чертежи.
Используйте процентное изменение, а не абсолютное изменение цены, адаптируемое к различным запасам.
Гибко устанавливать положительные и отрицательные процентные пороги для выявления прорывов полос Боллинджера.
Регулируемый период обнаружения для выявления изменений тенденции в разные временные рамки.
Конфигурируемые сигналы для обнаружения важных сигналов.
Простая и понятная логика сигналов, легкая в понимании и использовании.
Поймать краткосрочные изменения на открытом рынке.
Процентная смена не определяет направление тренда, может генерировать вводящие в заблуждение сигналы.
Параметры по умолчанию могут не подходить для всех запасов, требуется специальная настройка.
Нет остановки убытков, невозможно ограничить убытки.
Частые сигналы, потенциально высокие торговые издержки.
Невозможно определить структуру рынка, склонны к сбоям на различных рынках.
Решения:
Объедините с индикаторами тренда, такими как линейная регрессия, чтобы определить общую тенденцию.
Оптимизировать параметры на основе характеристик запасов.
Внедрить правильную стоп-лосс.
Профильтруйте сигналы, чтобы избежать чрезмерной торговли.
Измерить структуру рынка с более высоких временных рамок, чтобы избежать торговых сбоев.
Добавьте механизмы остановки потери, такие как остановка остановки потери, чтобы ограничить потери.
Добавьте условия фильтрации, такие как объем, скользящие средние, чтобы избежать сбоев.
Оптимизируйте правила входа и выхода с помощью таких индикаторов, как MACD.
Используйте машинное обучение для автоматической оптимизации параметров.
Включите анализ структуры рынка, чтобы избежать ошибок.
Динамические параметры, основанные на волатильности и ликвидности.
Для определения общей тенденции комбинируйте с более высоким временным анализом.
Эта стратегия генерирует сделки путем сравнения процентных изменений цен с заранее установленными порогами, что делает ее краткосрочной стратегией среднего отклонения. Преимущества заключаются в ее простоте, гибкости и способности улавливать внезапные движения рынка. Недостатками являются риски, которые можно решить с помощью оптимизации и правильного использования с анализом трендов и управлением рисками. В целом, она имеет надежную логику и может быть эффективной краткосрочной торговой стратегией при правильном усилении.
/*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)