В процессе загрузки ресурсов... загрузка...

Стратегия двойного направления торговли с высокой волатильностью: точка-основанная система входа в порог

Автор:Чао Чжан, Дата: 2024-11-18 16:11:21
Тэги:ATRSLТП

img

Обзор

Эта стратегия представляет собой двухнаправленную торговую систему, основанную на 30-минутных свечах, ищущую торговые возможности посредством мониторинга волатильности цен. Основной механизм включает в себя выявление значительных движений цен с использованием точечных порогов и выполнение сделок по подтверждению прорыва. Стратегия включает строгое управление временем, механизмы остановки потери / получения прибыли и протоколы управления торговлей для контролируемой автоматизированной торговли.

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

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

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

  1. Комплексное управление временем: ограниченные торговые окна предотвращают ложные сигналы в период неактивности
  2. Двусторонняя торговля: использование возможностей в обоих направлениях рынка, повышение эффективности капитала
  3. Устойчивый контроль рисков: фиксированные уровни стоп-лосса и уровни получения прибыли облегчают оценку и управление рисками
  4. Высокая автоматизация: полностью автоматизированная от идентификации сигнала до выполнения торгов, минимизируя вмешательство человека
  5. Гибкие настройки параметров: регулируемые ключевые параметры адаптируются к различным рыночным условиям

Стратегические риски

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

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

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

Заключение

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


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Big Candle Breakout Strategy Both Side", overlay=true)  

// Input for the point move threshold
point_move_in = input.int(100, title="Point Move Threshold")
point_target = input.int(100, title="Point Target")
point_stoploss = input.int(100, title="Point Stop Loss")
point_buffer = input.int(5, title="Point Buffer")

point_move = point_buffer + point_move_in

// Define the start and end times for trading
start_hour = 9
start_minute = 15
end_hour = 14
end_minute = 30

// Function to check if the current time is within the allowed trading window
in_time_range = (hour(time('30')) > start_hour or (hour(time('30')) == start_hour and minute(time('30')) >= start_minute)) and (hour(time('30')) < end_hour or (hour(time('30')) == end_hour and minute(time('30')) <= end_minute))

// Retrieve the open, high, low, and close prices of 30-minute candles
open_30m = request.security(syminfo.tickerid, "30", open)
high_30m = request.security(syminfo.tickerid, "30", high)
low_30m = request.security(syminfo.tickerid, "30", low)
close_30m = request.security(syminfo.tickerid, "30", close)

// Calculate the range of the candle
candle_range_long = (close_30m - open_30m)
candle_range_short = (open_30m - close_30m)

// Determine if the candle meets the criteria to be marked
big_candle_long = candle_range_long >= point_move_in
big_candle_short = candle_range_short >= point_move_in

// Variables to store the state of the trade
var float long_entry_price = na
var float long_target_price = na
var float long_stop_loss_price = na

var float short_entry_price = na
var float short_target_price = na
var float short_stop_loss_price = na

// Check if there are no active trades
no_active_trades = (strategy.opentrades == 0)

// Long entry condition
if (big_candle_long and na(long_entry_price) and in_time_range and no_active_trades)
    long_entry_price := high_30m+point_buffer
    long_target_price := long_entry_price + point_target
    long_stop_loss_price := long_entry_price - point_stoploss
    strategy.entry("Buy", strategy.long, stop=long_entry_price, limit=long_target_price)

plot(long_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Entry Price")
plot(long_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Target Price")
plot(long_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Stop Loss Price")

// Short entry condition
if (big_candle_short and na(short_entry_price) and in_time_range and no_active_trades)
    short_entry_price := low_30m - point_buffer
    short_target_price := short_entry_price - point_target
    short_stop_loss_price := short_entry_price + point_stoploss
    strategy.entry("Sell", strategy.short, stop=short_entry_price, limit=short_target_price)

plot(short_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Short Entry Price")
plot(short_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Short Target Price")
plot(short_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Short Stop Loss Price") 

// Long exit conditions
if (not na(long_entry_price))
    strategy.exit("Long Exit", from_entry="Buy", limit=long_target_price, stop=long_stop_loss_price)
   
// Short exit conditions
if (not na(short_entry_price))
    strategy.exit("Short Exit", from_entry="Sell", limit=short_target_price, stop=short_stop_loss_price)

// Reset trade status
if (strategy.position_size == 0)
    long_entry_price := na
    long_target_price := na
    long_stop_loss_price := na

    short_entry_price := na
    short_target_price := na
    short_stop_loss_price := na

// Plot the big candle and entry/exit levels
plotshape(series=big_candle_long, location=location.abovebar, style=shape.circle, color=color.green)
plotshape(series=big_candle_short, location=location.abovebar, style=shape.circle, color=color.red)

//plot(long_entry_price, style=plot.style_stepline, color=color.blue, linewidth=2, title="Entry Price")
//plot(long_target_price, style=plot.style_stepline, color=color.green, linewidth=2, title="Target Price")
//plot(long_stop_loss_price, style=plot.style_stepline, color=color.red, linewidth=2, title="Stop Loss Price")


Связанные

Больше