수동이던 시스템이던 주문발생후 미체결주문이 있으면
5초후 자동정정으로 상대2호가에 주문내는 식 좀 부탁드립니다.
답변 2
예스스탁
예스스탁 답변
2015-05-29 18:15:58
안녕하세요
예스스탁입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
상대호가로 주문을 내기 위해서는 해당 종목의 종목객체가 필요합니다.
주문응답후 5초뒤에 미체결이면 해당 종목의 종목객체를 요청해서
수신받고 호가 확인해 주문이 집행됩니다.
스크립트 객체화면에서는 계좌객체만 있으면 됩니다.
계좌객체 추가하신후에 속성에서 객체명은 Account1로 지정하고 계좌번호 지정하시면 됩니다.
var Onum;
var OCode;
var OKind;
//주문응답 수신
function Main_OnOrderResponse(OrderResponse)
{
//주문번호 저장
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
//타이머 실행
Main.SetTimer(1, 5000);//5초 타이머
}
//타이머 동작
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 중지
Main.KillTimer(1);
//Onum주문번호 미체결 셋팅
Account1.SetUnfillOrderNumber(ONum);
//미체결로 남아 있으면
if (Account1.Unfill.count > 0)
{
//종목객체 요청
Main.ReqMarketData(OCode,0,0);
}
}
}
//종목객체 수신
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
//수신받은 종목객체가 Onum과 같으면
if (MarketData.code == ONum)
{
Account1.SetUnfillOrderNumber(ONum);
//수량이 남아 있고 매도주문이면 매수2호가로 정정
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, MarketData.Bid(2));
}
//수량이 남아 있고 매수주문이면 매도2호가로 정정
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, MarketData.Ask(2));
}
//사용이 끝났으므로 수신받은 종목객체는 삭제
Main.RemoveMarketData(Object);
}
}
즐거운 하루되세요
> 이디 님이 쓴 글입니다.
> 제목 : 정정주문
> 수동이던 시스템이던 주문발생후 미체결주문이 있으면
5초후 자동정정으로 상대2호가에 주문내는 식 좀 부탁드립니다.
계좌객체만 추가해서 객체명 지정하고 적용해봤는데
작동을 안합니다.
제가 적용을 잘못시킨건가요?
다시 한번 확인해주시면 감사하겠습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 정정주문
>
안녕하세요
예스스탁입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
상대호가로 주문을 내기 위해서는 해당 종목의 종목객체가 필요합니다.
주문응답후 5초뒤에 미체결이면 해당 종목의 종목객체를 요청해서
수신받고 호가 확인해 주문이 집행됩니다.
스크립트 객체화면에서는 계좌객체만 있으면 됩니다.
계좌객체 추가하신후에 속성에서 객체명은 Account1로 지정하고 계좌번호 지정하시면 됩니다.
var Onum;
var OCode;
var OKind;
//주문응답 수신
function Main_OnOrderResponse(OrderResponse)
{
//주문번호 저장
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
//타이머 실행
Main.SetTimer(1, 5000);//5초 타이머
}
//타이머 동작
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//타이머 중지
Main.KillTimer(1);
//Onum주문번호 미체결 셋팅
Account1.SetUnfillOrderNumber(ONum);
//미체결로 남아 있으면
if (Account1.Unfill.count > 0)
{
//종목객체 요청
Main.ReqMarketData(OCode,0,0);
}
}
}
//종목객체 수신
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
//수신받은 종목객체가 Onum과 같으면
if (MarketData.code == ONum)
{
Account1.SetUnfillOrderNumber(ONum);
//수량이 남아 있고 매도주문이면 매수2호가로 정정
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, MarketData.Bid(2));
}
//수량이 남아 있고 매수주문이면 매도2호가로 정정
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, MarketData.Ask(2));
}
//사용이 끝났으므로 수신받은 종목객체는 삭제
Main.RemoveMarketData(Object);
}
}
즐거운 하루되세요
> 이디 님이 쓴 글입니다.
> 제목 : 정정주문
> 수동이던 시스템이던 주문발생후 미체결주문이 있으면
5초후 자동정정으로 상대2호가에 주문내는 식 좀 부탁드립니다.