동적 포지션 조정 양적 전략


생성 날짜: 2024-02-21 14:52:10 마지막으로 수정됨: 2024-02-21 14:52:10
복사: 0 클릭수: 964
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 포지션 조정 양적 전략

개요

이 전략의 핵심 아이디어는 계정 권익의 역동성에 따라 각 거래의 포지션 크기를 조정하는 것이다. 이 전략은 수익을 올릴 때 포지션을 자동으로 증가시키고 손실을 줄일 때 포지션을 자동으로 감소시켜 수익 회복 효과를 달성한다.

전략 원칙

이 전략은 다음과 같은 몇 가지 중요한 단계를 통해 포지션 동적 조정을 수행합니다.

  1. 레버리지 비율, 최대 포지션 등의 파라미터를 제한으로 설정합니다.
  2. 계정 이자율을 레버리지 비율로 나누면 기준 포지션 크기를 얻습니다.
  3. 기준 포지션 크기와 최대 포지션 설정을 비교하고, 둘 사이의 최소값을 실제 포지션으로
  4. 포지션을 개시할 때 실제 포지션을 계산하여 포지션 크기를 조정합니다.
  5. 지위 크기는 당기금액과 계정 이익의 변화에 따라 실시간으로 조정됩니다.

위 단계는 포지션 크기의 합리성을 보장하고, 과도한 포지션으로 인한 위험을 방지하며, 포지션 크기가 계정 권익과 연결되는 것을 구현하며, 수익에 따라 자동으로 확대되는 효과를 제공합니다.

전략적 이점

이 전략에는 다음과 같은 장점이 있습니다.

  1. 포지션 크기의 동적 조정, 인적 개입이 필요하지 않습니다.
  2. 포지션 크기는 계정 지분과 연계되어 있으며 자동으로 복귀 효과를 얻을 수 있습니다.
  3. 리버리지와 최대 포지션을 제약으로 설정하여 리스크 을 제어합니다.
  4. 논리적으로 명확하고 간단하며, 이해하기 쉽고, 재개발이 가능합니다.
  5. 다른 전략에 쉽게 접목할 수 있고, 확장할 수 있습니다.

전략적 위험

이 전략에는 몇 가지 위험도 있습니다.

  1. 포지션이 커지면 손실도 커지고, 역전 기회를 놓칠 위험이 있습니다.
  2. 지위 크기는 계정 지분과 실시간으로 연결되며, 특별한 시장 상황에서는 너무 자주 조정될 수 있습니다.
  3. 적당히 설정되지 않은 최대 포지션은 과잉 포지션으로 이어질 수 있습니다.
  4. 리버를 너무 높게 설정하면 위험도 너무 집중될 수 있습니다.

합리적인 변수 설정, 적절한 예금 등의 방법으로 위와 같은 위험을 완화할 수 있다.

전략 최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 슬라이드 포인트 설정이 추가되어 더 부드럽게 조정됩니다.
  2. 포지션 크기를 최적화하는 계산 공식, 다른 요소를 도입
  3. 특정 시장 조건에서 정적 잠금 포지션의 크기
  4. 포지션 조정의 최소 단위 변화를 설정하여 너무 자주 조정하는 것을 피하십시오.
  5. 포지션 조정의 조건 판단 규칙을 추가하여 불필요한 조정을 방지하십시오.

위 몇 가지 점의 최적화를 통해, 전략적 행동을 더 안정적으로 제어할 수 있으며, 포지션 크기를 너무 민감하고 자주 조정하는 것을 피할 수 있다.

요약하다

이 전략은 계정 권익에 기반한 포지션 수동 조정 기능을 구현하여 자동으로 수익 효과를 확대할 수 있습니다. 리버리지와 최대 포지션을 위험 제어로 설정하고 논리는 간단하고 명확하며 이해하기 쉽고 2차 개발됩니다. 우리는 또한 전략의 장단점과 위험을 분석하고 몇 가지 최적화 제안을 제공합니다.

전략 소스 코드
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of Tendies Heist LLC, 2021
//@version=4
strategy("Tendies Heist Auto Compounding Example", overlay=true)

    
leverage = input(10000)

maxps = input(25, "max position size")
strategy.risk.max_position_size(maxps)

balance = max(1,floor(strategy.equity / leverage))

o        = 1
ps       = true
size     = 0.
balance2 = size[1] < balance
balance3 = size[1] > balance
l        = balance3
w        = balance2

if ps
    size := w ? size[1]+o : l ? size[1]-o : nz(size[1],o)
if size > maxps
    size := maxps

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long,qty=size)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short,qty=size)