예스스탁
예스스탁 답변
2018-09-13 16:59:25
안녕하세요
웰스멘토입니다.
종목의 호가정보를 알기 위해서는 종목객체가 필요합니다.
그러므로 엑셀에서 종목코드를 가져온후 각 종목에 대한 종목객체를 생성하고
주문하게 하셔야 합니다.
스팟 수식답변은 참고용 가이드입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
var List = [];
var Vol = [];
var Obj = [];
var req = 0;
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS > 093000 && HHMMSS < 150000 )
{
Main.SetTimer(1,5000);
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 090000 && nEventID == 1)
{
Main.KillTimer(1);
var ii = 0;
for (var i = 3; i < Excel1.GetRowCount(1); i++)
{
//각 배열변수 0번방 부터 차례로 종목코드와 수량 저장
List[ii] = Excel1.GetData(1,"B"+i);
Vol[ii] = Excel1.GetData(1,"C"+i);
ii = ii+1;
//Account1.OrderBuy(Excel1.GetData(1,"B"+i),Excel1.GetData(1,"C"+i),매수1호가,0);
}
if (List.length > 0);
{
req = 0;
Main.ReqMarketData(List[req],0,0);
}
}
//2번 타이머 동작
if (nEventID == 2)
{
//타이머 중지
Main.KillTimer(2);
//다음종목객체 재요청
Main.ReqMarketData(List[req],0,0);
}
//3번 타이머 동작
if (nEventID == 2)
{
//타이머 중지
Main.KillTimer(3);
//미체결 주문 수
var UnFillNum = Account1.GetTheNumberOfUnfills();
for (var i = 0; i < UnFillNum; i++)
{
//미체결주문을 하나씩 셋팅하고
Account1.SetUnfill(i);
//미체결수량이 있으면
if (Account1.Unfill.count > 0)
{
for (var z = 0; z < Obj.length; z++)
{
//종목객체들 중 셋팅된 미체결종목과 같은 종목의 종목객체를 찾고
// 매도1호가가 주문가격과 다르면
if (Obj[z].code == Account1.Unfill.code &&
Obj[z].Ask(1) != Account1.Unfill.price)
{
//매도1호가로 정정주문
Account1.OrderReplacePrice(Account1.Unfill.orderNum,Obj[z].Ask(1));
}
}
}
}
}
}
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == List[req])
{
//Obj배열변수에 요청한 순서로 종목객체 저장
Obj[req] = MarketData;
if (Vol[req] > 0)
{
Account1.OrderBuy(List[req],Vol[req],Obj[req].Bid(1),0);
}
req = req+1;
if (req < List.length)
{
//다음종목객체요청
var S = Main.ReqMarketData(List[req],0,0);
//종목객체 제한시간에 걸리면(15초에 60건)
if (S == -1)
{
//15초 타이머 셋팅
Main.SetTimer(2,15000);
}
}
else
{
Main.MessageList("매수주문완료");
//600초(10분) 타이머 셋팅
Main.SetTimer(3,600000);
}
}
}
즐거운 하루되세요
> 연개소문1004 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다
> 항상 감사하게 생각합니다.
엑셀에서 여러종목의 종목명,수량을 가져와서 주문하는 수식을 만들고 있습니다.
아래에서 지정가매수주문에서 매수호가를 매수1호가에 주문하는 것과 미결제분은 10분후에 매도1호가로 정정주문하는 것을 추가하는 내용가르쳐주시면 감사하겠습니다.
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS > 093000 && HHMMSS < 150000 )
{
Main.SetTimer(1,5000);
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 090000 && nEventID == 1)
{
Main.KillTimer(1);
for (var i = 3; i < Excel1.GetRowCount(1); i++)
{
Account1.OrderBuy(Excel1.GetData(1,"B"+i),Excel1.GetData(1,"C"+i),매수1호가,0);
}
}
}