Estrategia de arbitraje de rezago


Fecha de creación: 2025-09-04 10:15:01 Última modificación: 2025-09-10 11:51:36
Copiar: 0 Número de Visitas: 102
2
Seguir
319
Seguidores

Estrategia de arbitraje de rezago Estrategia de arbitraje de rezago

Estrategia de arbitraje de precios gemelos

PAIR TRADING, ARBITRAGE, CORRELATION

¡Oh, qué magia es esta? ¡Dos monedas pueden jugar así!

¿Sabías que hay una estrategia de negociación que es tan interesante como observar las diferencias de comportamiento de los gemelos? Esta estrategia se enfoca en dos pares de negociación muy correlacionados (como TRUMP y MELANIA), y cuando sus cambios de precio son “desincronizados”, ¡es nuestra oportunidad de ganar dinero!

¡Concentrarse! Esto no es un descenso, sino una recuperación después de capturar el “desequilibrio de la relación”.

La lógica central de la estrategia de Liu: encontrar un “desequilibrio” es encontrar oportunidades

La esencia de esta estrategia consiste en calcular la diferencia de alza y bajada entre las dos monedas. Cuando la diferencia supera el umbral establecido (el 2% por defecto):

  • La diferencia es demasiado grande → Hacer más monedas relativamente atrasadas
  • La diferencia es demasiado pequeña → Las monedas con menos divisas son las más importantes

Guía para evitar el hoyo: no utilices esta estrategia con monedas totalmente irrelevantes, como no puedes esperar que las manzanas y los plátanos tengan el mismo movimiento de precios!

️ Configuración de parámetros: sencillo, crudo y fácil de entender

Condiciones para el desencadenamiento de la operación

  • Escala de precios: 2% (se puede ajustar)
  • Número de transacciones: 100 (ajustado por el capital)

Control de riesgos

  • El 5% de la suspensión
  • Detener el daño: 3%

Esta configuración es como una “bolsa de seguridad” para tus operaciones, que te permite aprovechar las oportunidades y no perder el control de las pérdidas.

¿Cuándo es el mejor momento para usar este truco?

El mejor momento para usarlo

  1. Las dos monedas tienen una fuerte correlación histórica
  2. La volatilidad del mercado es moderada (no se debe usar en situaciones extremas)
  3. Hay suficiente apoyo de liquidez.

Buenos consejosLa estrategia es muy buena para las ciudades con problemas, es como pescar en un lago tranquilo, ¡pero es mejor evitar el viento cuando hay demasiadas olas!

Recuerde que el comercio no es un juego, sino hacer lo correcto en el momento adecuado. ¡La estrategia nos enseña que a veces es más importante observar las relaciones que predecir la dirección!

Código Fuente de la Estrategia
/*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="配对交易策略:卖出信号触发")