요즘 새롭게 연구하고 있는 분야.. #2 (블루아이님 필독)
요거는 MBTrading에 적용시킨 간단한 Arbitrage 데모버젼입니다. 계산기로 두드리면 조금씩 이익이 나는데..
가끔씩 마이너스가 나는 경우도 있어서 다시 한번 보고 있는 중..
실계좌는 일단 요 문제가 해결되면 개설하려고 합니다.
요거는 자동 다이버전스만 남기고 나머지 필요없는 것들은 다 지워버린 다음에
몇가지 인디와 보기 좋은 시그널을 추가한 버젼..
좀더 심플해지고 경우의 수가 줄어들면
EA로도 만들수 있을것 같네요.. ㅋ
코멘트 (6)
잘봤읍니다..보조지표가 무엇인지 궁금하네요...!
잘 만들고 계시는군요 ㅎㅎ
C#으로 만들고 계신건가요?
우선 거래횟수가 좀 줄더라도 이익이 날만큼 여유있게 값이 어긋나는경우를 체크해보는것도 중요할거 같습니다.
계산방식에는 차이는 없지만...
아마도 문제는 주문 타임에 변하는 값과 슬리피지 문제가 아닐런지요?
슬리피지는 걱정안하셔도 됩니다.
FIX 프로토콜을 바로 사용하면 Limit 주문을 IOC (Immdiate Or Cancel) 로 낼수도 있습니다.
무슨 의미냐면 시장가 가격으로 지정가 주문을 바로 내는게 가능하고
그걸 IOC 타입으로 지정해서 그 가격에 성사가 안되면 자동 취소가 되게 할 수 있는겁니다.
슬리피지 제로가 보장되는 주문이죠..
문제는 3개의 주문을 동시에 트랜잭션 처리할 방법이 없다는 겁니다.
각각의 주문에 대해서는 슬리피지를 피할 수 있으나
세개의 주문이 동시에 지정가에 성공하지 못하면 나머지 주문들도 다 취소를 시키는
주문옵션은 아무리 뒤져바도 없더라구요.
감사합니다..!
수고하시네요..보탬이 않되 죄송할따름 입니다..!
그러니 슬리피지는 걱정없지만...
슬리피지 제로 상태에서 아비트리지를 전부 보장할수 없다라는 이야기 아닌가요?
뭐 문제는 전부 취소문제인데... 이건 현실적으로는 불가능하지 않나요? 딜러님도 이부분은 충분히 알고 계실것이라 생각합니다. 그러니 차라리 약간의 슬리피지도 인정하고 처리하도록 하고 예상되는 슬리피를 아비트리지 계산시 추가하여 해당 부분이 초월하여 이익이 발생된다면 거래하는 방식으로 변경하는것이 어떨까요?
그리고 가장중요한건 세 주문중 하나라도 거래체결이 안되는 경우는 없겠죠?
지금 그냥 생각하고 있는 가장 간단한 방법은
만약 3개의 주문을 냈는데
1개가 캔슬되고 2개가 체결되거나 혹은
2개가 캔슬되고 1개만 체결되었을 경우
네트워크 상황만 좋다면 800ms 이내로 알 수 있습니다.
그럼 바로 체결되어버린 주문을 닫아 버리면서
약간의 스프레드 손실은 감내를 하고
다음번 거래 찬스를 기다리는 겁니다.
왜 이게 가장 심플 하냐면
ECN 유동성정도라면 정말 지정가 주문에 체결안되는 경우는 잘 없거든요..
그리고 ECN이 아니라 하더라도
네트워크 접속성이 아주 뛰어나다는 가정하에 (브로커 서버랑 같은 IDC에 입점한다는 가정하에)
가격 받아와서
계산 완료까지 약 1ms (지금은 딸랑 하나라 마이크로세컨드 단위인데 통화를 200개 정도 계산한다고 가정하고..)
계산해서 FIX프로토콜 메세지 만들기까지 약 10ms (FIX Library Performance 참조)
그리고 네트웍으로 주문 3개 동시 전송해서 서버 도달까지 많이 잡고 300ms
서버에서 주문이 받아드려져 체결하기 까지 주문하나당 100ms 곱하기 3개 해서 300ms
(MB Trading Performance 답변 기준. 원래는 병렬로 처리하는데 그냥 단순계산해서)
그리고 피드백을 받는데 나머지 100ms
라고 가정하면
Bid Ask 변동되어서 조건이 만족되면 계산종료와 함께 주문을 내고 성공여부를 확인하는데 까지
넉넉잡아도 1초가 안걸려요..
그래서 그냥 따로 귀찮게 계산안하고 닫아버리는게 주문실패로 인한 손실을 만회할 가장 좋은
방법이라고 생각됩니다.
물론 복잡하게 계산하면 체결되어져버린 주문의 진입가격을 기준으로 다시 삼각차익 공식을 계산할 수도 있겠지만
아직 발생빈도나 손익비율 데이터가 축적되지 않은 시점에
미리 정할건 아니라고 봐요..