Movable Code

Trade, Robot, Policy

Archive for the ‘Trading Robots’ Category

Bot Container (봇 컨테이너)

leave a comment »

Trabot 을 정의합니다. (트레봇)

  • Trading Robot.
  • 독립된 실행단위를 가지는 Robot 프로그램
  • Finite State Machine. 을 가지며, 필요하다면 복수의 FSM 을 가지도록 한다.
  • LUA 스크립트로 유연한 기반을 가지는것이 이상적이나 시간상 LUA 기반으로의 업데이트는 나중으로 미룬다. 일단은 Parms 기반으로 FSM 으로 작성. LUA 기반은 FSM 과 트레이딩환경을 추상화하는 작업까지 모두 포함해야하므로 절대 만만한 작업이 아니다.

복수개의 트래봇들을 돌릴수있는 컨테이너 프로세스가 있어야하며, 서버모델로 작동한다.
서버는 트래봇들을 런타임에 open/close 시킬수있고, 트래봇들은 자신의 자식 트래봇을 open/close 할수있다.
OS 에서의 쓰레드와 동일한 개념으로 작동한다. 트래봇을 복수로 운용함으로써 서로간의 buy/sell 간 local-matching 을 이루게 할수도 있다.
Local-Matching 을원하는 트래봇은 자신의 주문에 최대 지연값을 할당할수있고, 이 지연값내에서 상대주문이 있을경우 로컬매칭을 시킨다. 로컬매칭의 가격은 편의상 중간값이나 한쪽의 일방값이나 결과적으로는 아무런 차이가 없다.
로컬매칭은 매매비용을 줄이는 매우 중요한 기능이며, 트래봇을 수십/수백개를 운용하는 모델을 생각할때 더더욱 유용하다.

트래봇의 갯수가 많아져도 컨테이너의 전체적인 성능이 영향받지 않으려면, FSM 의 구현시 약간의 고민이 필요하다. 현재 TimerCallback 객체로부터 상속받는 상태머신은 나중에 문제가 될 소지도 있어보인다.
(여러개의 타이머가 동시에 작동됨으로해서 콜백함수에 부담이 가중되는 문제)

컨테이너는 컨트롤러를 가져야한다.
컨트롤러는 컨테이너에 클라이언트로 접속할수있는 프로세스로 컨테이너에 트래봇을 open/close 를 지시하고 운용명령어를 전달할수있다. 모니터 용도의 ping 을 요구할수도 있으며, 비상시 즉각적인 트래봇의 운용중단 및 주문운용을 수동으로 전환할숭있어야한다.

Advertisements

Written by soyul's papa

3월 18, 2007 at 6:44 오전

Trading Robots에 게시됨