
Эта стратегия использует прорыв в коридоре Бринга для обнаружения торговых сигналов, чтобы осуществить двойную торговлю двумя положительно связанными активами: MCL и YG. Когда цена MCL касается коридора Бринга вверх, делается плюс MCL и плюс YG; когда цена MCL касается коридора Бринга вниз, делается плюс MCL и плюс YG, чтобы осуществить прогрессивную торговлю ценовым трендом.
Сначала стратегия рассчитывает среднюю 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)