KDJ 골든 크로스 장기 진입 전략

저자:차오장, 날짜: 2024-02-01 10:28:12
태그:

img

전반적인 설명

KDJ 골든 크로스 롱 엔트리 전략은 KDJ 지표에 기반한 양적 거래 전략이다. 이 전략은 주로 구매 신호를 생성하기 위해 KDJ 지표의 J 라인과 D 라인의 황금 십자가를 사용하고 J 라인이 D 라인을 넘을 때 길게 간다. 전략은 비교적 간단하고 구현하기가 쉽습니다. 양적 거래의 초보자에게 적합합니다.

전략 논리

이 전략에서 사용되는 주요 기술 지표는 KDJ 지표입니다. KDJ 지표는 K 라인, D 라인 및 J 라인으로 구성됩니다.

K = (현행 클로즈 - 지난 N일 최저 로우) ÷ (최고 로우 지난 N일 최저 로우) x 100

D = K의 M일 이동 평균

J = 3K - 2D

KDJ 지표 규칙에 따르면, J 라인이 D 라인의 위를 넘을 때, 그것은 가격이 상향으로 반전되고 긴 포지션을 취할 수 있음을 나타냅니다. J 라인이 D 라인의 아래로 떨어지면, 그것은 가격이 상향으로 반전되고 짧은 포지션을 시작할 수 있음을 나타냅니다.

이 전략은 위의 규칙을 활용하고 J 라인이 D 라인의 위를 넘을 때 구매 신호를 생성합니다. 즉, 금색 십자가가 형성되어 긴 지점을 닫습니다. 출구 신호는 J가 긴 지점을 닫기 위해 100을 넘을 때입니다.

장점

  1. KDJ 지표를 사용하여 가격 상승과 하락 움직임을 포함하는 입시 시기를 결정하여 더 신뢰할 수 있습니다.

  2. 이 전략은 초보자도 쉽게 이해할 수 있고 실행할 수 있는 명확하고 간단한 신호 규칙을 가지고 있습니다.

  3. 수익을 막고 손실을 막기 위해 위험을 효과적으로 통제합니다.

  4. 매개 변수 최적화와 유연한 구현을 위한 넓은 공간.

위험성

  1. KDJ 지표는 손실로 이어지는 잘못된 신호를 생성하는 경향이 있습니다.

  2. 구매 후 시장의 단기 조정은 스톱 로스 출출을 유발하고 주요 트렌드를 놓칠 수 있습니다.

  3. 부적절한 매개 변수 설정은 과잉 거래 또는 불분명한 신호로 이어질 수 있습니다.

  4. 전체 수익성에 미치는 거래 비용의 영향을 고려해야 합니다.

주요 리스크 관리 방법: 매개 변수를 적절히 최적화하고, 인덱스를 추적하여 향상시키고, 적절한 스톱 로스 범위를 확장합니다.

최적화 방향

  1. KDJ의 매개 변수를 최적화해서 최적의 매개 변수 조합을 찾아내야 합니다.

  2. 거짓 신호를 피하기 위해 필터링 조건을 추가합니다. 필터링을 위해 다른 지표 또는 형식을 결합 할 수 있습니다.

  3. 시장 유형 (가시 또는 곰 시장) 에 따라 다른 매개 변수 설정을 선택할 수 있습니다.

  4. 스톱 로스 범위를 적절하게 확장하여 스톱 로스 출구의 가능성을 줄일 수 있습니다.

  5. 거래량과 다른 지표를 결합하여 분석하여 함정에 빠지지 않도록 할 수 있습니다.

요약

KDJ 골든 크로스 롱 엔트리 전략은 전반적으로 비교적 간단하고 실용적이며 초보자가 쉽게 시작하고 구현 할 수 있습니다. 전략은 특정 거래 장점이 있지만 약간의 위험도 있습니다. 전략 가치를 완전히 실현하기 위해 표적 최적화가 필요합니다. 전반적으로 전략은 핵심 연구와 응용을받을 가치가 있습니다.


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

//  ## !<------------------ Script --------------------------> 
//@version=5
strategy('KDJ NVDA', shorttitle='KDJ')

ilong = input(9, title='period')
isig = input(3, title='signal')

bcwsma(s, l, m) =>
    _bcwsma = float(na)
    _s = s
    _l = l
    _m = m
    _bcwsma := (_m * _s + (_l - _m) * nz(_bcwsma[1])) / _l
    _bcwsma

// profit strategy add
profit_m = input.float(1.20,"Profit Margin",minval=1.0,maxval=1.99,step=0.05)
stop_m = input.float(0.98,"Stop Loss Margin",minval=0.0,maxval=1,step=0.05)

// Make input options that configure backtest date range
startDate = input.int(title="Start Date", defval=1, minval=1,maxval=31)
startMonth = input.int(title="Start Month", defval=1,minval=1,maxval=12)
startYear = input.int(title="Start Year", defval=2023,minval=2018,maxval=2024)
endDate = input.int(title="End Date", defval=1, minval=1,maxval=31)
endMonth = input.int(title="End Month", defval=1,minval=1,maxval=12)
endYear = input.int(title="End Year", defval=2024,minval=2018,maxval=2099)

// intialization of variables
// Look if the close time of the current bar
// falls inside the date range
inDateRange = (time >= timestamp(syminfo.timezone, startYear,startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

c = close
h = ta.highest(high, ilong)
l = ta.lowest(low, ilong)
RSV = 100 * ((c - l) / (h - l))
pK = bcwsma(RSV, isig, 1)
pD = bcwsma(pK, isig, 1)
pJ = 3 * pK - 2 * pD
KDJ = math.avg(pD, pJ, pK)

go_long= ta.crossunder(pD,pJ)


if (inDateRange and go_long)
    strategy.entry("S",strategy.long,comment="C")
	// strategy.exit("S", limit=c*profit_m, stop=c*stop_m, comment="SL/SP")
	
if (inDateRange and pJ > 100)
	strategy.close("S", comment="TP")
	
// Plot options
// plot(pK, color= #1E88E5)
// plot(pD, color=#FF6F00)
// plot(ma, color=color.yellow)
// bgcolor(pJ>pD? color.green : color.red)

plot(pK, title='% K', color=color.new(color.orange, 0))
plot(pD, title='% D', color=color.new(color.lime, 0))
plot(pJ, title='% J', color=color.new(color.fuchsia, 0))
plot(KDJ, title='KDJ', color=color.new(color.white, 0))
// </PINE> </SCRIPT>
// ## This source code is subject to the terms of the ozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// ## !<------------------ End Script --------------------------> 


더 많은