더북(TheBook)

먼저 앞 코드에서 while 문의 수행 조건은 항상 True로 무한 루프였습니다. 초기화 함수에서 수행하는 작업들이 성공적으로 진행된 후에야 매매 프로세스를 진행할 수 있으므로 초기화 함수 성공 여부를 확인했던 self.is_init_success 변수를 while 문의 수행 조건으로 사용하겠습니다. 따라서 초기화 단계가 성공하여 self.is_init_successTrue이면 while 문이 동작하고, False라면 while 문이 동작하지 않아 매매되지 않습니다.

while 문 안은 try-except를 사용하여 예외 처리가 가능하도록 만들었습니다. 이렇게 예외 처리를 넣으면 혹시 예외가 발생하더라도 프로그램이 종료되지 않고 계속 동작할 수 있습니다. 준비를 마치고 처음 확인해야 할 것은 장 시간입니다. check_transaction_open 함수를 사용하여 현재가 장 중인지 확인하며, 개장 시간이 아니라면 5분 동안 대기했다가 다시 개장 여부를 체크할 수 있도록 time.sleep(5 * 60) 코드를 추가했습니다(time.sleep에 전달하는 숫자는 초 단위입니다).

Note ≡


time.sleep(5 * 60) 코드를 사용할 경우, 8시 59분에 장 시간을 확인하면 check_transaction_open() 결과는 거짓이 되고, 장 시간인 9시 4분까지는 대기 상태가 되므로 장 시작 후 4분 동안 비는 시간이 발생할 수 있습니다. 이 책에서는 이 정도의 공백이 전체 매매에 미치는 영향이 미미하다고 판단했으나 프로그램을 응용해서 사용할 때는 개장 직후 바로 매도하는 등 개장 직후 시간을 중요하게 다룰 수도 있습니다. 개장이 얼마 남지 않았을 때는 time.sleep 코드를 사용하지 않거나 대기 간격을 줄이는 방법 혹은 개장 때까지 남은 시간을 계산해서 time.sleep에 전달하는 방법을 사용할 수도 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.