
다중 시간 주기 표준 편차 K선 교차 전략은 전형적인 트렌드 추적 전략이다. 이 전략은 다른 시간 주기 (일계, 주기, 달계 등) 의 표준 편차 값을 계산하여 다중 K선과 D선을 구성하고, 그 다음 이 선의 평균을 가지고 평균을 구성한다. 빠른 선에서 느린 선을 통과할 때 더 많이 하고, 아래로 통과할 때 비로 한다. 이 전략은 다른 주기 표준 편차의 예측 능력을 충분히 활용하고, 여러 주기 표준 편차 평균을 조합하여 시장 소음을 효과적으로 필터레이트하여 시장의 주요 트렌드를 고정시킬 수 있다.
이 전략의 핵심적인 논리는 여러 시간 주기의 표준 편차를 계산한 다음 평균을 취하여 거래 신호를 구성하는 것이다.
먼저, 전략이 통과되었습니다.stoch()함수는 각기 다른 변수 아래의 표준 편차 K값을 계산한다. 여기서는 총 5개의 K값을 계산한다. 대응하는 시간주기는 일선, 둘선, 달선 수준이다.
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
...
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
그리고 각각 다른 변수를 사용하여 D선을 계산합니다:
smoothD = input(34)
d = sma(k, smoothD)
...
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
다음으로, K선과 D선의 각 그룹의 평균값을 계산하여, 고속선 Kavg와 느린선 Davg를 구성한다:
Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)
마지막으로, 빠른 선에서 느린 선으로 갈 때 더 많이 하고, 낮은 선으로 갈 때 더 적게 하라:
long = crossover(Kavg, Davg)
short = crossunder(Kavg, Davg)
여러 시기의 표준 편차 평균선을 조합하여, 더 큰 시기의 시장 노이즈를 제거하여 주요 트렌드 방향을 고정 할 수 있습니다.
해결책:
필터링 조건을 추가하여 짧은 기간의 가짜 돌파구를 피하십시오.
적응 주기 설정을 사용하여 시장의 변동 정도에 따라 주기 파라미터를 조정
이동 상쇄를 설정하여 상쇄를 막고 상쇄를 피합니다.
평균주기 변수를 최적화하여 최적의 균형을 찾습니다.
더 많은 지표 신호를 조합하여 전략의 안정성을 높여라
이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.
MACD, 볼린저 밴드 등과 같은 다른 지표 신호를 조합하여 도입하면 신호 품질이 향상됩니다.
트렌드 필터를 추가하여 SMA 평균선 방향, ADX 등의 지표가 트렌드를 판단하고 역거래를 피합니다.
적응 주기 설정을 사용하여 시장의 변동 정도에 따라 동적으로 조정되는 주기 파라미터
이동식 중지 전략을 추가하고, 전략 변수에 따라 중지 지점을 설정하고, 적시에 중지합니다.
빠른 선과 느린 선의 평균 선주기 변수를 최적화하여 최적의 변수 조합을 찾습니다.
짧은 시간 잡음으로 잘못된 신호를 방지하기 위해 개장 필터 조건을 추가합니다.
브레이크아웃 입점 전략을 시도하고, 평균선을 뚫고 입점합니다.
Chandelier Exit와 같은 다른 탈퇴 전략을 테스트하고, 스톱 스톱 손실을 최적화합니다.
다중 시간 주기 표준 편차 K선 교차 전략은 표준 편차 지표의 트렌드 추적 능력과 평행 전략의 안정성을 통합한다. 다중 시간 주기 표준 편차 지표의 K선과 D선 평균을 계산하여 거래 신호를 구성하여 다양한 시간 단위의 표준 편차 지표의 예측력을 효과적으로 활용하고 시장 소음을 필터링하여 주요 트렌드 방향을 잡을 수 있다. 이 전략은 파라미터 튜닝의 공간을 가지고 있으며, 주기 파라미터를 조정하고 필터링 조건, 중지 전략 등을 추가로 도입하여 더 나은 전략 효과를 얻을 수 있습니다.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)
price = input(close)
///////////////////////////////
smoothK = input(55)
SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)
smoothD = input(34)
d = sma(k, smoothD)
///////////////////////////
smoothK1 = input(89)
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)
smoothD1 = input(55)
d1 = sma(k1, smoothD1)
//////////////////////////////////////
smoothK2 = input(144)
SMAsmoothK2 = input(5)
k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2)
smoothD2 = input(89)
d2 = sma(k2, smoothD2)
/////////////////////////////////////
smoothK3 = input(233)
SMAsmoothK3 = input(3)
k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3)
smoothD3 = input(144)
d3 = sma(k3, smoothD3)
////////////////////////////////////////////////
smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
/////////////////////////////////////////////////
Kavg = avg(k,k1,k2,k3,k4, k4)
plot(Kavg, color=green)
Davg = avg(d,d1,d2,d3,d4, d4)
plot(Davg, color=red)
///////////////////////////////////////
hline(50, color=gray)
long = crossover(Kavg, Davg)// and d < 50
short = crossunder(Kavg, Davg)// and d > 50
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal)
//len1 = input(3)
//closelong = d[1] < k[len1]
//closeshort = d[1] > k[len1]
//strategy.close("Long", when=closelong)
//strategy.close("Short", when=closeshort)