커뮤니티

예스스팟 Q&A

답변완료

문의 드립니다.

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

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

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

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

예스차트로 보는 차트들 중 하나가 오늘 아침부터 시간이 0시부터 시작하네요. 장 시작이 오전 9시인데 해당 차트는 0시부터 시작해서 6시30분에 전날 장이 마친것으로 나옵니다. 제가 설정을 건드린 듯 한데 어느 부분을 수정하면 될까요?
프로필 이미지
sunny7
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; } } }
프로필 이미지
좌오비우오비
997
글번호 225809
답변완료

SetUserValue 바로 저장 기능

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

강조 수식의 엑셀 수신

하이켄 아시 같은 강조수식을 엑셀로 뽑아낼 수 있을까요? 예를 들면 마젠타는 +1, 사이언은 -1 이런식으로요.. 답변 감사드립니다
프로필 이미지
ewhaelin
879
글번호 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;} }
프로필 이미지
깜피
1013
글번호 225801

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

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

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

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

문의

exit 수식 추가 건입니다. 차트1 exitlong("a"); 차트2 exitlong("b"); 1) a 또는 b 를 만족하면 청산 2) a and b 를 만족해야만 청산 3) 차트참조 없이 setstoploss(2, percentstop); setstoptrailing(5,0,percentstop,1); 위 3가지 경우로 나누어 청산수식 추가 부탁드립니다. ********************************************************************* var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { CallOrderCode = Option1.GetATMCallRecent(1); //*** 콜옵션 외가격+1 을 찾는다 PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //콜옵션종목 매수 if (CallExit == false) { //지정가 Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0); //시장가 //Account1.OrderBuy(CallOrderCode, 1, 0, 1); } } }
프로필 이미지
좌오비우오비
1044
글번호 225798