저는 하이투자증권의 모의투자 시스템트레이딩을 돌리고 있습니다.
1. 시장가로 주문냈는데, 미체결 되는 경우는 어떤 경우죠?
2. 1번의 경우 marketpositon 변수가 1(매수인경우)이 될 수 있나요?
3. 매도가 없는 상태에서 exitshort을 때린 경우 매수가 될 수도 있나요?
4. 틱데이터로 주문을 하는 경우 틱점프가 나타나는 경우는 못잡던데, 방법이 있나요?
(예 : 5틱 잃으면 손절매, 그런데 20틱 한번에 점프.. -_-; )
답변 5
예스스탁
예스스탁 답변
2011-08-12 17:23:01
안녕하세요? 예스스탁입니다.
문의하신 내용 답변드립니다.
1. 시장가로 주문냈는데, 미체결 되는 경우는 어떤 경우죠?
=> 이 부분은 테스트 이후에 추가로 답변을 드리도록 하겠습니다.
2. 1번의 경우 marketpositon 변수가 1(매수인경우)이 될 수 있나요?
=> marketpositon 은 주문의 체결 여부와 상관없이 신호의 상태로 결정되는 것이라서 매수신호가 발생되었다면 1로 나오게 됩니다.
3. 매도가 없는 상태에서 exitshort을 때린 경우 매수가 될 수도 있나요?
=> 네, 그렇습니다. 매도청산 신호가 발생할 경우 주문은 계좌상의 실제 잔고유무와 상관없이 매수주문이 들어가기 때문에 만일 계좌에 보유한 잔고가 없었다면 매수로 잔고를 갖게 됩니다.
4. 틱데이터로 주문을 하는 경우 틱점프가 나타나는 경우는 못잡던데, 방법이 있나요?
(예 : 5틱 잃으면 손절매, 그런데 20틱 한번에 점프.. -_-; )
=> 신호는 어는 경우라도 발생하지만, 주문가격으로 설정한 가격을 벗어나서 가격이 급격히 움직인다면 주문이 미체결 상태로 남아 있을 수 있는데, 시스템트레이딩 설정창의 부가기능탭에서 '시간자동정정'기능을 이용하여 미체결된 주문을 정정주문을 내어 체결시킬 수 있습니다.
감사합니다.
다시 질문 드립니다.
1. 시장가로 주문냈는데, 미체결 되는 경우는 어떤 경우죠?
=> 이 부분은 테스트 이후에 추가로 답변을 드리도록 하겠습니다.
☞ 저는 코드에서 atMarket, 매매 탭에서 현재가를 쓰고 있었습니다.
그러면 지정가 주문을 하고 있었던 것 같습니다. 맞죠?
매매 탭에서 시장가를 하면 시장가 주문이 되는건가요? (이 때는 OnClose, AtMarket의 차이는 무엇일까요? 아예 안쓰는게 맞을까요? )
2. 1번의 경우 marketpositon 변수가 1(매수인경우)이 될 수 있나요?
=> marketpositon 은 주문의 체결 여부와 상관없이 신호의 상태로 결정되는 것이라서 매수신호가 발생되었다면 1로 나오게 됩니다.
☞ 그렇다면 실제 잔고를 가져오는 함수도 있나요?
예스스탁
예스스탁 답변
2011-08-16 17:10:09
안녕하세요? 예스스탁입니다.
추가 답변드리겠습니다.
1. 시장가로 주문냈는데, 미체결 되는 경우는 어떤 경우죠?
☞ 저는 코드에서 atMarket, 매매 탭에서 현재가를 쓰고 있었습니다.
그러면 지정가 주문을 하고 있었던 것 같습니다. 맞죠?
매매 탭에서 시장가를 하면 시장가 주문이 되는건가요? (이 때는 OnClose, AtMarket의 차이는 무엇일까요? 아예 안쓰는게 맞을까요? )
=> 주문함수의 괄호 안에서 atmarket, atstop, onclose 등은 주문을 내보내는 시점에 해당됩니다. atmarket은 현재봉이 완성되고 다음봉 시가가 들어올때 주문을 내보냅니다. 이때 어떤 가격으로 주문을 내보내게 될지는 시스템트레이딩 설정창의 매매탭의 '매매가격'에서 설정하는 대로 주문가격이 결정됩니다. 매매가격에 '현재가'를 선택하셨다면 지정가 주문이 됩니다. 만일 매매가격에 '시장가'를 선택하신다면 '시장가'로 주문이 나가게 됩니다.
onclose와 atmarket의 경우 주문이 나가는 시점은 다음봉 시가가 들어오는 순간으로 동일합니다. 다만, 시스템 리포트 상의 매매신호가 onclose는 조건만족봉에 발생하고 atmarket은 조건만족 다음봉에서 발생됩니다.
2. 1번의 경우 marketpositon 변수가 1(매수인경우)이 될 수 있나요?
=> marketpositon 은 주문의 체결 여부와 상관없이 신호의 상태로 결정되는 것이라서 매수신호가 발생되었다면 1로 나오게 됩니다.
☞ 그렇다면 실제 잔고를 가져오는 함수도 있나요?
=> 잔고를 가져오는 함수는 없습니다. 따라서 시스템 자동매매에서 현재의 실제 포지션 상태와매매신호의 상태를 정확히 확인하고 시스템을 걸어야 합니다. 예를들어 시스템신호상으로는 매수포진션에 이미 진입해 있는 상태이고 실제 계좌에 매수잔고는 없는 상태라면 시스템트레이딩 설정창의 매매탭의 주문시작신호를 '진입신호'로 선택해서 적용해 주셔야 합니다.
모의투자를 통해서 자동주문에 관한 내용들을 충분히 확인해 보시고, 테스트 중에 궁금한 내용이 있으시면 언제든지 글을 올려주십시오. 상세히 답변드리도록 하겠습니다.
감사합니다.
먼저 답변 감사합니다.
그런데 답변 중에....
=> 잔고를 가져오는 함수는 없습니다. 따라서 시스템 자동매매에서 현재의 실제 포지션 상태와매매신호의 상태를 정확히 확인하고 시스템을 걸어야 합니다. 예를들어 시스템신호상으로는 매수포진션에 이미 진입해 있는 상태이고 실제 계좌에 매수잔고는 없는 상태라면 시스템트레이딩 설정창의 매매탭의 주문시작신호를 '진입신호'로 선택해서 적용해 주셔야 합니다.
라는 내용이 있는데.....
주문시작신호가 "진입신호"로 설정되어 있다면 위의 예에서 어떻게 되고
"모든신호"로 설정되어 있다면 어떻게 되는 건가요?
참고로 저는 신호를 받아서 주문을 냈는데,
미체결상태라서 괴리가 생겼다고 가정합니다.
답변 부탁드려요~
예스스탁
예스스탁 답변
2011-08-17 09:06:24
안녕하세요? 추가 답변드리겠습니다.
=> 잔고를 가져오는 함수는 없습니다. 따라서 시스템 자동매매에서 현재의 실제 포지션 상태와매매신호의 상태를 정확히 확인하고 시스템을 걸어야 합니다. 예를들어 시스템신호상으로는 매수포진션에 이미 진입해 있는 상태이고 실제 계좌에 매수잔고는 없는 상태라면 시스템트레이딩 설정창의 매매탭의 주문시작신호를 '진입신호'로 선택해서 적용해 주셔야 합니다.
라는 내용이 있는데.....
주문시작신호가 "진입신호"로 설정되어 있다면 위의 예에서 어떻게 되고
"모든신호"로 설정되어 있다면 어떻게 되는 건가요?
참고로 저는 신호를 받아서 주문을 냈는데,
미체결상태라서 괴리가 생겼다고 가정합니다.
=> 위의 예에서 시스템을 적용하는 시점에 이미 매수신호가 발생되어 있으므로 시스템을 건 이후에 바로 나오는 신호는 매수청산신호가 먼저 나오거나 매수청산과 동시에 매도신호가 같이 나오게 될 것입니다. 시스템을 적용할 때 주문시작신호를 '진입신호'로 설정하시게 되면 매수청산신호에 따른 주문은 내보내지 않고 그 다음에 나오는 진입신호부터 주문을 내보내게 됩니다. 만일 주문시작신호를 '모든신호'로 설정하게 되면 매수청산신호에 의해 매도주문이 발생하게 되는데 이렇게 되면 의도하지 매도포지션을 보유하게 됩니다. 이는 신호가 매수청산신호이든 매도신호이든 주문은 '매도주문'으로만 나가기 때문입니다.
시스템을 적용하는 시점까지 계좌의 잔고 상태와 시스템신호의 상태가 일치하였었는데, 주문이 미체결 상태라서 신호와 계좌의 잔고가 달라질 수 있는데, 이후부터 신호와 주문이 서로 불일치하는 현상이 발생하게 됩니다. 신호는 계좌의 잔고 여부를 체크하지 않고 주문을 전송하기 때문입니다. 따라서 시스템신호가 발생되면 그 신호에 따라서 체결이 확실히 될 수 있도록 설정해 주셔야합니다. 일반적으로 현재가+-5호가 설정을 사용한다거나, 즉시 체결되지 않을 수 있는 가격으로 설정할 경우에는 부가기능의 '시간자동정정'과 같은 것을 이용해서 체결이 확실히 되도록 하셔야 합니다.
감사합니다.