
이 전략은 헐 이동 평균 ((HMA) 의 1, 2, 3, 4 단계 시간 변수를 사용하여 투자합니다. 그것은 일정 금액을 투입합니다. 엔트리 포인트는 2, 3 및 4 단계 변수의 추세에 의해 식별되며, 출구 포인트는 새로운 엔트리 포인트 또는 트래킹 스톱 퍼센티지를 생성합니다.
이 전략은 먼저 HMA를 계산한다. 헐 이동 평균은 다음과 같은 공식을 사용하여 계산되는 중화 이동 평균이다.
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
여기서 src는 가격이고, sm는 평균의 길이를 제어하는 입력 변수입니다.
이 전략은 그 다음으로 속도 ((1차 변함수), 가속도 ((2차 변함수), 흔들림 ((3차 변함수) 및 변동 (4차 변함수) 을 계산한다. 이들은 HMA와 그 지연값 사이의 차이를 계산한 다음 길이 len으로 나누는 것으로 계산된다. 예를 들어, 속도 계산 공식은 다음과 같다:
speed = (hullma-hullma[len])/len
나머지 변수들의 계산 방법은 비슷하다.
전략은 가속, 흔들림, 격동의 긍정과 부정을 보고 입지와 출전을 결정한다. 세 가지 지표가 모두 긍정이라면 더 많은 카드를 열고, 세 가지 지표가 모두 부정이라면 빈 카드를 열고 있다.
이 전략은 또한 수익을 고정하기 위해 trailing stop loss를 사용한다. 다중 상위 상위는 조정 가능한 입력 비율에 따라 중지 손실을 설정하고, 공백 상위 상위 상위는 동일하다.
이 전략의 주요 장점 중 하나는 여러 계수를 입출력 신호로 사용함으로써 가짜 신호를 필터링 할 수 있다는 것입니다. 입출력을 결정하기 위해 일반적으로 너무 취약한 속도 ((1 계 계수) 만 의존하지만 2, 3, 4 계수와 결합하면 비교적 강력한 시스템을 구축 할 수 있습니다.
또 다른 장점은 이 전략이 매우 유연하다는 것입니다. HMA 길이나, 다양한 변수의 길이나, 스톱 손실 비율 등과 같은 여러 가지 조정 가능한 매개 변수가 있으며, 다른 시장에 맞게 최적화 할 수 있습니다.
조정 가능한 추적 스톱을 사용하는 것도 장점이다. 이것은 트렌드 상황에서 전략이 더 많은 이익을 얻을 수 있도록 도와주고, 충격적인 상황에서 조기에 퇴출하여 최대 회수량을 제한한다.
이 전략의 주요 위험은 갑작스러운 사건으로 인한 히트율의 감소이다. 관련 필터링 규칙이 없다면, 주요 뉴스 사건 갑작스러운 사건 후에 여러 배수가 동시에 잘못된 신호를 발생시킬 수 있으며, 이로 인해 큰 손실이 발생할 수 있다. 몇 가지 뉴스 필터를 설정하거나 갑작스러운 사건 후에 전략을 잠시 중단하여 이러한 위험을 줄일 수 있다.
또 다른 위험은 매개 변수가 지나치게 잘 어울릴 수 있다는 것이다. HMA 길이, 각 배수의 길이 등의 매개 변수가 결과에 영향을 줄 수 있다. 이것은 엄격한 재검토 방법을 사용해야 하며, 서로 다른 시장에서 이러한 매개 변수의 안정성을 평가해야 한다. 또한, 추적 손해 방지 비율이 너무 커서는 안 되며, 그렇지 않으면 손실이 확대될 수 있다.
이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.
급격한 사건에 기반한 필터링 메커니즘을 추가하고, 주요 뉴스 사건 이후 거래를 일시 중단하여 잘못된 입시 지점에서 과도한 손실을 방지합니다.
매개 변수에 대해 다시장 재검토를 하여 안정성을 보장한다. 다양한 품종, 다른 시간대의 데이터를 재검토하고 매개 변수 설정의 안정성을 평가할 수 있다.
진입 논리를 시도한다. 기계 학습 알고리즘을 도입하여 단순한 긍정과 부정적인 판단보다는 자동으로 트렌드를 인식할 수 있다.
손실을 추적하는 방법을 개선한다. 오동율 손실 또는 기계 학습 손실을 사용하여 단순한 비율 추적 손실을 대신할 수 있습니다.
추가 스톱 엑시트. 기존의 논리는 주로 스톱 손실에 의존하고 있으며, 추가적으로 상향 추적 스톱 또는 목표 수익 엑시트를 추가할 수 있습니다.
이 전략은 다중 시간 스케일의 트렌드 추적 전략이다. 그것은 Hull 이동 평균의 여러 변수를 포지션 및 포지션 신호로 사용하며, 스톱로스를 추적하여 수익을 잠금한다. 주요 장점은 가짜 신호를 필터링하는 여러 변수를 이용하고, 전략 파라미터가 유연하다. 주의해야 할 위험에는 갑작스러운 사건의 영향과 파라미터가 너무 잘 어울리는 것이 포함된다.
/*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)