
La stratégie utilise une rupture de la courbe de Brin pour détecter les signaux de négociation, permettant une paire de négociation sur deux actifs positifs liés, MCL et YG. Lorsque le prix de la MCL touche la courbe de Brin en haut, faites plus de MCL et faites plus de YG; lorsque le prix de la MCL touche la courbe de Brin en bas, faites plus de MCL et faites plus de YG, pour réaliser une négociation en cours sur la tendance des prix.
Tout d’abord, la stratégie calcule la moyenne SMA et le décalage StdDev sur la base du prix de clôture sur une période donnée. Ensuite, un décalage est ajouté au-dessus et en dessous de la moyenne SMA, formant ainsi une trajectoire supérieure et une trajectoire inférieure de la ceinture de Brin.
Cette stratégie utilise la méthode de négociation de rupture de la bande de blur, c’est-à-dire que le prix est plus élevé lors de la rupture et vide lors de la rupture. La bande de blur ajuste dynamiquement la largeur du canal pour s’adapter aux changements du marché et peut filtrer efficacement le bruit des fluctuations du marché. Contrairement au canal fixe, la largeur du canal de la bande de blur s’élargit ou se rétrécit avec les changements de la volatilité du marché.
Lorsqu’un MCL est en hausse, il indique que le prix du MCL est en tendance à la hausse, ce qui signifie qu’il fait plus de MCL tout en faisant moins de YG, c’est-à-dire en achetant des actifs plus forts et en vendant des actifs plus faibles pour profiter de l’élargissement de la différence de prix des deux actifs.
Le risque peut être réduit par des méthodes telles que l’optimisation des paramètres, la sélection de transactions plus pertinentes et plus liquides, et la définition d’une position de stop-loss raisonnable.
Cette stratégie est globalement simple et directe, elle capte la tendance via la courbe de Bryn et obtient des gains alpha de la paire. Cependant, il existe des espaces d’optimisation tels que l’optimisation des paramètres, l’arrêt des pertes et la sélection de la paire.
/*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)