커뮤니티

수식 관련 문의

프로필 이미지
edan
2021-01-18 09:43:24
904
글번호 145520
답변완료
안녕하세요 예스스팟에서 실시간 채결량을 확인하고 싶은데요. 1) 실시간으로 받아오기 위해서는 Main_OnU*pdateMarket(sItemCode,U*pdateID) 을 쓰면 될까요? 2) 체결량은 가져오는 값은 MarketData1.volume 이 맞을까요? 3) 매수에 의한 체결량인지, 매도에 의한 체결량인지는 어떤방법으로 구분할수 있을까요? 4) 종목검색 - Main.ReqMarketData - Main_OnU*pdateMarket 를 통해 받아오는 경우, Main_OnU*pdateMarket(sItemCode,U*pdateID) 에서 입력변수로 종목검색 객체를 받아오지 않으니 체결량을 끌고오기 어렵습니다. - 전역변수로 var MD; 선언하고 - OnRcvMarketData 이벤트에서 값을 넘기고, function Main_OnRcvMarketData(MarketData) MD = MarketData; - Main_OnU*pdateMarket 이벤트에서 값을 받아오면 MessageLog("체결량 ="+MD.volume); - 에러가 발생합니다. "TypeError: Cannot read property 'volume' of undefined 어떻게 처리하면 좋을지 조언 부탁드립니다. ㅠㅠ
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-01-18 16:55:37

안녕하세요 예스스탁입니다. 1 예 맞습니다. 스크립트객체화면에서 종목객체를 설정하거나 수식안에서 Main.ReqMarketData함수로 종목객체 생성하면 해당 종목의 시세가 발생하면 Main_OnU*pdateMarket(sItemCode,U*pdateID)이벤트가 발생하게 됩니다. 2 예 맞습니다. 3 체결량은 매수와 매도로 구분되지 않습니다. 4 올려주신 내용은 MD에 종목객체가 제대로 만들어지 못해서 발생하는 내용입니다. 종목검색후에 검색된 종목이 다수이면 요청할때 종목코드 확인해 보시기 바랍니다. 수식에서 잘못 할당되는 부분이 있는것 같습니다. 아래 코드를 참고하시기 바랍니다. var ItemList = [],MD = []; var req; function Main_OnStart() { Main.MessageList("Start"); Main.ReqPowerSearch("hancom25"); } function Main_OnRcvItemList(aItemList, nCount) { ItemList = aItemList; if (ItemList.length > 0) { req = 0; Main.MessageList("종목객체요청 : ",req,ItemList[req]); Main.ReqMarketData(ItemList[req]); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == ItemList[req]) { Main.MessageList("종목객체생성:",req,MarketData.code); MD.push(MarketData); req = req+1; if (req < ItemList.length) { Main.MessageList("종목객체요청 : ",req,ItemList[req]); Main.ReqMarketData(ItemList[req]); } else { Main.MessageList("종목객체생성완료"); } } } function Main_OnUp*dateMarket(sItemCode, lUp*dateID) { if (lUp*dateID == 30001) { for (var i = 0; i < MD.length; i++) { if (sItemCode == MD[i].code) { Main.MessageList(sItemCode,MD[i].volumeTotal,MD[i].volume); } } } } 즐거운 하루되세요 > edan 님이 쓴 글입니다. > 제목 : 수식 관련 문의 > 안녕하세요 예스스팟에서 실시간 채결량을 확인하고 싶은데요. 1) 실시간으로 받아오기 위해서는 Main_OnU*pdateMarket(sItemCode,U*pdateID) 을 쓰면 될까요? 2) 체결량은 가져오는 값은 MarketData1.volume 이 맞을까요? 3) 매수에 의한 체결량인지, 매도에 의한 체결량인지는 어떤방법으로 구분할수 있을까요? 4) 종목검색 - Main.ReqMarketData - Main_OnU*pdateMarket 를 통해 받아오는 경우, Main_OnU*pdateMarket(sItemCode,U*pdateID) 에서 입력변수로 종목검색 객체를 받아오지 않으니 체결량을 끌고오기 어렵습니다. - 전역변수로 var MD; 선언하고 - OnRcvMarketData 이벤트에서 값을 넘기고, function Main_OnRcvMarketData(MarketData) MD = MarketData; - Main_OnU*pdateMarket 이벤트에서 값을 받아오면 MessageLog("체결량 ="+MD.volume); - 에러가 발생합니다. "TypeError: Cannot read property 'volume' of undefined 어떻게 처리하면 좋을지 조언 부탁드립니다. ㅠㅠ