Эта стратегия использует прорывы полосы Боллинджера для генерации торговых сигналов и реализации пары торговли между двумя положительно коррелирующими активами MCL и YG. Она длинная MCL и короткая YG, когда цена MCL касается верхней полосы, и короткая MCL и длинная YG, когда цена MCL касается нижней полосы, для торговли вдоль ценового тренда.
Во-первых, стратегия рассчитывает линию SMA и StdDev на основе цен закрытия за определенный период. Затем добавляется смещение выше и ниже SMA для формирования верхней и нижней полос полос Боллинджера. Сигнал покупки генерируется, когда цена касается верхней полосы, и сигнал продажи, когда цена касается нижней полосы.
Стратегия использует логику торговли с прорывом, известную как полосы Боллинджера - идти длинным, когда цена превышает верхнюю полосу, и идти коротким, когда цена превышает нижнюю полосу. полосы Боллинджера динамически регулируют ширину полос на основе волатильности рынка, что помогает фильтровать шум рынка в промежуточные периоды. В отличие от полос фиксированного канала, полосы Боллинджера расширяются во время высокой волатильности и сужаются во время низкой волатильности. Это позволяет фильтровать некоторый шум, когда волатильность высока, и улавливать меньшие прорывы, когда волатильность низкая.
Он реализует торговлю парой между двумя положительно коррелирующими активами MCL и YG. Когда MCL превышает верхнюю полосу, это показывает, что MCL находится в восходящем тренде. Стратегия идет длинный MCL и короткий YG - покупка более сильного актива и продажа более слабого, чтобы извлечь выгоду из расхождения в их ценах.
Риски могут быть уменьшены путем оптимизации параметров, выбора активов с более сильной корреляцией и ликвидностью, установки надлежащего стоп-лосса и т.д.
В целом стратегия проста и понятна, захватывая тенденции с помощью полос Боллинджера и получая альфу от торговли парами. Но есть возможности для улучшения настроения параметров, остановки потери и выбора пары. Дальнейшее тестирование параметров, торговых средств, фильтров тренда и т. Д. Может улучшить эффективность стратегии.
/*backtest start: 2022-11-07 00:00:00 end: 2023-11-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © shark792 //@version=5 // 1. Define strategy settings strategy(title="MCL-YG Pair Trading Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.cash_per_order, commission_value=4, slippage=2) smaLength = input.int(title="SMA Length", defval=20) stdLength = input.int(title="StdDev Length", defval=20) ubOffset = input.float(title="Upper Band Offset", defval=1, step=0.5) lbOffset = input.float(title="Lower Band Offset", defval=1, step=0.5) usePosSize = input.bool(title="Use Position Sizing?", defval=true) riskPerc = input.float(title="Risk %", defval=0.5, step=0.25) // 2. Calculate strategy values smaValue = ta.sma(close, smaLength) stdDev = ta.stdev(close, stdLength) upperBand = smaValue + (stdDev * ubOffset) lowerBand = smaValue - (stdDev * lbOffset) riskEquity = (riskPerc / 100) * strategy.equity atrCurrency = (ta.atr(20) * syminfo.pointvalue) posSize = usePosSize ? math.floor(riskEquity / atrCurrency) : 1 // 3. Output strategy data plot(series=smaValue, title="SMA", color=color.teal) plot(series=upperBand, title="UB", color=color.green, linewidth=2) plot(series=lowerBand, title="LB", color=color.red, linewidth=2) // 4. Determine long trading conditions enterLong = ta.crossover(close, upperBand) exitLong = ta.crossunder(close, smaValue) // 5. Code short trading conditions enterShort = ta.crossunder(close, lowerBand) exitShort = ta.crossover(close, smaValue) // 6. Submit entry orders if enterLong strategy.entry(id="EL", direction=strategy.long, qty=posSize) if enterShort strategy.entry(id="ES", direction=strategy.short, qty=posSize) // 7. Submit exit orders strategy.close(id="EL", when=exitLong) strategy.close(id="ES", when=exitShort)