답변완료
ReqMarketData - 옵션 종목 시세 업데이트
아래 코드는 다른 분의 문의 내용에 답변 주신 내용입니다. 차트 신호 발생 시 현재 진입한 옵션 종목의 시세를 확인하고 주문하는 내용이었습니다.
한 가지 추가로 질문 드릴 내용은 차트 신호와 관계 없이 현재 진입 중인 옵션 종목의 현재 시세를 계속 업데이트하면서 확인하려면 어떻게 해야하는지요?
==============================================
var BuyCallCode;
var Sig;
var Request;
function Chart1_OnRiseSignal(Signal)
{
//발생된 신호종류 저장
Sig = Signal.signalKind;
//buy신호 발생하면
if (Sig == 1 )
{
//ATM 콜옵션 종목코드 저장
BuyCallCode = Option.GetATMCallRecent(0);
//BuyCallCode 종목객체 요청
//(종목코드는 BuyCallCode, 일봉갯수는 1개(전일것만), 수급데이터는 0개)
Main.ReqMarketData(BuyCallCode, 1,0);
//Request는 true(매수신호 발생 후 한번만 요청하기 위한 변수)
Request = true;
}
}
//요청한 종목객체 생성완료
function Main_OnRcvMarketData(MarketData)
{
//item에 수신받은 종목객체 저장
var item = MarketData;
//최근 buy신호 발생되었고
//Request는 true이고
//생성된 종목객체의 종목코드가 BuyCallCode와 같으면
if (Sig == 1 && Request == true && item.code == BuyCallCode)
{
//Request는 false
Request = false;
//현재가가 전일종가보다 크면
if (item.current > item.GetPrevClose(1));
{
//BuyCallPrice에 매도2호가 저장
var BuyCallPrice = item.Ask(2);
//BuyCallCode종목을 BuyCallPrice에 지정가 매수주문
Account1.OrderBuy(BuyCallCode, 1, BuyCallPrice, 0);
//주문 후 종목객체 삭제
Main.RemoveMarketData(item);
}
}
}
2013-08-05
539
글번호 222486
답변완료
엑셀 개체 관련 문의
var nSheetIndex = 1;
// 엑셀 시트에서 해당 구역 행을 삭제하면서 RowCount = 0 이 되기를 기대
// 행 전체를 삭제하려면 ?
XLSInventory.Clear(nSheetIndex, "A1", "Z65536");
for ( var i=0; i<10; i++) {
// RowCount = 1 부터 10 에 데이터가 추가되기를 기대
XLSInventory.SetRowData(nSheetIndex, "A"+( XLSInventory.GetRowCount(nSheetIndex) + 1 ), i,i*2,i*3,i*4);
Main.MessageList(XLSInventory.GetRowCount(nSheetIndex));
}
위 코드가 기대한대로 동작을 하지 않는데, 어떻게 해결해야 할런지요 ?
2013-08-02
662
글번호 222484
답변완료
문의 드립니다.
안녕하세요.
질문 1.
예스스팟을 이용해서,
가령 코스피200선물을 거래하는 경우,
주간장에서는 10분봉 차트를 이용하고
야간장에서는 5분봉 차트를 이용하는 것이, 예스스팟에 의해 자동으로 선택되게 하는 것이 가능한지요?
가능하다면 소스를 어떻게 짜야 할지 알려 주시면 대단히 감사하겠습니다.
(좀더 일반적으로 표현한다면,
예스스팟을 이용하여,
지정한 시간대에,
지정한 분봉차트 내지 지정한 틱 차트를 바탕으로
매매되게하는 방법)
질문 2.
미체결 주문의 주문번호를 알아 내는 방법 부탁드립니다.
미체결 주문을 취소하기 위해서 주문번호가 필요한데,
SetUnfillIndex를 써서, 루프를 돌려서
// A. Buy 신호 발생.
if (Signal.signalKind == 1)
{
// 전체 미체결 객체 중에 차트 주종목과 같은 종목으로 주문낸 미체결 매수 주문, 미체결 매도 주문이 있는지를 찾음
A_Unfill_Buy_Cond = false; // 미체결 매수 주문이 있으면 true, 없으면 false
A_Unfill_Sell_Cond = false;// 미체결 매도 주문이 있으면 true, 없으면 false
// 사실 이 부분을 위해선, Unfill.count를 이용하는 것도 가능할 텐데...
var NumberOfUnfills = Account1.GetTheNumberOfUnfills();
for (var i=1; i<=NumberOfUnfills; i++)
{
Account1.SetUnfillIndex(i);
var ChartCode = Main.GetOrderCode(Chart1.GetCode(1));
if (Account1.Unfill.code == ChartCode && Account1.Unfill.orderKind == 2)
// 여기에서의 Unfill은 미체결 매수주문을 의미.
{
A_Unfill_Buy_Cond = true;
// 이 때의 i번째 Unfill은 차트 주종목(과 같은 종목)이고, 또 매수 미체결이다.
A_Unfill_Buy_OrderNumber = Account1.Unfill.orderNum
}
if (Account1.Unfill.code == ChartCode && Account1.Unfill.orderKind == 1)
// 여기에서의 Unfill은 미체결 매도 주문을 의미.
{
A_Unfill_Sell_Cond = true;
// 이 때의 i번째 Unfill은 차트 주종목(과 같은 종목)이고, 또 매도 미체결이다.
A_Unfill_Sell_OrderNumber = Account1.Unfill.orderNum
}
이렇게 해 보고 있는데, 실제 적용을 해 보면,
ReferenceError: A_Unfill_Buy_Cond is not defined
ReferenceError: C_Unfill_Buy_OrderNumber is not defined
이런 오류보고가 계속 나옵니다.
(위의 A는 Buy 신호 발생의 경우이고, C는 Sell 신호 발생의 경우입니다).
오타는 최대한 검토해서 없는 것으로 보이는데, 논리적인 문제가 있는 것 같습니다.
위 소스의 문제점을 지적해 주시고 수정해 주셔도 대단히 감사하겠고,
위 소스를 완전히 무시하시고, 미체결 주문의 주문번호를 알아 내는 다른 방법을 알려 주셔도 대단히 감사하겠습니다.
질문 3.
특히, 2번 질문에 대해, Unfill.count를 이용해서 하는 방법이 가능하다면 코드를 알려 주시면 대단히 감사하겠습니다.
감사합니다.
2013-07-31
624
글번호 222478