커뮤니티

2414번 추가 질문입니다.

프로필 이미지
깜피
2023-05-18 10:33:16
1041
글번호 225801
답변완료
안녕하세요. 전에 작성해주신 수식에 대해서 추가 문의 드립니다. 제가 구상했던 시스템 운영 방식에 거의 다다른 것 같습니다. 큰 도움 주셔서 너무 감사합니다. 즐거운 하루 보내세요. ------------------------------------------------------------------------------------ 1. 미완성 신호로 매도하는 부분을 작성해주셨는데, 미완성 신호로 매수하는 부분 추가 (제가 내용을 추가 했는데 확인 부탁드립니다.) 2. 미완성 신호로 매수된 경우, 원래 익일 시가에 완성신호로 매수되는 금번차수 매수 금지 (미완성 1차 매수 시 완성 1차 매수 금지, 미완성 2차 매수시 완성 2차 매수 금지) var&#160;ItemList; var&#160;Count; var&#160;ReqCount; var&#160;d; var&#160;H; var&#160;CT&#160;=&#160;[]; function&#160;Main_OnStart()&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;Main.MessageLog("스팟시작"); &#160;&#160;&#160;&#160;&#160;&#160;d&#160;=&#160;new&#160;Date(); &#160;&#160;&#160;&#160;&#160;&#160;h&#160;=&#160;d.getDate(); &#160;&#160;&#160;&#160;&#160;&#160;//지정한&#160;관심그룹의&#160;종목수(관심그룹지정&#160;필요) &#160;&#160;&#160;&#160;&#160;&#160;Count&#160;=&#160;Main.GetItemCountOfInterest("관심종목1"); &#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("지정관심그룹&#160;종목수&#160;:&#160;",&#160;Count); &#160;&#160;&#160;&#160;&#160;&#160;ItemList&#160;=&#160;[];&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;//관심그룹&#160;종목코드를&#160;ItemList로&#160;옮김 &#160;&#160;&#160;&#160;&#160;&#160;for(var&#160;i&#160;=&#160;0&#160;;&#160;i&#160;<&#160;Count&#160;;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//관심그룹지정&#160;필요 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ItemList.push(Main.GetItemCodeInInterest("관심종목1",&#160;i)); &#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;//관심종목이&#160;1개&#160;이상이면&#160; &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Count&#160;>&#160;0) &#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//첫종목부터&#160;요청시작 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//요청갯수&#160;카운트&#160;변수는&#160;초기값&#160;0 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReqCount&#160;=&#160;0; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;TradeSet&#160;=&#160;&#160;new&#160;SystemTradeInfo(TRADE_FIXCAPITAL, &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;거래수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;자산 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;단위수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_PERCENT,&#160;&#160;//&#160;진입/청산&#160;수수료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_POINT,&#160;&#160;&#160;&#160;//&#160;진입/청산&#160;슬리피지 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PYRAMIDING_ENTRY,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;피라미딩&#160;설정여부(다른진입신호만&#160;허용) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;20);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입횟수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;ChartSet&#160;=&#160;new&#160;ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;SystemSet&#160;&#160;=&#160;new&#160;SystemInfo("YL_시스템(일봉)",&#160;YL_TYPE_NORMAL,&#160;null,&#160;TradeSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//차트객체&#160;요청 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.ReqChartEx(ChartSet,SystemSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("확장차트생성요청:",ItemList[ReqCount]); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//1벝&#160;타이머&#160;10초&#160;세팅 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetTimer(1,&#160;10000); &#160;&#160;&#160;&#160;&#160;&#160;} }&#160;&#160; //차트객체&#160;수신 function&#160;Main_OnRcvChartEx(ChartEx) { &#160;&#160;&#160;&#160;&#160;&#160;//방금&#160;요청한&#160;종목이&#160;맞는지&#160;확인 &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(ChartEx.GetCode(1)&#160;==&#160;ItemList[ReqCount])&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("확장차트생성완료:",ChartEx.GetCode(1)); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//차트객체를&#160;순차적으로&#160;CT배열변수에&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CT.push(ChartEx); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//요청갯수&#160;1증가 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReqCount&#160;=&#160;ReqCount+1; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//요청갯수가&#160;Count&#160;미만이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(ReqCount&#160;<&#160;Count) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//다음종목&#160;요청 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;TradeSet&#160;=&#160;&#160;new&#160;SystemTradeInfo(TRADE_FIXCAPITAL, &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;거래수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;자산 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;단위수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_PERCENT,&#160;&#160;//&#160;진입/청산&#160;수수료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_POINT,&#160;&#160;&#160;&#160;//&#160;진입/청산&#160;슬리피지 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PYRAMIDING_ENTRY,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;피라미딩&#160;설정여부(다른진입신호만&#160;허용) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;20);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입횟수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;ChartSet&#160;=&#160;new&#160;ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;SystemSet&#160;&#160;=&#160;new&#160;SystemInfo("YL_시스템(일봉)",&#160;YL_TYPE_NORMAL,&#160;null,&#160;TradeSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.ReqChartEx(ChartSet,SystemSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("확장차트생성요청:",ItemList[ReqCount]);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else//아니면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//종목객체생성&#160;종료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("종목객체생성완료");&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} } //타이머&#160;동작 function&#160;Main_OnTimer(nEventID) { &#160;&#160;&#160;&#160;&#160;&#160;//1번&#160;타이머&#160;동작 &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(nEventID&#160;==&#160;1) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;d&#160;=&#160;new&#160;Date(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HHMMSS&#160;=&#160;d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//15시&#160;25분이&#160;되면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(HHMMSS&#160;>=&#160;152500) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//타이머종료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.KillTimer(1); #######################################추가##################################### &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//생성된&#160;전체차트에서&#160;미완성&#160;매수신호&#160;있는&#160;것을&#160;확인하고&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성매수신호가&#160;있고&#160;잔고에&#160;보유수량이 없으면 매수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&#160;(var&#160;i =&#160;0;&#160;i <&#160;CT.length;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;///마지막봉의&#160;미완성&#160;신호&#160;정보를&#160;가져와&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;Incom2 =&#160;CT[i].GetIncompleteSignal(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성&#160;정보가&#160;있고&#160;매수 신호이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Incom2[0]&#160;!=&#160;null&#160;&&&#160;Incom2[0].signalKind&#160;==&#160;1)&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetBalance(Incom2[0].code,&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Balance.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderBuy(Incom2[0].code, Incom2[0].count,&#160;Incom2[0].price,&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} ############################################################################## &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//생성된&#160;전체차트에서&#160;미완성&#160;매도신호&#160;있는&#160;것을&#160;확인하고&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성매도신호가&#160;있고&#160;잔고에&#160;보유수량이&#160;있으면&#160;전량&#160;매도 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&#160;(var&#160;i&#160;=&#160;0;&#160;i&#160;<&#160;CT.length;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;///마지막봉의&#160;미완성&#160;신호&#160;정보를&#160;가져와&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;Incom&#160;=&#160;CT[i].GetIncompleteSignal(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성&#160;정보가&#160;있고&#160;매수청산&#160;신호이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Incom[0]&#160;!=&#160;null&#160;&&&#160;Incom[0].signalKind&#160;==&#160;2)&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetBalance(Incom[0].code,&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Balance.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderSell(Incom[0].code,&#160;Account1.Balance.count,&#160;Incom[0].price,&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} } //신호발생 function&#160;Main_OnRiseSignal(ChartEx,&#160;Signal) { &#160;&#160;&#160;&#160;&#160;&#160;//신호발생&#160;종목에&#160;대해&#160;잔고셋팅 &#160;&#160;&#160;&#160;&#160;&#160;Account1.SetBalance(Main.GetOrderCode(Signal.code),0); &#160;&#160;&#160;&#160;&#160; &#160; ###############################추가 요청#######################################&#160;&#160; #### 미완성 신호로 매수된 경우, 익일 시가에 완성신호로 금번 차수 매수 금지##### ########## 다음 차수 매수는 익일에 나오지 않습니다.########################### &#160;&#160;&#160;&#160;&#160;&#160;//매수신호 시&#160;매수&#160; &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Signal.signalKind&#160;==&#160;1)&#160;//////&#160;&&&#160;Account1.Balance.count&#160;==&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderBuy(Main.GetOrderCode(Signal.code),&#160;Signal.count,&#160;Signal.price,&#160;0);&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("매수주문9"); &#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Signal.signalKind&#160;==&#160;2) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//전체미체결주문&#160;갯수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;num&#160;=&#160;Account1.GetTheNumberOfUnfills(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//전체&#160;미체결수&#160;만큼&#160;루프를&#160;돌면서 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&#160;(var&#160;i&#160;=&#160;0;&#160;i&#160;<&#160;num;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미체결을&#160;하나씩&#160;셋팅하고&#160;Account1.GetTotalAmount(nCategory,&#160;nTradeKind) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetUnfill(i); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미체결종목이&#160;신호종목과&#160;같고&#160;미체결수량이&#160;있으면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Unfill.code&#160;==&#160;Main.GetOrderCode(Signal.code)&#160;&&&#160;Account1.Unfill.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderCancel(Account1.Unfill.orderNum); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//잔고수량만큼만&#160;매도 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Balance.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderSell(Main.GetOrderCode(Signal.code),&#160;Signal.count,&#160;Signal.price,&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("매도주문");&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-06-28 16:21:20

안녕하세요 예스스탁입니다. 스팟의 답변은 가이드일뿐입니다. 스팟은 사용자분 책임하에 테스트 하시면서 수식을 완성하셔야 합니다. 대략적인 내용에 대해서만 보완해 드립니다. 1 if (Account1.Balance.count > 0) 청산은 수량이 있을때만 발생하므로 위와 같은 조건이지만 매수는 if (Account1.Balance.count == 0으로 처리하셔야 할 것 같습니다. 별도로 수량이 0보다 큰경우로 지정하신 부분이 아니면 수량이 없을때 진입하게 하셔야 할 것 같습니다. 2 배열변수를 추가로 만드셔서 미완성진입신호가 발생하면 차트객체가 저장된 배열과 동일한 배열방번호에 신호의 시간을 저장하고 완성신호 발생시 시간을 비교해서 다를 때만 완성신호시 주문이 나가게 처리하시면 됩니다. 3 var ItemList; var Count; var ReqCount; var d; var H; var CT = [],II = []; function Main_OnStart() { Main.MessageLog("스팟시작"); d = new Date(); h = d.getDate(); //지정한 관심그룹의 종목수(관심그룹지정 필요) Count = Main.GetItemCountOfInterest("관심종목1"); Main.MessageList("지정관심그룹 종목수 : ", Count); ItemList = []; //관심그룹 종목코드를 ItemList로 옮김 for(var i = 0 ; i < Count ; i++) { //관심그룹지정 필요 ItemList.push(Main.GetItemCodeInInterest("관심종목1", i)); } //관심종목이 1개 이상이면 if (Count > 0) { //첫종목부터 요청시작 //요청갯수 카운트 변수는 초기값 0 ReqCount = 0; var TradeSet = new SystemTradeInfo(TRADE_FIXCAPITAL, 1, // 거래수량 100000000, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부(다른진입신호만 허용) 100000, // 최대진입수량 20); // 최대진입횟수 var ChartSet = new ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false); /////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo) var SystemSet = new SystemInfo("YL_시스템(일봉)", YL_TYPE_NORMAL, null, TradeSet); //차트객체 요청 Main.ReqChartEx(ChartSet,SystemSet); Main.MessageList("확장차트생성요청:",ItemList[ReqCount]); //1벝 타이머 10초 세팅 Main.SetTimer(1, 10000); } } //차트객체 수신 function Main_OnRcvChartEx(ChartEx) { //방금 요청한 종목이 맞는지 확인 if (ChartEx.GetCode(1) == ItemList[ReqCount]) { Main.MessageList("확장차트생성완료:",ChartEx.GetCode(1)); //차트객체를 순차적으로 CT배열변수에 저장 CT.push(ChartEx); II.push(0); //요청갯수 1증가 ReqCount = ReqCount+1; //요청갯수가 Count 미만이면 if (ReqCount < Count) { //다음종목 요청 var TradeSet = new SystemTradeInfo(TRADE_FIXCAPITAL, 1, // 거래수량 100000000, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부(다른진입신호만 허용) 100000, // 최대진입수량 20); // 최대진입횟수 var ChartSet = new ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false); /////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo) var SystemSet = new SystemInfo("YL_시스템(일봉)", YL_TYPE_NORMAL, null, TradeSet); Main.ReqChartEx(ChartSet,SystemSet); Main.MessageList("확장차트생성요청:",ItemList[ReqCount]); } else//아니면 { //종목객체생성 종료 Main.MessageList("종목객체생성완료"); } } } //타이머 동작 function Main_OnTimer(nEventID) { //1번 타이머 동작 if (nEventID == 1) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //15시 25분이 되면 if (HHMMSS >= 152500) { //타이머종료 Main.KillTimer(1); //#######################################추가##################################### //생성된 전체차트에서 미완성 매수신호 있는 것을 확인하고 //미완성매수신호가 있고 잔고에 보유수량이 없으면 매수 for (var i = 0; i < CT.length; i++) { ///마지막봉의 미완성 신호 정보를 가져와 저장 var Incom2 = CT[i].GetIncompleteSignal(); //미완성 정보가 있고 매수 신호이면 if (Incom2[0] != null && Incom2[0].signalKind == 1) { Account1.SetBalance(Incom2[0].code, 0) if (Account1.Balance.count == 0) { Account1.OrderBuy(Incom2[0].code, Incom2[0].count, Incom2[0].price, 0); II[i] = Incom2[0].time; } } } //############################################################################## //생성된 전체차트에서 미완성 매도신호 있는 것을 확인하고 //미완성매도신호가 있고 잔고에 보유수량이 있으면 전량 매도 for (var i = 0; i < CT.length; i++) { ///마지막봉의 미완성 신호 정보를 가져와 저장 var Incom = CT[i].GetIncompleteSignal(); //미완성 정보가 있고 매수청산 신호이면 if (Incom[0] != null && Incom[0].signalKind == 2) { Account1.SetBalance(Incom[0].code, 0) if (Account1.Balance.count > 0) { Account1.OrderSell(Incom[0].code, Account1.Balance.count, Incom[0].price, 0); } } } } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //###############################추가 요청####################################### //#### 미완성 신호로 매수된 경우, 익일 시가에 완성신호로 금번 차수 매수 금지##### //########## 다음 차수 매수는 익일에 나오지 않습니다.########################### //매수신호 시 매수 if (Signal.signalKind == 1) ////// && Account1.Balance.count == 0) { var order = true; for (var i = 0; i < CT.length; i++) { if (ChartEx.GetCode(1) == CT.GetCode(1) && Signal.time == II[i]) { ordr = false; } } if (order == true) { Account1.OrderBuy(Main.GetOrderCode(Signal.code), Signal.count, Signal.price, 0); Main.MessageList("매수주문9"); } } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.GetTotalAmount(nCategory, nTradeKind) Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //잔고수량만큼만 매도 if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code), Signal.count, Signal.price, 0); Main.MessageList("매도주문"); } } } 즐거운 하루되세요 > 깜피 님이 쓴 글입니다. > 제목 : 2414번 추가 질문입니다. > 안녕하세요. 전에 작성해주신 수식에 대해서 추가 문의 드립니다. 제가 구상했던 시스템 운영 방식에 거의 다다른 것 같습니다. 큰 도움 주셔서 너무 감사합니다. 즐거운 하루 보내세요. ------------------------------------------------------------------------------------ 1. 미완성 신호로 매도하는 부분을 작성해주셨는데, 미완성 신호로 매수하는 부분 추가 (제가 내용을 추가 했는데 확인 부탁드립니다.) 2. 미완성 신호로 매수된 경우, 원래 익일 시가에 완성신호로 매수되는 금번차수 매수 금지 (미완성 1차 매수 시 완성 1차 매수 금지, 미완성 2차 매수시 완성 2차 매수 금지) var&#160;ItemList; var&#160;Count; var&#160;ReqCount; var&#160;d; var&#160;H; var&#160;CT&#160;=&#160;[]; function&#160;Main_OnStart()&#160;&#160; { &#160;&#160;&#160;&#160;&#160;&#160;Main.MessageLog("스팟시작"); &#160;&#160;&#160;&#160;&#160;&#160;d&#160;=&#160;new&#160;Date(); &#160;&#160;&#160;&#160;&#160;&#160;h&#160;=&#160;d.getDate(); &#160;&#160;&#160;&#160;&#160;&#160;//지정한&#160;관심그룹의&#160;종목수(관심그룹지정&#160;필요) &#160;&#160;&#160;&#160;&#160;&#160;Count&#160;=&#160;Main.GetItemCountOfInterest("관심종목1"); &#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("지정관심그룹&#160;종목수&#160;:&#160;",&#160;Count); &#160;&#160;&#160;&#160;&#160;&#160;ItemList&#160;=&#160;[];&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;//관심그룹&#160;종목코드를&#160;ItemList로&#160;옮김 &#160;&#160;&#160;&#160;&#160;&#160;for(var&#160;i&#160;=&#160;0&#160;;&#160;i&#160;<&#160;Count&#160;;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//관심그룹지정&#160;필요 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ItemList.push(Main.GetItemCodeInInterest("관심종목1",&#160;i)); &#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;//관심종목이&#160;1개&#160;이상이면&#160; &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Count&#160;>&#160;0) &#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//첫종목부터&#160;요청시작 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//요청갯수&#160;카운트&#160;변수는&#160;초기값&#160;0 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReqCount&#160;=&#160;0; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;TradeSet&#160;=&#160;&#160;new&#160;SystemTradeInfo(TRADE_FIXCAPITAL, &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;거래수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;자산 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;단위수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_PERCENT,&#160;&#160;//&#160;진입/청산&#160;수수료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_POINT,&#160;&#160;&#160;&#160;//&#160;진입/청산&#160;슬리피지 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PYRAMIDING_ENTRY,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;피라미딩&#160;설정여부(다른진입신호만&#160;허용) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;20);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입횟수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;ChartSet&#160;=&#160;new&#160;ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;SystemSet&#160;&#160;=&#160;new&#160;SystemInfo("YL_시스템(일봉)",&#160;YL_TYPE_NORMAL,&#160;null,&#160;TradeSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//차트객체&#160;요청 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.ReqChartEx(ChartSet,SystemSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("확장차트생성요청:",ItemList[ReqCount]); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//1벝&#160;타이머&#160;10초&#160;세팅 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetTimer(1,&#160;10000); &#160;&#160;&#160;&#160;&#160;&#160;} }&#160;&#160; //차트객체&#160;수신 function&#160;Main_OnRcvChartEx(ChartEx) { &#160;&#160;&#160;&#160;&#160;&#160;//방금&#160;요청한&#160;종목이&#160;맞는지&#160;확인 &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(ChartEx.GetCode(1)&#160;==&#160;ItemList[ReqCount])&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("확장차트생성완료:",ChartEx.GetCode(1)); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//차트객체를&#160;순차적으로&#160;CT배열변수에&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CT.push(ChartEx); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//요청갯수&#160;1증가 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReqCount&#160;=&#160;ReqCount+1; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//요청갯수가&#160;Count&#160;미만이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(ReqCount&#160;<&#160;Count) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//다음종목&#160;요청 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;TradeSet&#160;=&#160;&#160;new&#160;SystemTradeInfo(TRADE_FIXCAPITAL, &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;거래수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;자산 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;단위수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_PERCENT,&#160;&#160;//&#160;진입/청산&#160;수수료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;0,&#160;0,&#160;CALCMETHOD_POINT,&#160;&#160;&#160;&#160;//&#160;진입/청산&#160;슬리피지 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PYRAMIDING_ENTRY,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;피라미딩&#160;설정여부(다른진입신호만&#160;허용) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;100000,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입수량 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;20);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;최대진입횟수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;ChartSet&#160;=&#160;new&#160;ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;SystemSet&#160;&#160;=&#160;new&#160;SystemInfo("YL_시스템(일봉)",&#160;YL_TYPE_NORMAL,&#160;null,&#160;TradeSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.ReqChartEx(ChartSet,SystemSet); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("확장차트생성요청:",ItemList[ReqCount]);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else//아니면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//종목객체생성&#160;종료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("종목객체생성완료");&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} } //타이머&#160;동작 function&#160;Main_OnTimer(nEventID) { &#160;&#160;&#160;&#160;&#160;&#160;//1번&#160;타이머&#160;동작 &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(nEventID&#160;==&#160;1) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;d&#160;=&#160;new&#160;Date(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HHMMSS&#160;=&#160;d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//15시&#160;25분이&#160;되면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(HHMMSS&#160;>=&#160;152500) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//타이머종료 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.KillTimer(1); #######################################추가##################################### &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//생성된&#160;전체차트에서&#160;미완성&#160;매수신호&#160;있는&#160;것을&#160;확인하고&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성매수신호가&#160;있고&#160;잔고에&#160;보유수량이 없으면 매수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&#160;(var&#160;i =&#160;0;&#160;i <&#160;CT.length;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;///마지막봉의&#160;미완성&#160;신호&#160;정보를&#160;가져와&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;Incom2 =&#160;CT[i].GetIncompleteSignal(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성&#160;정보가&#160;있고&#160;매수 신호이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Incom2[0]&#160;!=&#160;null&#160;&&&#160;Incom2[0].signalKind&#160;==&#160;1)&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetBalance(Incom2[0].code,&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Balance.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderBuy(Incom2[0].code, Incom2[0].count,&#160;Incom2[0].price,&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} ############################################################################## &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//생성된&#160;전체차트에서&#160;미완성&#160;매도신호&#160;있는&#160;것을&#160;확인하고&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성매도신호가&#160;있고&#160;잔고에&#160;보유수량이&#160;있으면&#160;전량&#160;매도 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&#160;(var&#160;i&#160;=&#160;0;&#160;i&#160;<&#160;CT.length;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;///마지막봉의&#160;미완성&#160;신호&#160;정보를&#160;가져와&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;Incom&#160;=&#160;CT[i].GetIncompleteSignal(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미완성&#160;정보가&#160;있고&#160;매수청산&#160;신호이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Incom[0]&#160;!=&#160;null&#160;&&&#160;Incom[0].signalKind&#160;==&#160;2)&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetBalance(Incom[0].code,&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Balance.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderSell(Incom[0].code,&#160;Account1.Balance.count,&#160;Incom[0].price,&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} } //신호발생 function&#160;Main_OnRiseSignal(ChartEx,&#160;Signal) { &#160;&#160;&#160;&#160;&#160;&#160;//신호발생&#160;종목에&#160;대해&#160;잔고셋팅 &#160;&#160;&#160;&#160;&#160;&#160;Account1.SetBalance(Main.GetOrderCode(Signal.code),0); &#160;&#160;&#160;&#160;&#160; &#160; ###############################추가 요청#######################################&#160;&#160; #### 미완성 신호로 매수된 경우, 익일 시가에 완성신호로 금번 차수 매수 금지##### ########## 다음 차수 매수는 익일에 나오지 않습니다.########################### &#160;&#160;&#160;&#160;&#160;&#160;//매수신호 시&#160;매수&#160; &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Signal.signalKind&#160;==&#160;1)&#160;//////&#160;&&&#160;Account1.Balance.count&#160;==&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderBuy(Main.GetOrderCode(Signal.code),&#160;Signal.count,&#160;Signal.price,&#160;0);&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("매수주문9"); &#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Signal.signalKind&#160;==&#160;2) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//전체미체결주문&#160;갯수 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var&#160;num&#160;=&#160;Account1.GetTheNumberOfUnfills(); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//전체&#160;미체결수&#160;만큼&#160;루프를&#160;돌면서 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for&#160;(var&#160;i&#160;=&#160;0;&#160;i&#160;<&#160;num;&#160;i++) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미체결을&#160;하나씩&#160;셋팅하고&#160;Account1.GetTotalAmount(nCategory,&#160;nTradeKind) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetUnfill(i); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미체결종목이&#160;신호종목과&#160;같고&#160;미체결수량이&#160;있으면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Unfill.code&#160;==&#160;Main.GetOrderCode(Signal.code)&#160;&&&#160;Account1.Unfill.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderCancel(Account1.Unfill.orderNum); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//잔고수량만큼만&#160;매도 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Balance.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderSell(Main.GetOrderCode(Signal.code),&#160;Signal.count,&#160;Signal.price,&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("매도주문");&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} }