예스스탁
예스스탁 답변
2018-06-25 17:12:03
안녕하세요
예스스탁입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
1
이전 답변에 설명하지 못한부분이 있어 추가 설명을 드립니다.
스팟에서 사용하는 엑셀파일을 만드신 후에
첨부된 그림과 같이 B열은 속성을 텍스트로 지정해 주셔야 합니다.
주문을 위해 종목코드를 가져와야 하는데
단순 저장하게 되면 005930이 5930으로 저장됩니다.
스팟에서 엑셀의 속성은 접근이 되지 않으므로
B열만 텍스트로 지정하고 이후에 사용하시면 됩니다.
2
기존엑셀내용우측으로 매도가격,추가매수가격,추가매수수량 지정해 주시면 됩니다.
3
var V1 = [];
var V2 = [];
var V3 = [];
var V4 = [];
var V5 = [];
var num;
function Main_OnStart()
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS > 83000)
{
Main.SetTimer(1,5000);
}
if (HHMMSS >= 15300)
{
Main.SetTimer(2,5000);
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 80000 && nEventID == 1)
{
Main.KillTimer(1);
Main.MessageList(Excel1.GetColCount(1),Excel1.GetRowCount(1))
for (var i = 3; i <= Excel1.GetRowCount(1); i++)
{
Account1.OrderSell(Excel1.GetData(1,"B"+i),Excel1.GetData(1,"D"+i),Excel1.GetData(1,"f"+i),0);
Account1.OrderBuy(Excel1.GetData(1,"B"+i),Excel1.GetData(1,"H"+i),Excel1.GetData(1,"G"+i),0);
}
}
if (HHMMSS >= 153000 && nEventID == 2)
{
Main.KillTimer(2);
num = Account1.GetTheNumberOfBalances();
Excel1.SetData(1, "A1","보유종목수");
Excel1.SetData(1, "B1",num);
Excel1.SetData(1, "A2","종목명");
Excel1.SetData(1, "B2","종목코드");
Excel1.SetData(1, "C2","평단가");
Excel1.SetData(1, "D2","보유수량");
Excel1.SetData(1, "E2","현재가");
Excel1.SetData(1, "F2","매도가격");
Excel1.SetData(1, "G2","추가매수");
Excel1.SetData(1, "H2","추가수량");
if (num > 0)
{
req = 0;
Account1.SetBalance(req);
V2[req] = Account1.Balance.code;
V3[req] = Account1.Balance.avgUnitCost;
V4[req] = Account1.Balance.count;
V5[req] = Account1.Balance.current;
Main.ReqMarketData(Account1.Balance.code,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
V1[req] = MarketData.name;
req = req+1;
if (req < num)
{
Account1.SetBalance(req);
V2[req] = Account1.Balance.code;
V3[req] = Account1.Balance.avgUnitCost;
V4[req] = Account1.Balance.count;
V5[req] = Account1.Balance.current;
Main.ReqMarketData(Account1.Balance.code,0,0);
}
else
{
Excel1.SetArrayToCol(1,"A3",V1);
Excel1.SetArrayToCol(1,"B3",V2);
Excel1.SetArrayToCol(1,"C3",V3);
Excel1.SetArrayToCol(1,"D3",V4);
Excel1.SetArrayToCol(1,"E3",V5);
}
}
즐거운 하루되세요
> 여세우 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 수고하십니다.
장 종료후 계좌의 주식 현물 전 종목을 엑셀로 불러온 후에,
각 종목당 지정가 매도가격과 추가 매수가격을 기입해서
다음날 아침 8시 한번에 주문을 내는 식 부탁드립니다.
안녕하세요
예스스탁입니다.
아래 내용 참고하시기 바랍니다.
첨부된 그림과 같이 표시됩니다.
잔고객체에 종목명은 없어 별도로 종목개체 생성해서 사용하게 되어 있습니다.
var V1 = [];
var V2 = [];
var V3 = [];
var V4 = [];
var V5 = [];
var num;
function Main_OnStart()
{
Main.SetTimer(1, 1000);
}
function Main_OnTimer(nEventID)
{
Main.KillTimer(1);
num = Account1.GetTheNumberOfBalances();
Excel1.SetData(1, "A1","보유종목수");
Excel1.SetData(1, "B1",num);
Excel1.SetData(1, "A2","종목명");
Excel1.SetData(1, "B2","종목코드");
Excel1.SetData(1, "C2","평단가");
Excel1.SetData(1, "D2","보유수량");
Excel1.SetData(1, "E2","현재가");
if (num > 0)
{
req = 0;
Account1.SetBalance(req);
V2[req] = Account1.Balance.code;
V3[req] = Account1.Balance.avgUnitCost;
V4[req] = Account1.Balance.count;
V4[req] = Account1.Balance.current;
Main.ReqMarketData(Account1.Balance.code,0,0);
}
}
function Main_OnRcvMarketData(MarketData)
{
V1[req] = MarketData.name;
req = req+1;
if (req < num)
{
Account1.SetBalance(req);
V2[req] = Account1.Balance.code;
V3[req] = Account1.Balance.avgUnitCost;
V4[req] = Account1.Balance.count;
V4[req] = Account1.Balance.current;
Main.ReqMarketData(Account1.Balance.code,0,0);
}
else
{
Excel1.SetArrayToCol(1,"A3",V1);
Excel1.SetArrayToCol(1,"B3",V2);
Excel1.SetArrayToCol(1,"C3",V3);
Excel1.SetArrayToCol(1,"D3",V4);
Excel1.SetArrayToCol(1,"E3",V4);
}
}