커뮤니티

예스스팟 Q&A

답변완료

GetPrevVolume(1) 의 거래량 문의

안녕하세요 GetPrevVolume(1)를 이용해서 DATA를 얻으려고 하는데 삼성전자 005930을 MarektData1 객체명에 일간데이터 사용, 조회건수 100 으로 설정 하고 MarketData1.GetPrevVolume(1)로 메세지로그를 남겨보니 41801757050798080 이라는 숫자가 리턴됩니다. 이 숫자가 맞는 걸까요? 이렇게 나올 수가 없는데 제가 뭘 잘못햇는지 알려주세요~
프로필 이미지
phantomi
2023-07-22
854
글번호 225813
답변완료

문의 드립니다.

안녕하세요. 조건검색도 수식으로 표현해서 할 수 있나요? 예를 들어서 아래 수식이 정확한건 아니지만 이런 형식으로 할 수 있나요? var : st(090000),et(100000); cond1 = time > st and time < et and c > o ; if cond1[3] = true and c > o then 종목검색완료
프로필 이미지
매플
2023-07-17
956
글번호 225812
답변완료

확장차트에 타종목/타주기 참조데이터 표시

담당자님 안녕하세요. 항상 도움 주셔서 감사하게도 조금씩 발전하고 있습니다. 다름이아니라, 현재 예스랭귀지에서 신호 발생 시 예스스팟으로 주문을 하는 시스템을 개발중인데, 예스랭귀지에서 참조데이터로 data2를 활용하는 로직을 사용하였습니다. 예스스팟의 확장차트에 data2를 함께 띄워서 data2를 활용하는 예스랭귀지 코드를 활용하는 방법이 있을까요? 메뉴얼에는 참조데이터로 수급만 가져올수 있는것으로 보이는데, 제가 필요한건 지수이며, 예스랭귀지 코드로 거래 종목과 data2로 불러온 지수를 연동하여 매매가되는 로직으로 작성한 수식을 예스스팟에서 적용하고 싶습니다. 혹시 가능하지 않다면 다른 방법으로라도 유사하게 구현하는 방법을 알려주시면 큰 도움이될것 같습니다. 감사합니다.
프로필 이미지
기사단장
2023-07-12
986
글번호 225811

관리자에 의해 프로그램 사용법 QnA로 이동되었습니다

프로필 이미지
sunny7
2023-06-30
5
글번호 225810
0
답변완료

문의

차트 c sell주문 미니옵션 풋옵션 매수 ok 차트 c "c"이름 청산으로 청산 주문이 나가긴 했는데 첨부 메세지 뜨면서 오류가 발생했습니다. 수식 오류 수정 부탁드립니다. *************************************************************************** var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; var X1,X2; var BID,BNUM,PLCheck; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매도신호이면 if (Signal.signalKind == 3) { PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //풋옵션종목 매수 if (PutExit == false) { //지정가 Account1.OrderBuy(PutOrderCode, 1, Option1.GetAskByCode(PutOrderCode, 2), 0); //시장가 //Account1.OrderBuy(PutOrderCode, 1, 0, 1); PLCheck = false; X1 = false; X2 = false; Main.SetTimer(1, 1000);//1초 타이머 } } if (Signal.signalKind == 4 && Signal.name == "c") { X1 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 2), 0); PLCheck = false; } } } function Chart2_OnRiseSignal(Signal) { s2 = Signal.signalKind; if (Signal.signalKind == 4 && Signal.name == "d") { X2 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 2), 0); PLCheck = false; } } }
프로필 이미지
좌오비우오비
2023-06-29
1018
글번호 225809
답변완료

SetUserValue 바로 저장 기능

사용자가 필요한 경우 변수를 main.SetUserValue()를 통해 저장하고 이후 예스스팟이 다시 시작할 때 main.GetUserValue()를 통해 불러와 잘 사용하고 있습니다. 그런데, 가끔 예기치 못한 오류(?)로 예스트레이더가 종료되는 경우가 있습니다. 이 후 프로그램을 다시 시작하면 위 함수로 저장된 값을 제대로 불러오지 못할 때가 있습니다. 아마도 저장이 되지 않는 것 같습니다. 다른 QnA에 보니까 바로 저장을 하지 않고 종료되는 시점에 저장을 하므로 바로 저장을 하고자 하면 3번째 인자로 1을 사용하여 main.SetUserValue()를 사용하라고 해서, 그렇게 3번째 인자로 1을 주고 main.SetUserValue()를 호출하면 응답이 없이 예스트레이더가 멈추는 현상(계속 모래시계)이 발생합니다. 뭐가 문제일까요?
프로필 이미지
서머
2023-06-27
1012
글번호 225803
답변완료

강조 수식의 엑셀 수신

하이켄 아시 같은 강조수식을 엑셀로 뽑아낼 수 있을까요? 예를 들면 마젠타는 +1, 사이언은 -1 이런식으로요.. 답변 감사드립니다
프로필 이미지
ewhaelin
2023-06-09
902
글번호 225802
답변완료

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;} }
프로필 이미지
깜피
2023-05-18
1040
글번호 225801

주식승부 님에 의해서 삭제되었습니다.

프로필 이미지
주식승부
2023-05-15
0
글번호 225800
답변완료

예스스팟을 이용한 핸드폰버전 개발

예스스팟을 이용한 전략을 핸드폰용으로도 개발이 가능한지 문의 드립니다. 만약 현재는 안된다면 차후에라도 가능하게 될런지도 궁금합니다.
프로필 이미지
코란도맨
2023-05-12
1080
글번호 225799