부분 매수로 인한 check_open_cnt 문제
243
投稿した質問数 8
check_open_cnt 함수를 보면
if round(float(check_data),0) == round(float(data),0):
부분이 있는데 부분 매수가 일어나면 check_data가 달라져서 제대로된 index 값을 리턴을 안합니다.
금액이 크지도 않고 10만원 단위인데도 이런 현상이 발생합니다.
(백테스팅 시엔 문제 없음.. 하루종일 매수 자체가 없길래 왜 안되나 봤더니 위와 같은 문제가 있네요.)
결국 손절 or 익절이 이뤄져야지만 다시 정상 동작 합니다.
이 부분을 아래와 같이 바꾸는건 어떤가요?
if round(float(check_data),0) <= round(float(data),0):
5000원 이하건에 대해 "이익 실현 주문"과 "손실 최소화 주문"을 진행하지 않도록 하기 위해 아래 코드를 추가했습니다.
if float(buy_amt) * now_price < 5000:
continue
stop_loss 함수에서 아래 코드도 수정되어야 하네요.
아래 코드는 소수점 넷째자리에서 반올림되서 잔고 부족 에러 메시지가 나오네요.
버림 처리하는게 맞는거 같습니다.
trade_amt = "{:0.0{}f}".format(float(buy_amt), 4) # 소수점 넷째자리
->
trade_amt = "{:0.0{}f}".format(math.trunc(float(buy_amt)*10000)/10000, 4) # 소수점 넷째자리
아니면 더 좋은 방법 있을까요?
回答 1
0
안녕하세요 김동억님.
check_open_cnt함수는 get_buy_amt_list함수와 같이 사용됩니다.
get_buy_amt_list함수는 buy_amt_unit, buy_cnt_limit, increace_rate 세 개의 인수를 입력 받아서
단계별 구매 수량을 계산하고 buy_amt_list 변수에 저장해서 반환합니다.
예를들어 buy_amt_list에 [0.0, 4.5, 9.9, 16.38, 24.156, 33.4872, 44.6846, 58.1215]와 같이 저장될 수 있습니다.
그리고 check_open_cnt함수는 다음에는 몇개의 코인을 구매해야 하는지 찾아줍니다. 예를들어 지금까지 24.156개의 코인을 구매했다면, 다음에는 33.4872개의 코인을 구매할 수 있도록 배열의 인덱스를 반환해 줍니다.
만일 김동억님께서 작성한 코드에서 함수가 정상적으로 동작하지 않는다면, get_buy_amt_list 함수의 buy_amt = round(buy_amt + temp_amt, 4) 부분에서 오류가 발생할 소지가 있습니다. 거래하시는 코인의 구매 단위가 소수점 2자리라면 구매할 때 소수점 2자리까지 반올림해야 합니다. 그러면 실제로 구매한 수량과 buy_amt_list 배열에 저장된 수량이 달라지게 됩니다. buy_amt_list 배열에는 소수점 4자리까지 들어있기 때문에 반올림하는 과정에서 숫자가 달라질 수 있습니다. 이런 오류를 방지하기 위해 if round(float(check_data),0) == round(float(data),0)와 같이 반올림해서 비교했는데, 모든 케이스를 커버하지 못하는 것 같습니다.
따라서, 오류가 발생하신다면 거래하시는 코인에서 지원하는 거래단위 소수점 자리수와 get_buy_amt_list함수에 있는 반올림 자리수를 맞춰주는게 좋습니다.
나머지 코드는 김동억님께서 제안해주신데로 바꾸셔도될 것 같습니다.
감사합니다.
바이낸스 오픈 API가 없습니다..
0
247
1
ta 모듈을 못 찾습니다
0
482
1
데이터수집하기 오류
0
330
1
베이지안에서 질문있습니다.
0
288
2
바이낸스 오픈 API 깃허브 링크
0
759
1
데이터 수집하기 오류 질문
0
487
1
BinanceApiException
0
577
2
target 값 0
0
273
1
This access key is incorrect.
0
554
2
현재가 가져올때 request를 사용하는 이유
0
444
3
error code 400 관련 질문
0
317
1
'NoneType' object is not subscriptable 오류 문의 (robobits.py)
0
297
1
리눅스에서 파이썬 실행하기
1
2285
1
업비트 아이디 1개로 robobits.py 파일을 몇개까지 실행 할 수 있을까요?
0
300
1
robobits_adv2.py 파일에서 TypeError: 'NoneType' object is not subscriptable 오류 발생하면서 멈췄어요.
0
903
2
로그기록을 파일로 저장 하고 싶습니다.
0
999
1
매수 금액설정
0
426
3
오픈건수가 아닌 자산비율 100%구매방법
0
274
1
리플 뿐만이 아닌 다른 종목들
0
233
1
1분 데이터를 끌어올 수 없습니다
0
261
1
module not find 에러 문의
0
285
2
read_json오류 문의
0
470
2
WMAIndicator에서 오래 걸리는게 정상인가요?
0
215
1
pbound 관련 질문드립니다.
0
234
1

