Stratégie d'arbitrage de décalage


Date de création: 2025-09-04 10:15:01 Dernière modification: 2025-09-10 11:51:36
Copier: 0 Nombre de clics: 102
2
Suivre
319
Abonnés

Stratégie d’arbitrage de décalage Stratégie d’arbitrage de décalage

La stratégie d’arbitrage des prix jumeaux

PAIR TRADING, ARBITRAGE, CORRELATION

C’est quoi cette opération magique ? 2 pièces peuvent jouer comme ça !

Vous savez, il y a une façon de négocier qui est aussi intéressante que d’observer les différences de comportement entre des jumeaux. Cette stratégie vise spécifiquement deux paires de transactions très liées (TRUMP et MELANIA, par exemple) et c’est notre chance de gagner de l’argent lorsque leurs variations de prix se produisent en “différence de rythme” !

Il s’agit d’un retour après avoir capturé le “ déséquilibre relationnel “. C’est comme si les jumeaux marchaient au même rythme, et soudain, l’un d’eux avance, l’autre le suit.

La logique centrale de la stratégie de Liu: trouver un déséquilibre, c’est trouver une opportunité

L’essentiel de cette stratégie est de calculer la différence entre les hauts et les bas des deux devises. Lorsque la différence dépasse le seuil défini (default 2%):

  • La différence de valeur est trop grande → Faire plus de devises relativement en retard
  • Variance trop faible → Les monnaies les plus avancées

Astuce: N’utilisez pas cette tactique sur des devises complètement sans rapport, tout comme vous ne pouvez pas vous attendre à ce que les pommes et les oranges aient le même cours !

️ Paramètres: simple et grossier, à première vue

Conditions de déclenchement

  • Marge de différence: 2% (sous réserve d’ajustement)
  • Nombre de transactions: 100 (corrigé en fonction du capital)

Contrôle des risques

  • Arrêt de l’eau: 5%
  • Stop-loss: 3 pour cent

Ce paramètre est comme une “poche d’air de sécurité” pour vos transactions, permettant de saisir les opportunités et de ne pas laisser les pertes de côté !

Les scénarios d’application: quand est-ce que cela fonctionne le mieux ?

Le meilleur moment pour l’utiliser

  1. Les deux monnaies sont historiquement liées
  2. Les fluctuations du marché sont modérées (ne pas utiliser dans des situations extrêmes)
  3. Il y a suffisamment de liquidités

Conseils utilesLa stratégie est la meilleure pour une ville agitée, c’est comme pêcher sur un lac calme, et mieux vaut éviter le vent quand il y a trop de vagues !

Rappelez-vous que le trading n’est pas un jeu, mais que vous devez faire la bonne chose au bon moment. Cette stratégie nous enseigne que parfois, observer les “relations” est plus important que de prédire la “direction”!

Code source de la stratégie
/*backtest
start: 2025-01-20 17:00:00
end: 2025-01-22 07:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"MELANIA_USDT","balance":500000,"tradesMode":"1"}]
*/

//@version=5
strategy("配对交易策略", overlay=true)

// 输入参数
pair_a = input("TRUMP_USDT.swap", title="交易对A", group="交易设置")
pair_b = input("MELANIA_USDT.swap", title="交易对B", group="交易设置")
trade_number = input.float(100, title="交易数量", minval=0.01, group="交易设置")
diff_level = input.float(0.02, title="差价阈值", minval=0.001, step=0.001, group="交易设置")
stop_profit_level = input.float(0.05, title="止盈比例", minval=0.001, step=0.001, group="风险管理")
stop_loss_level = input.float(0.03, title="止损比例", minval=0.001, step=0.001, group="风险管理")

// 获取两个交易对的数据
price_a = request.security(pair_a, timeframe.period, close)
open_a = request.security(pair_a, timeframe.period, open)
price_b = close
open_b = open

// 计算价格变化比例差异
change_a = (price_a - open_a) / open_a
change_b = (price_b - open_b) / open_b
ratio = change_a - change_b

// 策略状态变量
var float entry_price = na
var bool in_position = false
var int position_direction = 0  // 1为多头,-1为空头
var float take_profit_price = na
var float stop_loss_price = na

// 交易逻辑
long_condition = not in_position and ratio > diff_level
short_condition = not in_position and ratio < -diff_level

// 开仓逻辑
if long_condition
    strategy.entry("Long", strategy.long, qty=trade_number)
    entry_price := price_b
    in_position := true
    position_direction := 1
    take_profit_price := entry_price * (1 + stop_profit_level)
    stop_loss_price := entry_price * (1 - stop_loss_level)
    
if short_condition
    strategy.entry("Short", strategy.short, qty=trade_number)
    entry_price := price_b
    in_position := true
    position_direction := -1
    take_profit_price := entry_price * (1 - stop_profit_level)
    stop_loss_price := entry_price * (1 + stop_loss_level)

// 平仓逻辑
if in_position and position_direction == 1
    // 多头止盈止损
    if price_b >= take_profit_price or price_b <= stop_loss_price
        strategy.close("Long")
        in_position := false
        position_direction := 0
        entry_price := na
        take_profit_price := na
        stop_loss_price := na
        
if in_position and position_direction == -1
    // 空头止盈止损
    if price_b <= take_profit_price or price_b >= stop_loss_price
        strategy.close("Short")
        in_position := false
        position_direction := 0
        entry_price := na
        take_profit_price := na
        stop_loss_price := na

// 图表显示
plot(ratio, title="比例差异", color=color.blue, linewidth=2, overlay = false)
hline(diff_level, title="上阈值", color=color.red, linestyle=hline.style_dashed, overlay = false)
hline(-diff_level, title="下阈值", color=color.blue, linestyle=hline.style_dashed, overlay = false)
hline(0, title="零线", color=color.gray, linestyle=hline.style_dotted, overlay = false)

// 标记开仓点
plotshape(long_condition, title="买入信号", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green)
plotshape(short_condition, title="卖出信号", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red)

// 警报条件
alertcondition(long_condition, title="买入信号", message="配对交易策略:买入信号触发")
alertcondition(short_condition, title="卖出信号", message="配对交易策略:卖出信号触发")