리소스 로딩... 로딩...

파생상품 기반 거래 전략

저자:차오장, 날짜: 2024-01-12 11:06:28
태그:

img

전반적인 설명

이 전략은 헐 이동 평균 (HMA) 의 1, 2, 3 및 4 시간 파생물을 활용하여 자본의 동등한 비율을 투자합니다. 입구점은 2 차, 3 차 및 4 차 파생물에서의 추세에 의해 식별되며 출구점은 새로운 입구점 또는 후속 스톱 손실 비율로 생성됩니다.

전략 논리

이 전략은 먼저 HMA를 계산합니다. Hull Moving Average는 다음과 같은 공식으로 계산된 가중화 이동 평균입니다.

hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) 

여기서 src는 가격이고 sm는 평균의 길이를 제어하는 입력 매개 변수입니다.

이 전략은 다음으로 속도 (1st 파생), 가속 (2nd 파생), 조크 (3rd 파생) 및 조운스 (4th 파생) 를 계산합니다. 이것들은 HMA와 그 지연 값 사이의 차이를 길이 len로 나누어서 계산됩니다. 예를 들어 속도 계산은:

speed = (hullma-hullma[len])/len

다른 파생상품도 비슷하게 계산됩니다.

이 전략은 가속, 크, 조크의 징후를 보고 입구와 출구를 결정합니다. 세 가지 지표가 모두 긍정적이라면 길게 갈 것입니다. 세 가지 모두 부정적인 경우 짧게 갈 것입니다.

또한 이 전략은 수익을 확보하기 위해 스톱 손실을 추적합니다. 긴 포지션은 조정 가능한 입력 비율에 따라 스톱 손실을 설정하고 짧은 포지션도 마찬가지입니다.

이점 분석

이 전략의 주요 장점은 여러 파생 항을 입력 및 출력 신호로 사용하는데, 이는 일부 잘못된 신호를 필터링할 수 있다. 엔트리를 결정하기 위해 속도 (1 파생 항)에만 의존하는 것은 종종 너무 취약하지만, 2 차, 3 차 및 4 파생 항을 결합하면 더 견고한 시스템을 구축 할 수 있다.

또 다른 장점은 이 전략이 매우 유연하다는 것입니다. 그것은 HMA 길이, 다양한 파생 상품의 길이, 중지 손실 비율 등을 포함한 여러 가지 조정 가능한 매개 변수를 가지고 있으며 다른 시장에 최적화 할 수 있습니다.

조정 가능한 트레일링 스톱의 사용도 장점입니다. 이는 트렌딩 시장에서 더 많은 이익을 얻는 데 도움이 될 수 있으며, 불안한 시장에서 적시에 종료하여 최대 유출을 제한 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 갑작스러운 사건으로 인해 히트율이 감소하는 것입니다. 관련 필터가 없으면 주요 뉴스 이벤트는 여러 파생 상품이 동시에 잘못된 신호를 제공하여 더 큰 손실을 초래할 수 있습니다. 일부 뉴스 필터를 구현하거나 이 위험을 완화하기 위해 폭발 사건 후에 전략을 잠시 중단 할 수 있습니다.

또 다른 위험은 매개 변수들이 쉽게 과도하게 적합할 수 있다는 것입니다. HMA 길이, 파생 길이 등이 모두 결과에 영향을 줄 수 있습니다. 이것은 다른 시장에서 이러한 매개 변수들의 견고성을 평가하기 위해 엄격한 백테스팅을 필요로합니다. 또한 후속 스톱 손실 비율은 너무 넓지 않아야합니다. 그렇지 않으면 손실이 스노우볼 될 수 있습니다.

최적화 방향

이 전략은 여러 가지 방법으로 최적화 될 수 있습니다.

  1. 주요 뉴스 이벤트 이후 잠시 거래를 중단하기 위해 폭발 이벤트에 기반한 필터를 추가하여 큰 손실로 이어지는 입력 포인트를 놓치지 않도록합니다.

  2. 시장에서 매개 변수의 안정성 테스트를 수행합니다. 다른 제품에 대한 백테스트, 매개 변수의 안정성을 평가하는 기간

  3. 입력 논리를 개선하려고 노력합니다. 단순한 긍정적 / 부정적인 판단 대신 트렌드를 식별하기 위해 기계 학습 모델을 도입하십시오.

  4. 스톱 로스 방법론을 개선합니다. 단순한 퍼센트리 트레일링 스톱 대신 변동성 또는 기계 학습 스톱을 사용하십시오.

  5. 이윤 취출을 추가하십시오. 현재의 논리는 주로 중지에 의존하고 추가 상승 추후 또는 목표 수익 출구를 추가 할 수 있습니다.

결론

이 전략은 Hull Moving Average의 다중 파생자를 입력 및 출력 신호로 활용하여 수익을 잠금하는 다중 시간 프레임 트렌드이다. 주요 장점은 여러 파생물, 유연한 조정 가능한 매개 변수 등을 사용하여 잘못된 신호를 필터링하는 것을 포함합니다. 주목해야 할 위험은 폭발 이벤트 및 잠재적 인 매개 변수 오버 피팅의 영향을 포함합니다. 더 신뢰할 수있는 자동 거래 시스템을 만들기 위해 필터를 추가하고 매개 변수 견고성 향상, 입력 / 출력 논리 강화 등을 통해 전략을 최적화 할 수 있습니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
    strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
    strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
    stopValue=ohlc4*(1-longTrailPerc)
    max(stopValue,longStopPrice[1])
else
    0
shortStopPrice:=if(strategy.position_size<0)
    stopValue=ohlc4*(1+shortTrailPerc)
    min(stopValue,shortStopPrice[1])
else
    999999
if(strategy.position_size>0)
    strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
    strategy.exit(id="closeshort",stop=shortStopPrice)


더 많은