오늘은 지난시간의 피드백을 고쳐보고 중복 및 통일 가능한 코드들을 개선하였다.
< 지난 포스팅 >
https://jayindustry.tistory.com/69
#6 [바이낸스 선물] 코드 리팩토링 -2
오늘은 "전략-1"을 포함하여 전체 매매코드를 리팩토링하였다. < 지난 포스팅 > https://jayindustry.tistory.com/68 #5 [바이낸스 선물] 코드 리팩토링 -1 오늘은 지난시간에 개선한 바이낸스 선물 자동트레
jayindustry.tistory.com
아래는 지난시간 마지막에 포스팅한 피드백내용이다.
오늘 이 부분들을 고쳐보았다.
[ 개요 ]
1. 현재 수익&손실률(PNL) 개선 + 중복코드 제거
2. TradingView와 연동하는 방법 고민
3. 서버AWS연결
[ 내용 ]
1. 현재 수익&손실률(PNL) 개선 + 중복코드 제거
< 기존 코드 >
기존 코드는 코인의 현재가를 불러와서 내 포지션진입가와 계산하여 현재 수익률&손실률을 계산하였다.
만약 숏일 경우, 부호가 반대이므로 해당 코드도 추가하여 넣어준 모습이다.
하지만 실제 거래소에서 찍혀있는 PNL과 %가 다르게 나왔다.
아마 현재가를 불러오고 계산하는 딜레이에서 시간차이 등의 이유가 되지 않을까 싶다.
정확한 PNL을 찍으려면 거래소에서 현재 찍히고있는 PNL을 가져와야겠다고 생각했다.
< 개선 >
- 클래스 내부의 init생성자에 변수들을 추가하였다.
- 현재 내 포지션의 정보들을 가져오는 변수를 추가하고,
- 그중에 현 포지션의 PNL %를 나타내는 percentage키의 값을 가져왔다.
- 그리고 레버레이지 적용이 안된 x1기준의 PNL 또한 가져와서 실제차트에서 몇 프로나 가격변동이 있었는지 파악할 수 있게 하였다.
< 개선 과정 >
1) 포지션정보 메서드 찾기
맨 윗줄의 fetch_positions메서드를 찾는데 시간이 조금 걸렸다.
현재 사용중인 트레이딩 라이브러리, cctx바이낸스의 참고문서를 보고 아래와 같은 함수를 찾아내었다.
2) 변수 선언 및 출력해보기
위 코드에서 코인심볼을 배열로 넣으라고 되어있다. 그래서 배열형식[ ] 으로 심볼을 넣었다.
그리고 self.position_info를 출력!
리스트형식 내부에 info라는 딕셔너리 안에 또 딕셔너리가 있고,
info 딕셔너리에 포함되지 않은 딕셔너리들이 있었다.
3) 보기좋게 출력하여 원하는 Percentage찾기
내 목적은 현재 PNL(ROI%)정보를 찾는 것이다.
그래서 이 key , value값을 한줄 한줄 출력해려고 info 딕셔너리에 있는 키,밸류값과
info에 없는 키,밸류값을 나눠서 출력해보았다.
결 과
찾았다 percentage . . . !
해당 키의 밸류를 가져와 변수로 지정하였다.
계속 실행해보면서 거래소에 진입되어있는 PNL값과 비교해보니 일치하였다.
그렇게 메인 코드에 모두 적용하였더니 제대로 PNL을 출력해주었다.
[ 최종 결과물 ]
스크린샷 + 실행 딜레이때문에 약간의 차이는 있으나 실제 ROI(%)을 잘 가져오는 모습이다. (레버레이지 8배)
2. TradingView와 연동하는 방법 고민
TradingView는 주식,가상화폐 등의 차트정보를 무료/유료로 제공하고 여러 아이디어, 지표전략 구현, 백테스트, 아이디어공유 등을 할 수 있는 플렛폼이다.
단타를 칠 때 이 트레이딩뷰를 사용하여 전략을 코딩하고 적용해보았는데 매우 편리하였다.
특히 전세계 사람들이 만든 지표들을 가져와 내 것으로 사용가능하고,
그 지표들을 또 조합하여 나만의 지표로 만들 수 있다는 메리트가 있었다.
그래서 나는 이 트레이딩뷰의 PineScript로 차트전략을 수립하고
이를 내 파이썬 매매봇과 어떻게 연동하여 사용할 지 고민중이다.
다만, 언어가 Pinescript언어는 내게 많이 생소하여 많은 공부가 필요하다.
먼저 아래는 여러 사람들의 지표들을 병합하여 나만의 지표로 만든 차트이다.
위 차트에 표시가 안된 다양한 지표들 또한 Pinescript 코드 내부에 다 포함되어있다.
대략 6개 정도의 지표가 사용되었다.
해당 지표들을 조합하여 전략을 수립하고 "실전매매법_1"이라는 지표로 통합하였다.
그리고 차트에는 주요 지지선/저항선을 그렸고 초록색 B, 빨강색 S는 매수, 매도 포인트를 찍었다.
현재 B,S포인트가 뜰 때 폰어플로 알람이 뜨게하여 내가 수동으로 매수/매도 하는 방식으로 구현되어있다.
이 트레이딩뷰를 어떻게 파이썬 자동매매봇과 연동하여 사용가능할까?
두 가지 방법을 생각해보았다.
1) PineScript로 만든 지표코드를 Python코드로 구현해본다.
챗GPT를 이용하여 이를 해보려 하였으나, 한계점이 보였다.
내가 파인스크립트를 제대로 이해하지 못했을 뿐더러, 파이썬에서 구현하기 어려운 기능들도 있었다.
2) 알람을 이용한다.
B,S타점이 찍힐 때 파이썬스크립트로 메시지같은 신호를 주어 매매한다.
트레이딩뷰 내부 기능이나 크롤링 또는 API등의 방법을 이용하여 해당 타점이 찍힐 때마다 파이썬 스크립트에 신호를주면, 해당 신호에 따라 if문으로 매매를 하면 좋을 것 같다.
이 부분은 인터넷 서칭을 통해 더욱 찾아보고 연구해보아야겠다.
'프로젝트 > [퀀트]자동트레이딩' 카테고리의 다른 글
#9 [바이낸스 선물]Flask서버,웹훅 문제해결 (2) | 2023.11.17 |
---|---|
#8 [바이낸스 선물]Flask서버생성,웹훅,포트포워딩 (0) | 2023.11.15 |
#6 [바이낸스 선물] 코드 리팩토링 2 (0) | 2023.11.12 |
#5 [바이낸스 선물] 코드 리팩토링 1 (0) | 2023.11.11 |
#4 [바이낸스 선물] 자동트레이딩 봇 코드 개선-2 , 에러처리 (0) | 2023.11.10 |