적응형 트레일링 리트레이스먼트 잔액 거래 손절매 및 손절매 전략

OCA GAP
생성 날짜: 2024-12-12 14:25:36 마지막으로 수정됨: 2024-12-12 14:25:36
복사: 2 클릭수: 413
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

적응형 트레일링 리트레이스먼트 잔액 거래 손절매 및 손절매 전략

개요

이 전략은 격차와 가격 변화에 기반한 자율적 거래 시스템으로, 유연한 입시점과 동적인 스톱 스로드를 설정하여 안정적인 수익을 달성한다. 이 전략은 피라미드 방식의 입장을 취하고, OCA 주문 관리 시스템과 결합하여 위험을 통제한다. 시스템은 시장의 움직임에 따라 자동으로 포지션 방향을 조정하고, 반전 신호가 발생했을 때 적시에 입장을 종료한다.

전략 원칙

이 전략은 다음과 같은 핵심 메커니즘을 통해 작동합니다.

  1. 격차 거래 메커니즘: 상향 및 하향 격차를 식별하고, 격차 위치에 스톱 손실 입장을 설정합니다.
  2. 트렌드 추적: 오픈 가격과 클로즈 가격의 관계에 따라 트렌드 방향을 판단
  3. 피라미드 상장: 한 방향으로 최대 100개의 주문을 가질 수 있다.
  4. 동적 스톱스톱: 평균 지주 가격에 기반한 동적으로 설정된 스톱스톱스톱
  5. OCA 주문 관리: OCA 포트폴리오 주문을 사용하여 스톱 및 스톱 손실 명령이 상호 배제되도록합니다.
  6. 일일 거래 제한: 최대 일일 거래 주문 수를 설정하여 위험을 제어하십시오.

전략적 이점

  1. 자기 적응성: 전략은 시장 상황에 따라 거래 방향과 포지션량을 자동으로 조정할 수 있습니다.
  2. 위험 통제: 여러 메커니즘을 통해 위험을 통제합니다. 그 중에는 정지, OCA 명령 및 일일 거래 제한이 있습니다.
  3. 높은 유연성: 피라미드형 부채를 지원하여 트렌드 상황에서 더 많은 수익을 얻을 수 있습니다.
  4. 실행 효율성: 스톱로스입입을 사용하여 중요한 가격에 빠르게 입장을 수립할 수 있다
  5. 높은 체계화: 거래 결정이 완전히 체계화되어 인간의 개입으로 인한 감정적 영향을 줄입니다.

전략적 위험

  1. 슬라이드 위험: 급속한 속도로 심각한 슬라이드가 발생할 수 있습니다.
  2. 과도한 거래 위험: 자주 출입하는 경우 거래 비용이 더 높을 수 있습니다.
  3. 체계적 위험: 시장의 격렬한 변동으로 인해 큰 손실이 발생할 수 있습니다.
  4. 자금 관리의 위험: 피라미드형 증가가 자금 사용률을 높일 수 있다
  5. 기술 위험: 프로그램 운영 중단으로 인해 주문 관리 문제가 발생할 수 있습니다.

전략 최적화 방향

  1. 변동률 지표 도입: 시장 변동률에 따라 역동적으로 조정되는 스톱 손실 파라미터
  2. 포장 제도를 최적화: 포장 규칙을 더 세밀하게 설계하여 재원을 과도하게 사용하지 않도록하십시오
  3. 풍력관리 시스템 개선: 일일 최대 철수 제한 등 더 많은 풍력관리 지표 추가
  4. 주문 실행 개선: 주문 전달 메커니즘을 최적화하고 슬라이드 포인트 영향을 줄이십시오.
  5. 시장 정서 판단을 높여서, 거래량과 같은 지표를 결합하여 시장 진입 시기를 최적화하십시오.

요약하다

이것은 합리적이고, 논리적으로 엄격하게 설계된 거래 전략이며, 거래의 안정성과 보안을 보장하기 위해 여러 가지 장치를 사용합니다. 전략의 핵심 장점은 자율성과 위험 제어 능력이지만, 시장의 변동으로 인한 위험을 고려해야합니다. 지속적인 최적화와 개선으로 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-12-04 00:00:00
end: 2024-12-11 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Greedy Strategy - maclaurin", pyramiding = 100, calc_on_order_fills=false, overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
backtestStartDate = input(timestamp("1 Jan 1990"),
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("1 Jan 2023"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
inTradeWindow = true
tp = input(10)
sl = input(10)
maxidf = input(title="Max Intraday Filled Orders", defval=5)
// strategy.risk.max_intraday_filled_orders(maxidf)
upGap = open > high[1]
dnGap = open < low[1]
dn = strategy.position_size < 0 and open > close
up = strategy.position_size > 0 and open < close
if inTradeWindow and upGap
    strategy.entry("GapUp", strategy.long, stop = high[1])
else
    strategy.cancel("GapUp")
if inTradeWindow and dn
    strategy.entry("Dn", strategy.short, stop = close)
else
    strategy.cancel("Dn")
if inTradeWindow and dnGap
    strategy.entry("GapDn", strategy.short, stop = low[1])
else
    strategy.cancel("GapDn")
if inTradeWindow and up
    strategy.entry("Up", strategy.long, stop = close)
else
    strategy.cancel("Up")
XQty = strategy.position_size < 0 ? -strategy.position_size : strategy.position_size
dir = strategy.position_size < 0 ? -1 : 1
lmP = strategy.position_avg_price + dir*tp*syminfo.mintick
slP = strategy.position_avg_price - dir*sl*syminfo.mintick
float nav = na
revCond = strategy.position_size > 0 ? dnGap : (strategy.position_size < 0 ? upGap : false)
if inTradeWindow and not revCond and XQty > 0
    strategy.order("TP", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, lmP, nav, "TPSL",  "TPSL")
    strategy.order("SL", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, nav, slP, "TPSL", "TPSL")
if XQty == 0 or revCond
    strategy.cancel("TP")
    strategy.cancel("SL")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)