이 전략은 트레이딩 신호 판단을 위해 평균 스토카스틱 오시레이터 (Average Stochastic Oscillator) 를 기반으로 하며, 트렌드 다음 전략에 속한다. 평균 스토카스틱 오시레이터의 이동 평균 값 %K와 %D를 계산한다. 황금 십자가가 발생하면, 길게 간다. 죽음의 십자가가 발생하면, 짧게 간다. 이것은 전형적인 트렌드 다음 전략이다.
평균 스토카스틱 오시레이터의 %K와 %D의 값을 계산합니다. %K는 특정 기간 동안의 폐쇄 가격에 기초하여 계산된 무작위 값의 이동 평균이며, 특정 기간 동안의 최고 및 최저 가격에 대한 현재 가격의 상대적 위치를 반영합니다. %D는 트렌드를 확인하는 데 사용되는 %K의 이동 평균입니다.
기하급수적으로 부드러운 이동 평균 (EMA) 은 평균 스토카스틱 오시레이터의 평균 값 _avg_k 및 _avg_d를 얻기 위해 각각 %K 및 %D에 적용됩니다.
거래 신호를 결정합니다.
구매 신호: _avg_k가 _avg_d와 _avg_d < 20을 넘어서면, 길게 이동합니다.
판매 신호: _avg_k가 _avg_d 아래로 넘어가고 _avg_d> 80이 되면, 단축한다.
위치 관리:
롱 스톱 로스: 중산율이 80보다 높을 때 롱을 닫습니다.
쇼트 스톱 로스: _avg_d < 20 때 쇼트 로스를 닫습니다.
같은 방향으로 최대 3개의 명령을 허용합니다. 이것은 피라미드 전략입니다.
이중 이동 평균을 사용하여 황금 십자가와 죽음의 십자가를 결정하면 잘못된 파장을 효과적으로 필터하고 신호 품질을 향상시킬 수 있습니다.
평균 스토카스틱 오시레이터를 사용하면 가격 추세를 효과적으로 추적 할 수 있습니다.
과잉 구매 및 과잉 판매 구역을 결합하면 범위 제한 시장에서 빈번한 거래를 피 할 수 있습니다.
피라미딩을 허용하면 트렌드 시장에서 더 많은 수익을 얻을 수 있습니다.
스톱 손실 전략은 단일 손실을 통제합니다.
이중 이동평균 거래 전략은 거래의 빈도를 유발하는 경향이 있는데, 거래 비용이 너무 높으면 수익성에 영향을 줄 수 있습니다.
고정된 스톱 로스 포인트를 사용하면 트렌드를 너무 일찍 종료하면 손실을 멈출 수 있습니다.
너무 많은 피라미딩은 손실을 증가시킬 수 있습니다.
트렌드 반전 지점을 효과적으로 결정할 수 없고 트렌드 반전 시 큰 손실을 초래할 수 있습니다.
매개 변수 기간은 최적화되어야 합니다. 왜냐하면 다른 기간은 매우 다른 결과를 가져올 수 있기 때문입니다.
트렌드 판단 지표를 도입하여 역 트렌드 거래를 피하는 것을 고려하십시오.
동적으로 트렌드에 더 잘 맞도록 스톱 로스 포인트를 조정합니다.
피라미드 전략 최적화, 예를 들어, 위치 크기를 점차적으로 증가.
트렌드 반전 및 출구 수익을 조기에 판단하기 위해 다른 지표를 포함하십시오.
적응력을 향상시키기 위해 다른 제품들에 대해 테스트 매개 변수 최적화를 개별적으로 합니다.
요약하면, 이것은 트렌드를 따르는 전형적인 전략이다. 트렌드가 발생했을 때 트렌드 방향과 피라미드를 결정하기 위해 평균 스토카스틱 오시레이터를 사용합니다. 이점은 트렌딩 시장에 적합한 강력한 추적 능력입니다. 그러나 역 트렌드 거래를 피하는 것이 중요합니다. 트렌드 판단을 도입하고, 스톱 로스 전략을 최적화하고, 피라미딩 시간을 제어함으로써 더 많은 최적화를 수행 할 수 있습니다. 적절한 매개 변수 선택으로 좋은 추적 결과를 얻을 수 있습니다.
/*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