답변완료
수식 문의드립니다.
안녕하세요. 예스스팟 수식을 부탁드립니다.
진입은 이미 들어가 있는 상태이고 예스스팟으로 청산주문을 내고 싶습니다.
1. 계좌에 있는 옵션(콜, 풋)를 조회해서 청산주문을 낸다. 옵션잔고는 매도만 있음.
(단, 계좌에는 선물도 있지만, 선물에 대해서는 건드리지 않음)
2. 매도청산 주문가격은 매수 1호가로 처음 낸 후
3. 콜, 풋가운데 한 쪽이 먼저 체결되면 반대쪽 콜, 풋의 주문가격을 매도 5호가로 정정한다.
** 콜, 풋 종목이 하나 씩이 아니라 여러 행사가가 계좌잔고에 있을 수 있는 경우에 대해 수식을 부탁드립니다.
혹시, 하나 씩만 있어야 수식작성이 가능하다면, 하는 수 없지만 하나 씩 있는 경우라도 수식을 만들어 주시면 감사하겠습니다.
수고하세요. 감사합니다.
2013-07-13
1306
글번호 222443
답변완료
미체결 조회
예스 스팟에 나와있는 시간정정 주문을 선물로 주문을 내는 샘플로 변경한 예제 입니다.
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
1275
글번호 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
1144
글번호 222431