Стратегия торговли фьючерсами на основе рычага Мартингейла

Автор:Чао Чжан, Дата: 2024-01-26 11:12:23
Тэги:

img

Обзор

Это стратегия торговли фьючерсами, которая использует механизм мартингейла для достижения высокой доходности.

Принципы

Основная логика этой стратегии заключается в следующем: когда цена запускает линию стоп-лосса, открыть позиции с большим размером, снижая линию стоп-лосса на определенный процент. Увеличивая размеры позиций, он стремится снизить среднюю цену входа. Когда количество позиций достигает установленного максимального количества заказов, он ждет переворота цены, чтобы получить прибыль.

В частности, он сначала входит по текущей цене с установленным размером позиции и получает уровень прибыли / убытка. Когда цена движется к линии стоп-лосса, более крупные позиции будут вновь открыты, и линия стоп-лосса снижается на установленный процент. Такие операции по повторному открытию и снижению стоп-лосса снизят среднюю цену открытия, увеличивая потенциал прибыли. После того, как количество дополнительных заказов достигнет максимума, он ждет переворота цены, чтобы получить прибыль.

Анализ преимуществ

Самое большое преимущество заключается в возможности снизить стоимость за счет повторного открытия с использованием кредитного плеча, при этом имея шанс на благоприятное изменение, когда тенденции отрицательны.

Он также хорошо работает для сырьевых товаров и других рынков с высокой волатильностью, увеличивая прибыль/убытки с помощью кредитного плеча.

Анализ рисков

Основной риск заключается в том, что цена может продолжить снижающийся тренд после возобновления, даже превышая предыдущие уровни стоп-лосса, что приводит к большим потерям. Это может быть смягчено путем установления более широкого процента стоп-лосса, меньшего коэффициента рычага и т. д.

Еще один риск заключается в недостаточном капитале для поддержки максимального количества заказов до отмены.

Области улучшения

Некоторые способы дальнейшей оптимизации стратегии:

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

  2. Включать индикаторы тренда для остановки потерь при неясности тренда

  3. Установка ширины стоп-лосса на основе волатильности рынка, более широкая при волатильности

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

Резюме

Это типичная торговая стратегия мартингейла с использованием рычага. Снижая стоимость за счет добавления заказов, он добивается более высокой доходности, но также вводит риски.


/*backtest
start: 2023-01-19 00:00:00
end: 2024-01-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Leveraged Martingale Strategy with Fees", overlay=true)

// User-defined input parameters
var float takeProfitPct = input(2.0, title="Take Profit Percentage") / 100.0
var float positionMultiplier = input(2.0, title="Position Size Multiplier")
var int maxOrders = input(10, title="Maximum Number of Reinforced Orders")
var float tradeSizeUSD = input(10000.0, title="Trade Size in USD")
var float dropPctForNextTrade = input(1.0, title="Drop Percentage for Next Trade") / 100.0
var float leverage = input(5.0, title="Leverage Factor")
var bool enterAtCurrentPrice = input(true, title="Enter First Trade at Current Price")
var float takerFeePct = input(0.1, title="Taker Order Fee Percentage") / 100.0

// State variables
var float last_entry_price = na
var float avg_entry_price = na
var float total_position_size = 0.0
var int num_trades = 0

// Entry logic
if (num_trades == 0)
    if (enterAtCurrentPrice or close < last_entry_price * (1 - dropPctForNextTrade))
        float size = tradeSizeUSD / close * leverage
        strategy.entry("Long", strategy.long, qty=size)
        avg_entry_price := close
        total_position_size := size
        last_entry_price := close
        num_trades := 1
else if (close < last_entry_price * (1 - dropPctForNextTrade) and num_trades < maxOrders)
    float size = tradeSizeUSD / close * leverage * pow(positionMultiplier, num_trades)
    strategy.entry("Double Long" + tostring(num_trades), strategy.long, qty=size)
    avg_entry_price := ((avg_entry_price * total_position_size) + (close * size)) / (total_position_size + size)
    total_position_size := total_position_size + size
    last_entry_price := close
    num_trades := num_trades + 1

// Take profit logic adjusted for leverage and fees
var float take_profit_price = na
var float fee_deduction = na
if (num_trades > 0)
    take_profit_price := avg_entry_price * (1 + takeProfitPct / leverage)
    fee_deduction := total_position_size * close * takerFeePct
    if (close > take_profit_price + fee_deduction / total_position_size)
        strategy.close_all()
        num_trades := 0


Больше