Эта стратегия принимает решения о покупке и продаже на основе индикатора импульса и индикатора объема торговли акций. Она покупает, когда повышающийся импульс цен на акции ускоряется и объем торговли увеличивается, и продает, когда снижающийся импульс ускоряется и объем торговли увеличивается.
Сила и длительность трендов изменения цен на акции определяют импульс. Эта стратегия рассчитывает изменение с предыдущих дней, близкие к импульсу цен. Импульс является положительным, когда цены растут последовательно, и отрицательным, когда цены падают последовательно. Стратегия также сочетает в себе индикатор объема торговли. Сигналы покупки и продажи запускаются только тогда, когда объем торгов значительно выше 20-дневной скользящей средней (выше порога).
В частности, условие покупки представляет собой перекресток индикатора импульса выше нуля с объемом торговли более чем в 2 раза превышающим 20-дневный средний показатель. Условие продажи является противоположным. После покупки целевая прибыль устанавливается в 0,8 раза выше входной цены, а стоп-лосс - в 0,5 раза. Целевая прибыль и стоп-лосс после продажи соответствующим образом изменяются.
Самым большим преимуществом является захват краткосрочных рыночных тенденций и поведения стада. Когда цены на акции демонстрируют устойчивое повышение или падение, многие розничные и институциональные инвесторы будут следовать более сильному импульсу цен для торговли. Это создает самоподдерживающуюся краткосрочную ценовую тенденцию. Стратегия генерирует избыточную доходность, используя такую рыночную психологию. По сравнению с пассивными стратегиями отслеживания индекса, ожидаемый избыточный доход этой стратегии выше.
Во-первых, краткосрочные колебания цен непредсказуемы. Существуют риски резких переворотов из-за внезапных событий, которых нельзя полностью избежать, несмотря на стоп-потери. Во-вторых, качество данных торговых объемов варьируется. Невозможно полностью исключить возможность манипулирования, что искажает торговые сигналы. В-третьих, простой анализ цен и объемов не может точно контролировать краткосрочные тенденции. Основные структурные сдвиги на рынке могут повлиять на эффективность стратегии.
Для улучшения эффективности стратегии можно было бы включить больше источников данных. Например, объем обсуждений соответствующих акций на платформах социальных сетей может указывать на будущие движения цен. Эти данные могут обеспечить дополнительные сигналы входа и выхода. Фундаментальные показатели, такие как соотношение P / E и соотношение P / B, также могут помочь проверить устойчивость изменения цен и уменьшить ошибочные сделки.
Эта стратегия определяет краткосрочные тенденции и поведение стада. Такие количественные стратегии, основанные на больших данных и поведенческом финансировании, могут давать более высокие ожидаемые доходы, чем традиционные стратегии.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Momentum and Volume Bot', overlay=true) // Define strategy parameters profit_target_percent = input(0.8, title='Profit Target (%)') stop_loss_percent = input(0.5, title='Stop Loss (%)') volume_threshold = input(2, title='Volume Threshold') // Calculate momentum momentum = close - close[1] // Calculate average volume avg_volume = ta.sma(volume, 20) // Buy condition buy_condition = ta.crossover(momentum, 0) and volume > avg_volume * volume_threshold // Sell condition sell_condition = ta.crossunder(momentum, 0) and volume > avg_volume * volume_threshold // Strategy logic strategy.entry('Buy', strategy.long, when=buy_condition) strategy.entry('Sell', strategy.short, when=sell_condition) // Set profit target and stop loss strategy.exit('Take Profit/Stop Loss', from_entry='Buy', profit=close * profit_target_percent / 100, loss=close * stop_loss_percent / 100) strategy.exit('Take Profit/Stop Loss', from_entry='Sell', profit=close * profit_target_percent / 100, loss=close * stop_loss_percent / 100) // Plotting plotshape(series=buy_condition, title='Buy Signal', color=color.new(color.green, 0), style=shape.triangleup, size=size.small) plotshape(series=sell_condition, title='Sell Signal', color=color.new(color.red, 0), style=shape.triangledown, size=size.small)