답변완료
미체결 조회
예스 스팟에 나와있는 시간정정 주문을 선물로 주문을 내는 샘플로 변경한 예제 입니다.
1. 아래의 코딩에서 ID를 부여한후 미체결을 인지하는 코딩은
if(OrderResponse.orderID == ID) 로 보여지는데, 레퍼런스에서 보면
해당코딩은 ID에서 부여한 스팟고유의 번호와 응답에서 받은 고유 번호가 같은 주문
인지를 판단하는 로직으로 보여집니다.
스팟 설명부분에
C.주문응답 이벤트가 발생하면 타이머가 설정이 되고 지정한 60초가 경과한 후 미체결 이면 정정주문을 해야 합니다. 정정주문에 대한 주문응답을 받으면 다시 타이머가 작동되고60초 후에 다시 정정주문을 발생합니다.
==> 주문이 발생한후 해당주문이 체결되었는지, 미체결되었는지 구분하는 코딩셈플을 알고 싶습니다. (제가 이해가 짧은것인지...ㅠ.ㅠ)
2. Unfill 객체를 가지고 특정종목을 매수/매도 주문을 냈을때 , 특정종목의 체결
미체결 여부를 알 수 있는 샘플 코딩 부탁드리겠습니다.
// < 시간 정정 주문>
// 종목객체: Futures(연결선물)
// 계좌객체: A1
var ID; // 전역변수의 선언
var Number;
var timerCnt=0;
// 전략이 예스스팟 전략에 실행될때 ==> 최초 실행시 넣어주어야할 값이나 계산이 있을 때 사용
function Main_OnStart()
{
// 시작과 동시에 선물매수5호가에 주문을 냄
ID=A1.OrderBuy(Futures.code, 1, Futures.Bid(5)-0.25, 0);
Main.MessageLog(" 주문ID " + ID);
Main.MessageLog(" 주무종목 " + Futures.code);
Main.MessageLog(" 1차주문가격 " + Futures.Bid(5)-0.25);
}
//주문에 관한 응답을 받으면
function Main_OnOrderResponse(OrderResponse)
{
if(OrderResponse.orderID == ID)
{
Number = OrderResponse.orderNum;
Main.SetTimer(1,10000); // 10초 동안 타이머를 작동시킴
//LOG
Main.MessageLog(" 주문ID " + ID
+ " 주문번호 " + OrderResponse.orderNum
+ " 주문가격 " + OrderResponse.orderPrice
);
}
}
function Main_OnTimer(nEventID)
{
if(nEventID == 1)
{
ID=A1.OrderReplace(Number,1, Futures.Bid(4)-0.25);
Main.KillTimer(1);
}
// 타이머가 작동한 횟수
timerCnt +=1;
Main.MessageLog(" Timer 작동회수 " + timerCnt );
}
// 주문이 체결되면 타이머 중지
function Main_OnNotifyFill(NotifyFill)
{
if(NotifyFill.orderNum == Number)
Main.KillTimer(1);
}
2013-07-10
1291
글번호 222439
답변완료
예스스팟에서 시그날 관련 질문
다른 분들의 질의를 읽다보니
시그날과 관련 된 글이 있어 질문 드립니다.
시그날 객체 라는 부분은
예스랭귀지로 작성된 시스템 식을 말하는 건가요 ?
예를 들어 예스랭귀지로 시스템 식을 작성하여
차트에 붙이고, 그 차트를 예스스팟의 차트객체에 연결하여
시그날을 받아오게 되는건지요 ?
만약 그렇다면,
시스템 식에 의하여 바로 주문이 발생하는건 아닌가요 ?
예스스팟에 붙이게 되면 예스랭귀지의 시스템식은
주문을 발생시키지 않고 예스스팟의 시그날로 넘겨주고
예스스팟에 SignalKind 를 분석한 후 예스스팟에서
OrderBuy 또는 OrderSell 주문을 내야 하는건가요 ?
시그날을 대한 설명좀 부탁드립니다.
아울러, 예스스팟에 관한 동영상은 아직 없나요 ?
-------------- 다른 분의 질문 발췌 --------------------
function C1_OnRiseSignal(Signal)
{
Kind = Signal.signalKind;
Main.MessageLog("신호완성/"+Kind);
//선물차트에서 매수신호발생하면 콜 매수
if (Signal.signalKind ==1)
{
BStart = 1;
BuyCallCode = Option.GetATMCallRecent(0);//ATM콜 종목코드
var BuyCallPrice = Option.GetBidByCode(BuyCallCode, 2);//ATM콜 매수2호가
A1.OrderBuy(BuyCallCode, vol, BuyCallPrice, 0);
Main.MessageLog("등가콜매수 : "+BuyCallCode);
//주문 후 내부파일에 콜종목코드를 BuyCall이름으로 저장
2013-07-03
1154
글번호 222431