
이 전략은 두 개의 스토카스틱스 지표와 교차량 가중된 이동 평균을 조합하여 트렌드를 식별하는 전략이다. 이 전략은 두 개의 다른 주기의 스토카스틱스 지표, 하나는 짧은 주기의, 하나는 긴 주기의, 그리고 교차량 가중된 이동 평균을 조합하여 현재의 트렌드 방향을 판단하는 전략을 사용합니다.
이 전략은 다음과 같은 부분들을 통해 추세에 대한 판단을 수행합니다.
짧은 주기의 스토카스틱스 지표를 계산합니다. 주기 길이는 input(30), 매끄러운 변수는 2입니다.
긴 주기의 스토카스틱스 지표를 계산합니다. 주기의 길이는 input (90), 평형 변수는 2입니다.
짧은 주기 및 긴 주기의 스토카스틱스 지표를 더하여 통합 스토카스틱스 곡선을 얻습니다.
tts 곡선에 대 한 교역량 가중 이동 평균 tsl를 계산 하 고, 주기 길이는 input(30)
TSL의 현재 값을 1주기 전의 값과 비교하여, TSL이 상승하면 상승 추세로, TSL이 하락하면 하락 추세로 간주
그리고 스토카스틱스 곡선의 위치와 결합하여 다중 또는 공백 신호를 판단합니다.
이 전략은 트렌드 판단과 오버 바이 오버 셀 판단을 결합하여 트렌드 방향을 비교적 안정적으로 식별할 수 있다. 구체적인 장점은 다음과 같다:
이중 스토카스틱스 지표는 단기 및 장기 오버 구매와 오버 판매를 동시에 반영하여 특정 신호를 놓치지 않도록합니다.
거래량 가중치로 가짜 해킹 신호를 필터링할 수 있습니다.
Stochastics 곡선의 위치가 트렌드 신호의 신뢰성을 다시 한 번 증명합니다.
매개 변수는 조정 가능하며, 시장에 따라 주기 길이를 적절하게 조정할 수 있습니다.
전략은 명확하고 간결하며 이해하기 쉽고 수정할 수 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
스토카스틱스 지표는 가짜 신호를 발산하기 쉽고, 더 긴 주기 지표 필터링과 결합해야 합니다.
고정 주기 변수는 모든 시장 상황에 적합하지 않으며, 동적 최적화 변수는 고려할 수 있습니다.
기술적인 지표만 기반으로 기본적 요소와 결합하여 정확도를 높일 수 있습니다.
거래량 데이터가 정확하지 않은 경우도 결과에 영향을 미치며, 거래량 데이터의 품질을 검증해야 합니다.
이 자료를 수집하는 데 걸리는 시간이 부족하여, 더 오랜 기간의 역사 자료가 필요하다는 것이다.
최적화 가능한 입점 지점, 현재는 crosses under 최소 값으로 직접 더 많이 할 수 있으며, 버퍼 영역을 설정할 수 있습니다.
전반적으로 이 전략은 이중 스토카스틱스 지표와 거래량 가중 이동 평균을 사용하여 트렌드를 판단하여 이론적으로 트렌드 전환점을 비교적 안정적으로 식별할 수 있습니다. 그러나 파라미터 설정은 특정 시장에 맞게 최적화가 필요하며, 잘못된 신호의 위험이 있습니다.
/*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=4
strategy(title="Trend Finder V2", shorttitle="TFV2", format=format.price, precision=2, overlay = true)
//----------Indicator------------//
periodK = input(30)
periodD = 3
smoothK = 2
periodK_two = input(90)
periodD_two = 3
smoothK_two = 2
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
k_two = sma(stoch(close, high, low, periodK_two), smoothK_two)
d_two = sma(k, periodD_two)
ts = k + k_two
tsl = vwma(ts, input(30, title = "VWMA Length"))
//--------Label parameter--------//
up_label = tsl[1] < 100 and tsl > 100 ? 1 : 0
down_label = tsl[1] > 100 and tsl < 100 ? 1 : 0
//----------Color Code-----------//
//tsl_col = tsl > 100 and tsl > tsl[1] ? color.aqua : tsl > 100 and tsl < tsl[1] ? color.green : tsl < 100 and tsl > tsl[1] ? color.maroon : tsl < 100 and tsl < tsl[1] ? color.red : color.silver
//tsl_col = tsl > 100 and ts < 100 and ts > ts[1] ? color.aqua : tsl > 100 and ts > 100 and (ts > ts[1] or ts < ts[1]) ? color.green : tsl < 100 and ts > 100 and ts < ts[1] ? color.red : tsl < 100 and ts < 100 and (ts < ts[1] or ts > ts[1]) ? color.maroon : color.purple
tsl_col = ts > ts[1] and tsl > tsl[1] ? color.lime : ts < ts[1] and tsl < tsl[1] ? color.red : color.yellow
ts_col = (tsl_col == color.lime or tsl_col == color.maroon) and (k>k[1] and k < 30) ? color.lime : (tsl_col == color.green or tsl_col == color.red) and (k < k[1] and k > 70) ? color.red : color.silver
//-------------Plots-------------//
buy = tsl_col[1] == color.yellow and tsl_col == color.lime ? 1 : 0
sell = tsl_col[1] == color.yellow and tsl_col == color.red ? -1 : 0
plotcandle(open,high,low,close, color=tsl_col)
strategy.entry("Long", strategy.long,when=buy==1)
strategy.close("Long", when=sell==-1)