지표 통합에 기반한 모멘텀 추적 전략

저자:차오장, 날짜: 2023-10-17 15:26:49
태그:

img

전반적인 설명

이 전략은 가격과 이동 평균 사이의 거리의 합을 축적하여 가격 트렌드 방향을 결정하는 사용자 지정 지표 통합기에 기반하고 있으며, 따라서 트렌드를 추적합니다.

전략 논리

이 전략은 가격과 이동 평균 사이의 거리를 통합하기 위해 사용자 지정 지표를 사용합니다.

  1. 가격과 200주기 간단한 이동평균 사이의 거리를 계산합니다. k=close-sma (close,200)

  2. 통합 기간 s=29을 정의하고, 마지막 s 기간 동안 k의 합을 축적합니다: i = 0에서 s에 대한 합 = 합 + k[i]

  3. sum>0이 되면 긴 신호가 생성됩니다. sum<0이 되면 짧은 신호가 생성됩니다.

  4. 롱 포지션이 열리면, 수 <0, 롱 포지션을 닫습니다. 쇼트 포지션이 열리면, 수>0, 쇼트 포지션을 닫습니다.

이 전략은 가격과 이동 평균 사이의 누적 거리의 합이 양적 또는 음적인지 추적함으로써 전반적인 트렌드 방향을 판단합니다. 통합이 양적일 때 상승 추세를 나타내고 긴 지위를 유지해야합니다. 통합이 부정적일 경우 하락 추세를 나타내고 짧은 지위를 유지해야합니다.

장점

  1. 사용자 정의 지표 통합기는 가격 트렌드 방향을 효과적으로 결정할 수 있습니다.

  2. 통합 개념은 가격과 MA 사이의 거리를 축적하여 트렌드 결정의 정확성을 향상시킵니다.

  3. 비교적 간단한 논리, 이해하기 쉽고 최적화하기 쉽습니다.

  4. 감수성을 최적화하기 위해 통합 기간의 유연한 조정

  5. 좋은 백테스트 결과, 안정적인 수익, 실시간 거래에 적용됩니다.

위험성

  1. 부적절한 통합 기간 설정은 민감하지 않은 반응을 일으키고 트렌드 전환점을 놓칠 수 있습니다.

  2. 부적절한 MA 길이 설정은 트렌드를 잘못 판단할 수 있습니다.

  3. 갑작스러운 큰 사건은 잘못된 신호를 일으킬 수 있습니다.

  4. 부적절한 기호 선택, 매우 휘발성 기호는 효과를 저하시킬 수 있습니다.

대응 솔루션:

  1. 더 나은 감수성을 위해 통합 기간을 최적화하십시오.

  2. 트렌드 결정에 최적의 MA 길이를 찾기 위해 다른 MA 길이를 테스트합니다.

  3. 큰 가격 변동으로 인한 오류를 피하기 위해 주요 이벤트 전에 전략을 닫습니다.

  4. 더 나은 성능을 위해 낮은 변동성 기호를 선택하십시오.

개선 방향

  1. 포괄적 인 결정을 위해 RSI와 같은 다른 지표를 추가하는 것을 고려하십시오.

  2. 연구 통합 결과는 다양한 종류의 MA를 이용합니다.

  3. 다른 기호에 대한 자동 통합 기간 최적화를 시도해보세요.

  4. 큰 가격 변동 때 오류를 피하기 위해 부피 지표를 추가합니다.

  5. 머신러닝을 사용하여 안정성을 위한 매개 변수를 자동으로 최적화합니다.

결론

이 전략은 가격과 MA 사이의 거리를 축적하여 사용자 지정 지표 통합기를 사용하여 트렌드 방향을 판단합니다. 논리는 간단하고 명확하며 백테스트 결과는 좋습니다. 보다 신뢰할 수있는 실용적인 응용을 위해 통합 매개 변수를 조정하고 보조 지표, 자동 최적화 등을 추가하여 개선 할 수 있습니다. 전반적으로 적용 가능한 양적 트렌드 추적 전략입니다.


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=29)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = sum>0
exitlong = sum<0

shortCondition = sum<0
exitshort = sum>0

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

더 많은