인덱스 포인트 전략


생성 날짜: 2023-11-06 14:40:26 마지막으로 수정됨: 2023-11-06 14:40:26
복사: 0 클릭수: 604
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

인덱스 포인트 전략

개요

이 전략은 ROC와 SMA의 두 지표의 차값 k를 계산하고, k에 대해 일정 길이의 곱셈을 하고, 곱셈값 sum의 양과 음을 더 많은 코카이드를 하는 판단의 근거로 한다. 이 전략은 단선 거래 전략에 속한다.

전략 원칙

이 전략은 먼저 길이가 l인 SMA 평균선과 ROC 지표를 계산하고, 그 다음에는 현재 폐쇄 가격과 SMA의 차이 k를 계산한다. 그 다음에는 k의 s일 축적과 sum을 계산한다. sum>0일 때는 더하고, sum일 때는 더하지 않는다.

코드는 다음과 같습니다:

  1. 길이가 l인 SMA 평균선 a를 계산합니다.

  2. 길이가 l인 ROC 지수 r를 계산합니다.

  3. 현재 종전 가격과 SMA 평균선의 차이를 계산하기 k = close - a

  4. k에 대해 s일 곱셈을 하면 sum가 나옵니다

  5. sum>0이면 더하고, sum이면 공백을 둡니다.

  6. 평위상 조건: 더 평위상할 때 sum<0; 공백 평위상할 때 sum>0

이 전략의 핵심은 k의累加和sum을 계산하고, sum의正负을 트레이드 신호로 사용한다. k>0이 되면 가격이 상승하고 있다는 것을 의미하며, 더 많이 하고, k이 되면 가격이 하락하고 있다는 것을 의미하며, 공백을 한다.

우위 분석

이것은 간단하고 실용적인 단선 거래 전략으로 다음과 같은 장점이 있습니다.

  1. 사용된 지표의 조합은 단순하고 이해하기 쉽고 구현하기 쉽습니다.

  2. 지표의 차등을 통해 파동을 가하여 더 정확한 거래 기회를 발견할 수 있다.

  3. 이 차이의 합계와 합성으로, 단선 트렌드를 더 정확하게 파악할 수 있다.

  4. 시장조정변수 l와 s에 따라 다른 주기들에 적응할 수 있다.

  5. 전략이 명확하고, 절차가 간결하며, 수정 및 최적화가 쉽다.

  6. 자금 사용 효율이 높고, 빈번한 단선 거래가 가능하다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 단선거래는 위험성이 높고 손실이 발생할 수 있습니다.

  2. 잘못된 매개 변수 설정으로 인해 너무 자주 거래되거나 기회를 놓치게 될 수 있습니다.

  3. 트렌드 반향을 효과적으로 대응할 수 없고, 스톱로스를 넘어서서 큰 손실을 초래할 수 있다.

  4. 자주 모니터링과 조정이 필요하며, 거래자의 경험에 의존한다.

  5. 거래의 빈도는 거래 비용과 슬라이드 포인트를 증가시킬 수 있으며 수익에 영향을 미칠 수 있습니다.

위험을 대응하는 해결책은 다음과 같습니다.

  1. 거래 빈도를 낮추기 위해 매개 변수를 적절하게 조정하십시오.

  2. 트렌드 지표와 결합하여 트렌드 반전을 식별한다.

  3. 단편적 손실을 통제하기 위한 최적화된 손실 차단 전략

  4. 자동화 변수 최적화 모듈을 추가하여 거래자의 경험에 대한 의존도를 낮추십시오.

  5. 주문 모듈을 최적화하고 거래 비용을 절감합니다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.

  1. 최적화 매개 변수 계산 방법, 매개 변수가 더 적응력을 갖도록 한다. 유전 알고리즘, 마르코프 체인 등의 방법을 사용하여 동적으로 최적화 매개 변수를 고려할 수 있다.

  2. 더 많은 지표와 필터 조건과 결합하여 거래 신호의 질을 향상시킵니다. 예를 들어, 트렌드 지표와 결합하여 역전 거래를 피합니다.

  3. 단편적 손실을 통제하기 위해 이동적 손실, 평균적 손실 등을 도입하는 것과 같은 손실을 막는 전략을 개선하십시오.

  4. 위험 점수 관리, 고정 비율 분배 등과 같은 자금 관리 전략을 최적화하여 전반적인 위험을 통제하십시오.

  5. 주문 모듈을 최적화하고 트렌드 추적, 슬라이드 포인트 제어 등의 알고리즘을 사용하여 거래 비용을 절감하십시오.

  6. 자동화된 피드백 최적화 모듈을 추가하여 다양한 매개 변수가 전략에 미치는 영향을 빠르게 평가합니다.

  7. 양적 지표 평가 모듈을 추가하여 거래 신호 품질을 평가하고 전략 안정성을 향상시킵니다.

이러한 최적화를 통해 이 전략은 보다 포괄적이고, 지능적이고, 안정적이며, 제어 가능한 단선 거래 시스템으로 만들어질 수 있다.

요약하다

전체적으로 볼 때, 이 전략은 간단한 지표 계산을 통해 거래 신호를 생성하고, 아이디어가 명확하고 구현하기 쉬운 전형적인 단선 거래 전략에 속한다. 파라미터, 스톱로스, 자금 관리 등의 측면에 대한 추가 최적화를 통해 위험을 줄이고, 안정성을 향상시켜 사용할 가치가 있는 정량화 거래 전략 중 하나로 만들 수 있다. 그러나 어떤 전략도 완벽하지 않으며, 거래자는 합리적으로 유지해야하며, 자신의 위험 선호와 함께 적절하게 조정해야 한다.

전략 소스 코드
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
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=662, overlay=false)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=18)
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

////buyEntry = crossover(source, lower)
////sellEntry = crossunder(source, upper)
if sum>0
    strategy.entry("Long", strategy.long, oca_name="Long",  comment="Long")
else
    strategy.cancel(id="Long")
if sum<0
    strategy.entry("Short", strategy.short, oca_name="Short", comment="Short")
else
    strategy.cancel(id="Short")
strategy.initial_capital = 50000
plot(strategy.equity-strategy.initial_capital-strategy.closedtrades*.25/2, title="equity", color=red, linewidth=2)
hline(0)
//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)