빠른 배포가 중요하다는 포스팅에서 이야기 한 방법은 사실 안정적이지 않다. 더 좋은 방법은 백테스트할 때 활용한 매매 시스템의 로직을 트레이딩 시스템에서 동일하게 활용하는 방법이다. 1호 시스템을 만들고 나서, 앞으로 2호 이후의 시스템들을 만들 생각을 하니 매번 모든 코드를 작성해야 하는 것은 비효율적이라는 생각이 들었다. 매매로직을 모듈화해서 백테스트와 트레이딩 시스템에 모두 동일하게 활용할 수 있게 한다면, 백테스트에서 실전 매매 시스템 개발까지의 기간을 최소화 할 수 있을 것이라는 생각이 들었고, 이 작업에 이제 곧 착수할 예정이다.
백테스트의 성능을 저하시키지 않으면서, 트레이딩 시스템에 어떻게 장착할 수 있을지에 대한 설계가 필요하다. 특히 키움의 QEventLoop 사용방식은 코드의 복잡도를 증가시키기 때문에 ES7의 async, await 처럼 비동기를 동기식으로 사용할 수 있는 방법을 찾아보려고 한다.
그리고 앞으로는 TDD를 사용하여 시스템을 개발하려고 한다. 과거의 경험을 비추어봐도 TDD로 개발할 때 생산성이 가장 좋았고, 오류가 적었다. 1호 시스템을 개발하면서 매매로직 테스트하는 부분만 TDD를 활용하긴 했는데, case에 대한 정리가 부족한 탓에 오류 상황들이 발생했다. 그럼에도 테스트코드가 있어서 빠르게 문제를 발견하고 해결할 수 있었다.
쨌든 Do not Repeat Yourself(DRY 원칙)를 시스템 구축에도 활용해서 시스템 제작의 생산성을 높여야겠다.