Finance

CHATGPT를 활용한 주식차트 보조지표 만들고 매수점 찾기

동동 2023. 6. 6. 16:30
728x90

요약글만 필요하신 분들은 Summary를 보고
4. 최종코드만 '붙여넣기'하셔서 사용하세요 :)

 

Summary

ㅁ 차트를 통한 매수 구간 찾기(4개를 적당히 활용할 것)
1. 차트의 검은색 선 아래 있을때 
2. 빨간색 구간에 들어갔을 때
3. 초록색 화살표 발생한 구간
4. 피보나치 구간에 캔들차트가 부딪혔을때

ㅁ 차트 구성 방법
- 차트에 3년 최고, 최저점을 찾아 피보나치 되돌림을 표시한다.
- Rsi값이 30보다 낮을때 이동평균선(100일)을 검은색 라인으로 표시한다
- 20, 100일평선 골든크로스 지점을 초록색 화살표로 표시한다.

* RSI가 뭔가요 ? https://python-data.tistory.com/42
* 피보나치가 뭔가요 ? https://python-data.tistory.com/43

 

1. 차트를 준비하자

https://kr.tradingview.com/chart/HpMwlV09/?symbol=NASDAQ%3ATSLA 

위 링크는 Tradingveiw를 통한 테슬라 차트 바로가기이다.

2. 차트에 조건 추가하기(기본형)

2-1. chatgpt 에게 아래와 같이 이야기한다.
우선 피보나치만 만들어 보자

2-2. 그럼 아래와 같은 코드를 만들어 준다.

//@version=4
study("Fibonacci Levels", shorttitle="FL", overlay=true)


length = 252 * 3
highestHigh = highest(high, length)
lowestLow = lowest(low, length)

fib0 = lowestLow
fib236 = lowestLow + (highestHigh - lowestLow) * 0.236
fib382 = lowestLow + (highestHigh - lowestLow) * 0.382
fib500 = lowestLow + (highestHigh - lowestLow) * 0.500
fib618 = lowestLow + (highestHigh - lowestLow) * 0.618
fib1000 = highestHigh

fill(plot(fib0), plot(fib236), color=color.red, transp=80)
fill(plot(fib236), plot(fib382), color=color.orange, transp=80)
fill(plot(fib382), plot(fib500), color=color.yellow, transp=80)
fill(plot(fib500), plot(fib618), color=color.green, transp=80)
fill(plot(fib618), plot(fib1000), color=color.blue, transp=80)

2-3. 트레이딩뷰 하단 pine 에디터에 코드를 복붙한다.

 

3. 기본형 코드에 RSI와 이평선 개념 추가하기

 

//@version=4
study("RSI and Moving Averages", shorttitle="RSI_MA", overlay=true)

// RSI 지표
rsiPeriod = 14
rsiValue = rsi(close, rsiPeriod)

// 이동평균선 지표
smaShortPeriod = 20
smaLongPeriod = 100
smaShort = sma(close, smaShortPeriod)
smaLong = sma(close, smaLongPeriod)

// RSI 지표가 30보다 낮을 때 이동평균선 100일선을 black으로 표시
plot(smaLong, color=rsiValue < 30 ? color.black : na, linewidth=1)

// 이동평균선 20일선이 이동평균선 100일선을 상향 돌파할 때 화살표 표시
crossCondition = crossover(smaShort, smaLong)
plotarrow(crossCondition ? 1 : na, "BUY", color=color.green, offset=-1)

// 차트에 RSI 지표를 표시
plot(rsiValue, title="RSI", color=color.blue, linewidth=2, style=plot.style_line)

4. 최종코드

//@version=4
study("Fibonacci Levels and Moving Averages", shorttitle="FLMA", overlay=true)

// 최근 3년동안의 최고점과 최저점을 계산하는 기능
length = 252 * 3 // 대략적으로 1년에 252개의 거래일이 있다고 가정합니다.
highestHigh = highest(high, length)
lowestLow = lowest(low, length)

// 피보나치 구간 설정
fib0 = lowestLow
fib236 = lowestLow + (highestHigh - lowestLow) * 0.236
fib382 = lowestLow + (highestHigh - lowestLow) * 0.382
fib500 = lowestLow + (highestHigh - lowestLow) * 0.500
fib618 = lowestLow + (highestHigh - lowestLow) * 0.618
fib1000 = highestHigh

// 피보나치 레벨 색상 설정
fill(plot(fib0), plot(fib236), color=color.red, transp=60)
fill(plot(fib236), plot(fib382), color=color.yellow, transp=60)
fill(plot(fib382), plot(fib500), color=color.orange, transp=60)
fill(plot(fib500), plot(fib618), color=color.green, transp=60)
fill(plot(fib618), plot(fib1000), color=color.blue, transp=60)

// RSI 
rsiPeriod = 14
rsiValue = rsi(close, rsiPeriod)

// 이동평균선 지표 추가
smaShortPeriod = 20
smaLongPeriod = 100
smaShort = sma(close, smaShortPeriod)
smaLong = sma(close, smaLongPeriod)

// RSI 지표가 30보다 낮을때 이동평균선 100일선을 검은색 표시
plot(rsiValue < 30 ? smaLong : na, color=color.black)

// 이동평균선 20일선이 이동평균선 100일선을 상향 돌파할 때 화살표 표시
crossunderCondition = crossover(smaShort, smaLong)
plotarrow(crossunderCondition ? -1 : na , "매수", colordown = color.rgb(0, 255, 0))
728x90