커뮤니티

질문드립니다.

프로필 이미지
가이츠
2018-07-17 07:23:25
2072
글번호 224497
답변완료
아래는 현재 사용중인 스팟수식입니다. 장중에 타이머 기능을 통해 주기적으로 종목을 검색하고 지정된 매매시스템으로 매매를 하고자 합니다. 아래 수식에 파워종목검색의 1분주기 타이머 기능을 추가하여 주시면 감사하겠습니다. //스팟 시작할때 파워종목검색의 사용자검색조건 실행 function Main_OnStart() { Main.ReqPowerSearch("검색조건명");//사용자검색조건명 지정 } //종목검색 완료(aItemList : 종목리스트), (nCount : 종목수) function Main_OnRcvItemList(aItemList, nCount) { // 확장챠트의 생성과 적용될 시스템의 세부 설정 var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1,// 거래수량 100000000, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 20); // 최대진입횟수 //확장 챠트는 최대 100개까지만 가능 for (var i = 0; i < Math.min(nCount,100); i++) { //생성할 차트 셋팅 var ChartSet = new ReqChartItem(aItemList[i], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 시스템명 및 설정 var SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null); Main.ReqChartEx(ChartSet,SystemSet); } } //확장챠트에서 발생한 신호에 의해 주문을 넣는 단계 function Main_OnRiseSignal(ChartEx, Signal) { //buy신호 발생 if (Signal.signalKind == 1) { // 매수주문 Account1.OrderBuy(Signal.code, Signal.count , Signal.price, 1); } //Exitlong신호 발생 if (Signal.signalKind == 2) { // 매도주문 Account1.OrderSell(Signal.code, Signal.count , Signal.price, 1); } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-07-17 13:18:55

안녕하세요 예스스탁입니다. 1 1분주기로 반복해서 검색하면 이전 검색되어 차트가 만들어진 종목이 또 검색될 수 있습니다. 반복되는 종목은 피해서 차트를 만드셔야 합니다. 검색될때 마다 이전 검색되어 차트를 열었던 종목은 제외하고 차트 생성하게 해야 합니다. 2 차트나 종목객체는 15초당 60건으로 제한이 있습니다. 그러므로 차트나 종목객체를 생성할 때 순서대로 생성하고 제한시간이 걸리면 15초이상 쉬고 다시 요청하게 코딩하셔야 합니다. 3 스팟은 단순히 작성상의 가이드 입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 4 var List = [],ReqList = []; var TradeSet,ChartSet,SystemSet,req; //스팟 시작할때 파워종목검색의 사용자검색조건 실행 function Main_OnStart() { Main.SetTimer(1, 60000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); //Main.ReqPowerSearch("검색조건명");//사용자검색조건명 지정 Main.ReqPowerSearch("#test");//사용자검색조건명 지정 } if (nEventID == 2) { //차트 셋팅 ChartSet = new ReqChartItem(ReqList[req], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false); //시스템의 세부설정 TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1,// 거래수량 100000000, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 20); // 최대진입횟수 //시스템설정 SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null); Main.ReqChartEx(ChartSet,SystemSet); } } //종목검색 완료(aItemList : 종목리스트), (nCount : 종목수) function Main_OnRcvItemList(aItemList, nCount) { ReqList = []; for (var i = 0; i < nCount; i++) { var add = true; for (var z = 0; z < List.length; z++) { if (aItemList[i] == List[z]) { add = false; } } if (add == true) { List.push(aItemList[i]); ReqList.push(aItemList[i]); } } if (ReqList.length > 0) { req = 0; //차트 셋팅 ChartSet = new ReqChartItem(ReqList[req], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false); //시스템의 세부설정 TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1,// 거래수량 100000000, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 20); // 최대진입횟수 //시스템설정 //SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null); SystemSet = new SystemInfo("test",YL_TYPE_NORMAL,null,TradeSet,null); Main.ReqChartEx(ChartSet,SystemSet); } } //확장챠트에서 발생한 신호에 의해 주문을 넣는 단계 function Main_OnRiseSignal(ChartEx, Signal) { //buy신호 발생 if (Signal.signalKind == 1) { // 매수주문 Account1.OrderBuy(Signal.code, Signal.count , Signal.price, 1); } //Exitlong신호 발생 if (Signal.signalKind == 2) { // 매도주문 Account1.OrderSell(Signal.code, Signal.count , Signal.price, 1); } } function Main_OnRcvChartEx(ChartEx) { if (ChartEx.GetCode(1) == ReqList[req]) { req = req+1; if (req < ReqList.length) { //차트 셋팅 ChartSet = new ReqChartItem(ReqList[req], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false); //시스템의 세부설정 TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1,// 거래수량 100000000, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 20); // 최대진입횟수 //SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null); SystemSet = new SystemInfo("test",YL_TYPE_NORMAL,null,TradeSet,null); var S = Main.ReqChartEx(ChartSet,SystemSet); if (S == -1) { Main.SetTimer(2, 20000); } } else { Main.MessageList("차트생성완료"); Main.SetTimer(1, 60000); } } } 즐거운 하루되세요 > 가이츠 님이 쓴 글입니다. > 제목 : 질문드립니다. > 아래는 현재 사용중인 스팟수식입니다. 장중에 타이머 기능을 통해 주기적으로 종목을 검색하고 지정된 매매시스템으로 매매를 하고자 합니다. 아래 수식에 파워종목검색의 1분주기 타이머 기능을 추가하여 주시면 감사하겠습니다. //스팟 시작할때 파워종목검색의 사용자검색조건 실행 function Main_OnStart() { Main.ReqPowerSearch("검색조건명");//사용자검색조건명 지정 } //종목검색 완료(aItemList : 종목리스트), (nCount : 종목수) function Main_OnRcvItemList(aItemList, nCount) { // 확장챠트의 생성과 적용될 시스템의 세부 설정 var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1,// 거래수량 100000000, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 20); // 최대진입횟수 //확장 챠트는 최대 100개까지만 가능 for (var i = 0; i < Math.min(nCount,100); i++) { //생성할 차트 셋팅 var ChartSet = new ReqChartItem(aItemList[i], 1, CHART_PERIOD_MINUTE, 400,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 시스템명 및 설정 var SystemSet = new SystemInfo("매매조건명",YL_TYPE_NORMAL,null,TradeSet,null); Main.ReqChartEx(ChartSet,SystemSet); } } //확장챠트에서 발생한 신호에 의해 주문을 넣는 단계 function Main_OnRiseSignal(ChartEx, Signal) { //buy신호 발생 if (Signal.signalKind == 1) { // 매수주문 Account1.OrderBuy(Signal.code, Signal.count , Signal.price, 1); } //Exitlong신호 발생 if (Signal.signalKind == 2) { // 매도주문 Account1.OrderSell(Signal.code, Signal.count , Signal.price, 1); } }