평균 스토카스틱 거래 전략

저자:차오장, 날짜: 2023-10-26 16:20:33
태그:

img

전반적인 설명

이 전략은 트레이딩 신호 판단을 위해 평균 스토카스틱 오시레이터 (Average Stochastic Oscillator) 를 기반으로 하며, 트렌드 다음 전략에 속한다. 평균 스토카스틱 오시레이터의 이동 평균 값 %K와 %D를 계산한다. 황금 십자가가 발생하면, 길게 간다. 죽음의 십자가가 발생하면, 짧게 간다. 이것은 전형적인 트렌드 다음 전략이다.

전략 논리

  1. 평균 스토카스틱 오시레이터의 %K와 %D의 값을 계산합니다. %K는 특정 기간 동안의 폐쇄 가격에 기초하여 계산된 무작위 값의 이동 평균이며, 특정 기간 동안의 최고 및 최저 가격에 대한 현재 가격의 상대적 위치를 반영합니다. %D는 트렌드를 확인하는 데 사용되는 %K의 이동 평균입니다.

  2. 기하급수적으로 부드러운 이동 평균 (EMA) 은 평균 스토카스틱 오시레이터의 평균 값 _avg_k 및 _avg_d를 얻기 위해 각각 %K 및 %D에 적용됩니다.

  3. 거래 신호를 결정합니다.

    • 구매 신호: _avg_k가 _avg_d와 _avg_d < 20을 넘어서면, 길게 이동합니다.

    • 판매 신호: _avg_k가 _avg_d 아래로 넘어가고 _avg_d> 80이 되면, 단축한다.

  4. 위치 관리:

    • 롱 스톱 로스: 중산율이 80보다 높을 때 롱을 닫습니다.

    • 쇼트 스톱 로스: _avg_d < 20 때 쇼트 로스를 닫습니다.

  5. 같은 방향으로 최대 3개의 명령을 허용합니다. 이것은 피라미드 전략입니다.

장점

  1. 이중 이동 평균을 사용하여 황금 십자가와 죽음의 십자가를 결정하면 잘못된 파장을 효과적으로 필터하고 신호 품질을 향상시킬 수 있습니다.

  2. 평균 스토카스틱 오시레이터를 사용하면 가격 추세를 효과적으로 추적 할 수 있습니다.

  3. 과잉 구매 및 과잉 판매 구역을 결합하면 범위 제한 시장에서 빈번한 거래를 피 할 수 있습니다.

  4. 피라미딩을 허용하면 트렌드 시장에서 더 많은 수익을 얻을 수 있습니다.

  5. 스톱 손실 전략은 단일 손실을 통제합니다.

위험성

  1. 이중 이동평균 거래 전략은 거래의 빈도를 유발하는 경향이 있는데, 거래 비용이 너무 높으면 수익성에 영향을 줄 수 있습니다.

  2. 고정된 스톱 로스 포인트를 사용하면 트렌드를 너무 일찍 종료하면 손실을 멈출 수 있습니다.

  3. 너무 많은 피라미딩은 손실을 증가시킬 수 있습니다.

  4. 트렌드 반전 지점을 효과적으로 결정할 수 없고 트렌드 반전 시 큰 손실을 초래할 수 있습니다.

  5. 매개 변수 기간은 최적화되어야 합니다. 왜냐하면 다른 기간은 매우 다른 결과를 가져올 수 있기 때문입니다.

최적화

  1. 트렌드 판단 지표를 도입하여 역 트렌드 거래를 피하는 것을 고려하십시오.

  2. 동적으로 트렌드에 더 잘 맞도록 스톱 로스 포인트를 조정합니다.

  3. 피라미드 전략 최적화, 예를 들어, 위치 크기를 점차적으로 증가.

  4. 트렌드 반전 및 출구 수익을 조기에 판단하기 위해 다른 지표를 포함하십시오.

  5. 적응력을 향상시키기 위해 다른 제품들에 대해 테스트 매개 변수 최적화를 개별적으로 합니다.

요약

요약하면, 이것은 트렌드를 따르는 전형적인 전략이다. 트렌드가 발생했을 때 트렌드 방향과 피라미드를 결정하기 위해 평균 스토카스틱 오시레이터를 사용합니다. 이점은 트렌딩 시장에 적합한 강력한 추적 능력입니다. 그러나 역 트렌드 거래를 피하는 것이 중요합니다. 트렌드 판단을 도입하고, 스톱 로스 전략을 최적화하고, 피라미딩 시간을 제어함으로써 더 많은 최적화를 수행 할 수 있습니다. 적절한 매개 변수 선택으로 좋은 추적 결과를 얻을 수 있습니다.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//1. AVG Stochastic Calculate
//1.1 AVG %K is calculated by apply EMA with smooth K period on Average of Original Stochastic %k & %d
//+ avg_k=ema((%k+%d)/2,smoothK)
//1.2 AVG %D is calculated by apply EMA with %d period on AVG %K
//+ avg_d=ema(avg_k,periodD)
//2. Parameter
//+ %K Length: 21
//+ %K Smoothing: 3
//+ %D Smoothing: 3
//+ Symbol: BTC/USDT
//+ Timeframe: M30
//+ Pyramiding: Maximum 3 orders at the same direction.
//3. Signal
//3.1 Buy Signal
//+ Entry: AVG %K crossover AVG %D and AVG %D < 20
//+ Exit: AVG %D > 80 
//3.2 Sell Signal
//+ Entry: AVG %K crossunder AVG %D and AVG %D > 80
//+ Exit: AVG %D < 20 
strategy(title="AVG Stochastic Strategy [M30 Backtesting]", overlay=true, pyramiding=3)
periodK = input.int(21, title="%K Length", minval=1)
smoothK = input.int(3, title="%K Smoothing", minval=1)
periodD = input.int(3, title="%D Smoothing", minval=1)
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
_avg_k=ta.ema(math.avg(k,d),smoothK)
_avg_d=ta.ema(_avg_k,periodD)
up=
   _avg_k[1]<_avg_d[1]
   and _avg_k>_avg_d
   and _avg_d<20
dn=
   _avg_k[1]>_avg_d[1]
   and _avg_k<_avg_d
   and _avg_d>80
var arr_val=0
if up
    arr_val:=1
    strategy.entry("Long", strategy.long)
if dn
    arr_val:=-1
    strategy.entry("Short", strategy.short)
if up[1] or dn[1]
    arr_val:=0
plotarrow(arr_val,title="Signal",colorup=color.green,colordown=color.red)
if _avg_d>80 
    strategy.close("Long")
if _avg_d<20 
    strategy.close("Short")
//EOF

더 많은