Стратегия JiaYiBing Quantitative Trend Momentum Trading - это долгосрочная стратегия количественного трейдинга, которая сочетает в себе отслеживание тренда, индикаторы импульса и каналы Боллингерских полос. Стратегия использует перекрестный переход быстрых и медленно движущихся средних для определения направления тренда и подтверждает сигналы входа на основе каналов Боллингерских полос и индикаторов импульса. Стратегия также включает меры контроля риска, такие как получение прибыли, стоп-лосс, стоп-стоп и размещение позиций.
Основной принцип этой стратегии заключается в том, чтобы захватить рыночные возможности, используя ценовые тенденции и эффект импульса. В частности, стратегия использует две скользящие средние с разными периодами (быстрыми и медленными), чтобы определить направление ценовой тенденции. Когда быстрый скользящий средний пересекает верхнюю часть медленного скользящего среднего, это указывает на восходящую тенденцию, и стратегия генерирует длинный сигнал; наоборот, когда быстрый скользящий средний пересекает нижнюю часть медленного скользящего среднего, это указывает на нисходящую тенденцию, и стратегия генерирует короткий сигнал.
Для дальнейшего подтверждения тренда и сроков входа стратегия также включает в себя полосы Боллинджера и индикаторы импульса. полосы Боллинджера состоят из трех линий: средняя линия - это скользящая средняя, а верхние и нижние полосы - это определенное количество стандартных отклонений выше и ниже средней линии. Когда цена превышает верхнюю полосу Боллинджера, это указывает на сильный подъемный импульс, и стратегия будет длинной; когда цена превышает нижнюю полосу Боллинджера, это указывает на сильный нисходящий импульс, и стратегия будет короткой.
Кроме того, стратегия также вводит индикатор импульса, который измеряет скорость изменения цен путем сравнения текущей цены с ценой за определенный период.
С точки зрения размера позиции, стратегия позволяет устанавливать размер позиции на основе собственного капитала счета и предпочтения риска.
В целом, Стратегия торговли количественным трендом JiaYiBing стремится поймать тенденционные рыночные возможности при строгом контроле риска через несколько аспектов, таких как отслеживание тренда, подтверждение импульса и управление рисками, чтобы достичь стабильной доходности от инвестиций.
Отслеживание трендов: стратегия использует перекрестное сочетание быстрых и медленно движущихся средних для захвата трендовых ценовых возможностей, позволяя ей идти длинным в восходящих и коротким в нисходящих тенденциях, адаптируясь к различным рыночным условиям.
Подтверждение импульса: введение индикатора импульса как вторичного подтверждения тренда помогает отфильтровать ложные сигналы и улучшить качество входа.
Боллингерские полосы способствуют принятию решений: Боллингерские полосы могут отражать диапазон волатильности цен, а прорывы Боллингерских полос могут рассматриваться как сигналы ускорения тренда или аномальных колебаний цен, обеспечивающих ориентиры для входа.
Размер позиций: Стратегия использует метод размещения позиций, основанный на процентах собственного капитала счета и максимальном пределе, что позволяет гибко контролировать капитал, используемый в каждой сделке, как полностью используя средства, так и избегая чрезмерного риска.
Принимайте прибыль и остановите убытки: Стратегия набора прибыли, остановите убытки и отслеживание уровней остановки убытков, которые могут защитить прибыль, когда цена движется в ожидаемом направлении, и решительно сократить убытки, когда цена меняется, эффективно контролируя максимальную потерю каждой сделки.
Оптимизация по нескольким параметрам: стратегия включает в себя несколько регулируемых параметров, таких как скользящие средние периоды, параметры полос Боллинджера, процентные ставки прибыли и стоп-лосса и т. д., которые можно оптимизировать для повышения адаптивности и надежности стратегии.
Частая торговля: стратегия генерирует сигналы входа на основе скользящих средних кроссоверов и прорывов полосы Боллинджера.
Чувствительность параметров: Стратегия включает в себя несколько параметров, таких как скользящие средние периоды, периоды импульса, параметры полос Боллинджера и т. Д. Выбор различных параметров может оказать значительное влияние на эффективность стратегии. Если параметры не выбраны должным образом, это может привести к плохой эффективности стратегии.
Признание отстающего тренда: скользящие средние показатели являются отстающими, особенно когда период скользящей средней длинный, скорость выявления обратных тенденций будет медленнее, и лучшее время входа может быть упущено.
Риск стоп-лосса: хотя стратегия устанавливает меры стоп-лосса, в экстремальных рыночных условиях (таких как быстрые разрывы) цена может напрямую пересечь уровень стоп-лосса, что приводит к фактическим потерям, превышающим ожидания.
Концентрированный риск позиции: если стратегия непрерывно генерирует сигналы в одном направлении в течение определенного периода, это может привести к чрезмерной концентрации позиций в одном направлении, что приводит к увеличению риска позиции.
Риск ликвидности: на эффективность стратегии при обратном тестировании и торговле в режиме реального времени может повлиять ликвидность рынка, особенно при работе с крупными фондами, которые могут столкнуться с проблемами скольжения и недостаточного объема торговли.
Внедрить больше технических индикаторов: на основе текущих скользящих средних значений, импульса и полос Боллинджера можно ввести больше технических индикаторов, таких как RSI и MACD, чтобы повысить надежность сигналов посредством подтверждения с помощью нескольких индикаторов.
Оптимизировать механизмы входа и выхода: для повышения гибкости и рентабельности стратегии может быть введено больше условий в определении входа и выхода, таких как требование определенного объема торговли до прорыва цен, использование поэтапного закрытия позиции или отсрочки получения прибыли для выхода.
Динамическая корректировка параметров: для периодов скользящих средних, периодов импульса, параметров полос Боллинджера и т. д. может быть разработан набор адаптивных механизмов параметров для динамической корректировки значений параметров на основе различных состояний рынка и уровней волатильности, повышая адаптивность стратегии.
Улучшение размеров позиций: на основе текущего размеров позиций, более продвинутые методы управления деньгами, такие как критерий Келли, фиксированный коэффициент, динамический капитал и т. д., могут быть введены для улучшения доходности баланса и рисков.
Если некоторые фундаментальные факторы, такие как макроэкономические данные и тенденции в отрасли, могут быть объединены для фильтрации и подтверждения технических сигналов, это может улучшить эффективность стратегии.
Улучшить согласованность бэктестирования и торговли в режиме реального времени: эффективность стратегии в бэктестировании и торговле в режиме реального времени может отличаться. Необходимо сосредоточиться на качестве исполнения бэктестирования и торговли в режиме реального времени, включая такие факторы, как цена исполнения, скольжение и задержка, чтобы обеспечить согласованность эффективности реального времени с результатами бэктестирования.
JiaYiBing Quantitative Trend Momentum Trading Strategy является количественной торговой стратегией, которая интегрирует несколько методов технического анализа.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('甲易炳', overlay=true) // Parameters trendPeriod = input(50, 'Trend Period') momentumPeriod = input(14, 'Momentum Period') bbPeriod = input(20, 'Bollinger Bands Period') bbDeviation = input(2, 'Bollinger Bands Deviation') fastMALen = input(23, 'Fast SMA Length') slowMALen = input(50, 'Slow SMA Length') longTakeProfitPerc = input.float(0.5, 'Long Take Profit %', minval=0.05, step=0.05) * 0.01 shortTakeProfitPerc = input.float(0.5, 'Short Take Profit %', minval=0.05, step=0.05) * 0.01 stopLossPerc = input.float(0.5, 'Stop Loss %', minval=0.05, step=0.05) * 0.01 enableTrailing = input.bool(true, 'Enable Trailing') trailingTakeProfitPerc = input.float(0.01, 'Trailing Take Profit %', minval=0.01, maxval=100, step=0.01) * 0.01 trailingStopLossPerc = input.float(0.5, 'Trailing Stop Loss %', minval=0.05, step=0.05) * 0.01 qty_percent = input.int(20, 'Position Size %', step=1) qty_cap = input.int(10000, 'Max Position Size', step=1000) beast_mode = input.bool(false, 'Beast Mode') set_cap = input.bool(true, 'Cap Position Size') strategy.initial_capital = 50000 // Calculate position size qty1 = (strategy.initial_capital + strategy.netprofit) * qty_percent / 10 / close qty = (set_cap and qty1 > qty_cap) ? qty_cap : qty1 // Calculate moving averages fastMA = ta.sma(close, fastMALen) slowMA = ta.sma(close, slowMALen) // Bollinger Bands [upperBB, middleBB, lowerBB] = ta.bb(close, bbPeriod, bbDeviation) // Entry conditions buySignal = ta.crossover(close, fastMA) and close > upperBB sellSignal = ta.crossunder(close, fastMA) and close < lowerBB // Rampage mode entry conditions if beast_mode buySignal := buySignal and fastMA > fastMA[2] sellSignal := sellSignal and fastMA < fastMA[2] // Active positions longIsActive = buySignal or strategy.position_size > 0 shortIsActive = sellSignal or strategy.position_size < 0 // Declare take profit and stop loss variables var float longTakeProfitPrice = na var float shortTakeProfitPrice = na // Take profit and stop loss calculation if longIsActive if buySignal and not (strategy.position_size > 0) longTakeProfitPrice := close * (1 + longTakeProfitPerc) else longTakeProfitPrice := nz(longTakeProfitPrice[1], close * (1 + longTakeProfitPerc)) if shortIsActive if sellSignal and not (strategy.position_size < 0) shortTakeProfitPrice := close * (1 - shortTakeProfitPerc) else shortTakeProfitPrice := nz(shortTakeProfitPrice[1], close * (1 - shortTakeProfitPerc)) longTrailingTakeProfitStepTicks = longTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick shortTrailingTakeProfitStepTicks = shortTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick longTrailingStopLossPrice = close * (1 - trailingStopLossPerc) shortTrailingStopLossPrice = close * (1 + trailingStopLossPerc) // Entries and exits if strategy.position_size == 0 strategy.entry('Long Entry', qty=qty, direction=strategy.long, when=buySignal, alert_message='Long Entry') strategy.entry('Short Entry', qty=qty, direction=strategy.short, when=sellSignal, alert_message='Short Entry') strategy.exit('Long Take Profit', 'Long Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : longTakeProfitPrice, trail_price=enableTrailing ? longTakeProfitPrice : na, trail_offset=enableTrailing ? longTrailingTakeProfitStepTicks : na, when=longIsActive, alert_message='Long Take Profit') strategy.exit('Short Take Profit', 'Short Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : shortTakeProfitPrice, trail_price=enableTrailing ? shortTakeProfitPrice : na, trail_offset=enableTrailing ? shortTrailingTakeProfitStepTicks : na, when=shortIsActive, alert_message='Short Take Profit') else if longIsActive strategy.exit('Long Stop Loss', 'Long Entry', stop=longTrailingStopLossPrice, when=longIsActive) if shortIsActive strategy.exit('Short Stop Loss', 'Short Entry', stop=shortTrailingStopLossPrice, when=shortIsActive) // Plotting plot(fastMA, 'Fast SMA', color=color.blue, linewidth=1, style=plot.style_line) plot(slowMA, 'Slow SMA', color=color.orange, linewidth=1, style=plot.style_line) plot(upperBB, 'Upper BB', color=color.green, linewidth=1, style=plot.style_line) plot(lowerBB, 'Lower BB', color=color.red, linewidth=1, style=plot.style_line)