리버웨이드 마틴게일 선물 거래 전략

저자:차오장, 날짜: 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


더 많은