Стратегия лагового арбитража


Дата создания: 2025-09-04 10:15:01 Последнее изменение: 2025-09-10 11:51:36
Копировать: 0 Количество просмотров: 102
2
Подписаться
319
Подписчики

Стратегия лагового арбитража Стратегия лагового арбитража

Стратегия двойного арбитража цен.

PAIR TRADING, ARBITRAGE, CORRELATION

Что это за чудодейственный ход?

Знаете ли вы? Есть такой способ торговли, который так же интересен, как наблюдение за различиями в поведении близнецов! Эта стратегия специально ориентирована на две сильно связанные торговые пары (например, TRUMP и MELANIA), когда их ценовые изменения “не синхронизированы”, и это наша возможность заработать!

Это не падение, а возвращение после того, как вы поймали “неравновесие в отношениях”. Это как если бы близнецы ходили в одном темпе, и вдруг один из них пошел быстрее, а другой обязательно последует за ним.

Основная логика стратегии: обнаружение дисбаланса - это обнаружение возможностей

Суть этой стратегии заключается в том, чтобы рассчитать разрыв в прибыли и убытках двух валют. Когда разрыв превышает установленный порог (по умолчанию 2%):

  • Слишком большая разница в стоимости → Сделать больше относительно отсталых монет
  • Слишком маленькая разница → Лидирующие монеты

Не используйте эту тактику для совершенно не связанных валют, как вы не можете ожидать, что цена яблока и апельсина будет одинаковой!

️ Параметры: простой, грубый, понятный с первого взгляда

Условия, с помощью которых происходит сделка

  • Низкий порог: 2% (допустимо)
  • Количество сделок: 100 (с корректировкой по капиталу)

Контроль риска

  • Стойкость: 5%
  • Остановить убыток: 3%

Эта настройка - как “безопасный воздушный мешок” для ваших сделок, который позволяет использовать возможности и не позволяет потерять контроль!

Когда лучше всего использовать эту тактику?

Лучшее время использования

  1. Историческая взаимосвязь двух валют
  2. Рыночная волатильность умеренная (не используйте в экстремальных ситуациях)
  3. Достаточная ликвидность

Добрые советыЭто тактика, которая лучше всего подходит для использования в бурных городах, как рыбалка на спокойном озере, когда ветер слишком сильный, лучше укрыться от ветра!

Помните, что торговля - это не азартные игры, а правильные действия в правильное время. Эта стратегия учит нас тому, что иногда наблюдение за “отношениями” важнее, чем прогнозирование “направления”!

Исходный код стратегии
/*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="配对交易策略:卖出信号触发")