커뮤니티

수식 검토

프로필 이미지
somun
2014-06-29 12:16:21
1227
글번호 223052
답변완료
안녕하세요 아래는 현물 관심종목그룹을 불러내서 종목과 차트를 생성하는 내용입니다. 그런데 1. 관심종목중에서 1번째 종목의 차트생성이 안되네요 아무리 봐도 알 수가 없네요 ㅜ 2. 생성된 관심종목의 차트에서 시스템 신호에 따른 매수와 청산식까지 마저 완성해주시면 고맙겠습니다. var List = new Array(100); var ListCnt; //관심종목의 수 var RcvCount; //종목객체 생성종목의 수 //종목객체를 저장할 배열변수 var SymBol = new Array(100); //주문여부를 저장할 배열변수 var Buy = new Array(100); //매수주문금액 var BuyMoney = 1000000; function Main_OnStart() { //스팟실행시 지정한 이름의 관심종목을 호출 //관심종목의 종목수 ListCnt = Main.GetItemCountOfInterest("거래_단봉") Main.MessageList("전체종목수",ListCnt); //차례대로 배열변수 List에 저장( 최대 100종목) for(var i = 0; i < ListCnt; i++) { List[i] = Main.GetItemCodeInInterest("거래_단봉", i); Main.MessageList("거래_단봉",List[i]); } Main.ReqMarketData(List[0],50,0); Start = false RcvCount = 0; } //요청한 종목객체가 생성되면 function Main_OnRcvMarketData(MarketData) { //생성 종목수 카운트 RcvCount = RcvCount+1; //배열변수 SymBol의 RcvCount방에 현재 수신된 종목객체 저장 SymBol[RcvCount] = MarketData; Main.MessageList(RcvCount,"번째 종목생성",MarketData.name); //다음 순번 종목객체 요청 if (RcvCount < ListCnt) { Main.SetTimer(1, 1000); } //종목객체가 모두 생성되면(종목검색으로 나온 종목수와 생성횟수가 같을때) if (RcvCount == ListCnt) { Main.KillTimer(1); Start = true; Main.MessageList("종목생성완료",Start); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.ReqMarketData(List[RcvCount],50,0); for (var i = 1; i <= RcvCount; i++) { //차트설정 4분봉 500바 var ChartSet = new ReqChartItem(List[i],4,CHART_PERIOD_MINUTE, 500,CHART_REQCOUNT_BAR, false, false); } //시스템 설정 var SystemInputSet = new Array(new YLInputVar("p1", "80"),new YLInputVar ("p2", "160")); var SystemSet = new SystemInfo("현물_4분",YL_TYPE_NORMAL,SystemInputSet); Main.ReqChartEx(ChartSet,SystemSet); } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-07-08 10:29:38

안녕하세요 예스스탁입니다. 1. 종목객체가 완료가 되면 1초뒤에 다음 종목을 요청하므로 첫번째 차트가 생성되지 않았습니다. 차트객체의 생성을 종목객체가 만들어 지는 것을 알려주는 function Main_OnRcvMarketData(MarketData) 이벤트에서 하셔야 합니다. 2. 아래식 참고하시기 바랍니다. var List = new Array(100); var ListCnt; //관심종목의 수 var RcvCount; //종목객체 생성종목의 수 //종목객체를 저장할 배열변수 var SymBol = new Array(100); //매수주문금액 var BuyMoney = 1000000; //매수수량저장 var BuyVol = new Array(100); function Main_OnStart() { //스팟실행시 지정한 이름의 관심종목을 호출 //관심종목의 종목수 ListCnt = Main.GetItemCountOfInterest("거래_단봉") Main.MessageList("전체종목수",ListCnt); //차례대로 배열변수 List에 저장( 최대 100종목) for(var i = 0; i < ListCnt; i++) { List[i] = Main.GetItemCodeInInterest("거래_단봉", i); Main.MessageList("거래_단봉",List[i]); } Main.ReqMarketData(List[0],50,0); Start = false RcvCount = 0; } //요청한 종목객체가 생성되면 function Main_OnRcvMarketData(MarketData) { //생성 종목수 카운트 RcvCount = RcvCount+1; //배열변수 SymBol의 RcvCount방에 현재 수신된 종목객체 저장 SymBol[RcvCount] = MarketData; Main.MessageList(RcvCount,"번째 종목생성",MarketData.name); //다음 순번 종목객체 요청 if (RcvCount < ListCnt) { Main.SetTimer(1, 1000); } //차트 설정 var ChartSet = new ReqChartItem(SymBol[RcvCount].code,5,CHART_PERIOD_SECOND, 500,CHART_REQCOUNT_BAR, false, false); //시스템 설정 var SystemInputSet = new Array(new YLInputVar("p1", "80"),new YLInputVar("p2", "160")); var SystemSet = new SystemInfo("현물_4분",YL_TYPE_NORMAL,SystemInputSet); Main.ReqChartEx(ChartSet,SystemSet); //종목객체가 모두 생성되면(종목검색으로 나온 종목수와 생성횟수가 같을때) if (RcvCount == ListCnt) { Main.KillTimer(1); Start = true; Main.MessageList("종목생성완료",Start); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.ReqMarketData(List[RcvCount],50,0); //차트설정 4분봉 500바 } } function Main_OnRiseSignal(ChartEx, Signal) { for (var i = 1; i <= RcvCount; i++) { if (SymBol[i].code == ChartEx.GetCode(1)) { if (Signal.signalKind == 1) { BuyVol[i] = 0; if (SymBol[i].tradeUnit == 1) BuyVol[i] = Math.floor(BuyMoney/SymBol[i].Ask(5) ); else BuyVol[i] = Math.floor((BuyMoney/SymBol[i].Ask(5) )/SymBol[i].tradeUnit)*10; Account1.OrderBuy(Signal.code,BuyVol[i],SymBol[i].Ask(5),0); } if (Signal.signalKind == 1) Account1.OrderSell(Signal.code,BuyVol[i],SymBol[i].Bid(5),0); } } } 즐거운 하루되세요 > somun 님이 쓴 글입니다. > 제목 : 수식 검토 > 안녕하세요 아래는 현물 관심종목그룹을 불러내서 종목과 차트를 생성하는 내용입니다. 그런데 1. 관심종목중에서 1번째 종목의 차트생성이 안되네요 아무리 봐도 알 수가 없네요 ㅜ 2. 생성된 관심종목의 차트에서 시스템 신호에 따른 매수와 청산식까지 마저 완성해주시면 고맙겠습니다. var List = new Array(100); var ListCnt; //관심종목의 수 var RcvCount; //종목객체 생성종목의 수 //종목객체를 저장할 배열변수 var SymBol = new Array(100); //주문여부를 저장할 배열변수 var Buy = new Array(100); //매수주문금액 var BuyMoney = 1000000; function Main_OnStart() { //스팟실행시 지정한 이름의 관심종목을 호출 //관심종목의 종목수 ListCnt = Main.GetItemCountOfInterest("거래_단봉") Main.MessageList("전체종목수",ListCnt); //차례대로 배열변수 List에 저장( 최대 100종목) for(var i = 0; i < ListCnt; i++) { List[i] = Main.GetItemCodeInInterest("거래_단봉", i); Main.MessageList("거래_단봉",List[i]); } Main.ReqMarketData(List[0],50,0); Start = false RcvCount = 0; } //요청한 종목객체가 생성되면 function Main_OnRcvMarketData(MarketData) { //생성 종목수 카운트 RcvCount = RcvCount+1; //배열변수 SymBol의 RcvCount방에 현재 수신된 종목객체 저장 SymBol[RcvCount] = MarketData; Main.MessageList(RcvCount,"번째 종목생성",MarketData.name); //다음 순번 종목객체 요청 if (RcvCount < ListCnt) { Main.SetTimer(1, 1000); } //종목객체가 모두 생성되면(종목검색으로 나온 종목수와 생성횟수가 같을때) if (RcvCount == ListCnt) { Main.KillTimer(1); Start = true; Main.MessageList("종목생성완료",Start); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.ReqMarketData(List[RcvCount],50,0); for (var i = 1; i <= RcvCount; i++) { //차트설정 4분봉 500바 var ChartSet = new ReqChartItem(List[i],4,CHART_PERIOD_MINUTE, 500,CHART_REQCOUNT_BAR, false, false); } //시스템 설정 var SystemInputSet = new Array(new YLInputVar("p1", "80"),new YLInputVar ("p2", "160")); var SystemSet = new SystemInfo("현물_4분",YL_TYPE_NORMAL,SystemInputSet); Main.ReqChartEx(ChartSet,SystemSet); } }