이 전략의 핵심 아이디어는 CCI 지표를 사용하여 시장 추세 방향을 판단하고, EMA 지표를 사용하여 CCI를 부드럽게 처리하여 트렌드를 따라 거래하는 것입니다. CCI 상위 지수가 구매 지점을 통과 할 때 더 많이하고, CCI 하위 지수가 판매 지점을 통과 할 때 비로소 시장 추세를 따라가는 목적을 달성합니다.
CCI 지표 계산. CCI 지표는 당일 종결 가격과 지난 20일 평균선의 편차 정도를 기준으로 현재 주가가 과매매되었는지 여부를 판단한다. 공식은: ((typical price - 20일 SMA) / (0.015 * 20일 전형적인 가격 표준 차이는) 이다.
CCI 지표에 EMA 평형 처리를 하여 CCI-EMA 곡선을 얻어 CCI 지표의 흔들림을 줄이고 신호를 더 명확하게 만든다.
CCI의 매수점과 매수점을 설정한다. CCI-EMA 상에서 매수점을 통과할 때, 더 많이 하고, CCI-EMA 아래에서 매수점을 통과할 때, 빈 것을 한다.
포지션 보유자는 CCI-EMA가 다시 구매 지점이나 판매 지점을 터치 할 때 평형 포지션을 유지한다.
CCI를 사용하여 시장의 추세 방향을 판단하고 EMA 필터링 가짜 신호와 결합하여 시장 추세를 효과적으로 추적 할 수 있습니다.
CCI 지표는 가격에 특이하게 민감하며, 트렌드의 전환을 빠르게 포착할 수 있다. EMA 지표는 잘못된 보고율을 줄일 수 있다. 둘을 함께 사용하면 트렌드 초기 단계에서 기회를 잡을 수 있다.
트렌드를 따르는 전략은 거래의 수를 최소화하고 거래 비용과 슬라이드 손실을 줄일 수 있습니다.
전략적 재검토 효과는 더 좋으며, 실내에서의 실행성이 있다.
CCI 지표에는 곡선에 대한 과민한 문제가 있으며, EMA는 모든 가짜 신호를 완전히 제거 할 수 없으며, 여전히 잘못된 통보의 위험이 있습니다.
순수 트렌드는 전략을 따르고, 트렌드가 흔들리거나 반전될 경우 손실이 발생할 수 있다. 적절한 트렌드 판단 지표와 함께 사용한다.
순전히 기계적 거래 전략은 시장 상황에 따라 변수를 유연하게 조정할 수 없으며, 과도하게 최적화 될 위험이 있습니다.
회수 데이터는 부족하여 실 디스크의 성능을 완전히 반영 할 수 없습니다. 실 디스크에서 매개 변수를 적절히 조정하고, 스로드를 엄격하게 제어해야합니다.
CCI의 매개 변수를 최적화하고, 다양한 길이의 주기에서 매개 변수의 효과를 테스트한다.
최적의 EMA 주기 길이를 찾기 위해 EMA 파라미터를 최적화한다.
다양한 구매/판매 지점 변수 조합을 테스트하여 최적의 변수를 찾습니다.
다른 지표와 함께 트렌드 반향을 판단하고, 손실이 확대되는 것을 피하기 위해 스톱로스를 설정하십시오.
자동 변수 최적화 기능이 추가되었으며, 다양한 품종에 따라 최적의 변수 조합을 자동으로 찾습니다.
이 전략은 전체적으로 더 간단한 트렌드 따라 거래 전략이다. CCI를 사용하여 트렌드 방향을 판단하고 가격 변화에 민감하며, EMA와 함께 필러브를 만들어 거래 신호를 생성한다. 전략에는 장점이 있지만, 주의해야 할 몇 가지 위험도 있습니다.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("CCI with EMA Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.07)
length = input(20, minval=1)
src = input(close, title="Source")
cciSellPoint = input(0, title = 'CCI Sell Point', type = input.integer)
cciBuyPoint = input(0, title = 'CCI Buy Buy Point', type = input.integer)
lengthcci = input(12,"length cci ema", minval=1)
ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
cciema=ema(cci,lengthcci)
plot(cci, "CCI", color=#996A15)
plot(cciSellPoint, title = 'CCI Sell Point', color = color.red, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciBuyPoint, title = 'CCI Buy Point', color = color.green, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciema, title = 'CCI EMA', color = color.green, linewidth = 1, transp = 35)
band1 = hline(100, "Upper Band", color=#C0C0C0, linestyle=hline.style_dashed)
band0 = hline(-100, "Lower Band", color=#C0C0C0, linestyle=hline.style_dashed)
fill(band1, band0, color=#9C6E1B, title="Background")
startLongTrade= cciema >cciBuyPoint
startShortTrade= cciema <cciSellPoint
//exitLong = cciema <cciSellPoint
//exitShort = cciema >cciBuyPoint
strategy.entry("long",strategy.long, when = startLongTrade )
//strategy.close( "long", when=exitLong)
strategy.entry("short",strategy.short,when=startShortTrade )
//strategy.close("short", when=exitShort)