커뮤니티

예스스팟 Q&A

답변완료

설정시간 신호유지

아래의 수식에서 미완성신호가 발생 후 계속하여 미완성신호가 유지되고 있는 동안만 타이머가 작동하도록 하고자 하나, 타이머 설정시간보다 아주짧게 미완성신호가 발생 한다음 소멸하여도 타이머는 계속 작동하여 주문이 접수체결 됩니다. 이를 타이머가 설정 된 시간동안 미완성신호가 계속유지되고 있을 때에만 주문이 접수체결 되도록 아래의 수식을 변경하여 주시면 감사 하겠습니다. 즉, 타임어 설정시간이 5초인경우 1. 5초 미만 미완성신호 발생 후 소멸시 -------> 주문접수/체결 발생하지 않음. 2. 5초간 미완성신호가 계속유지되고 있을때 만 --------> 주문접수 / 체결 됨 var T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(KP.code); } function C1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("미완성신호/"+IncompleteSignal.signalKind); A1.SetBalance(Main.GetOrderCode(IncompleteSignal.code)) if (T <= 0 && (A1.Balance.position == 1 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 1) { T = 1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(1,5000); } if (T >= 0 && A1.Balance.position == 1 && IncompleteSignal.signalKind == 3) { T = 0; Main.KillTimer(1); Main.SetTimer(2,5000); } if (T >= 0 && (A1.Balance.position == 2 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 3) { T = -1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(2,5000); } if (T <= 0 && A1.Balance.position == 2 && IncompleteSignal.signalKind == 1) { T = 0; Main.KillTimer(2); Main.SetTimer(1,5000); } } function Main_OnTimer(nEventID) { //마지막봉 미완성 신호정보 셋팅 var Incom = C1.GetIncompleteSignal(); if (nEventID == 1 && T == 1) { Main.KillTimer(1); A1.OrderBuy(KP.code, VV, KP.Ask(2),2); Main.MessageLog("매수진입"); } if (nEventID == 1 && T == 0) { Main.KillTimer(1); Main.MessageLog("중복매수진입금지"); } if (nEventID == 2 && T == -1) { Main.KillTimer(2); A1.OrderSell(KP.code, VV, KP.Bid(2),2); Main.MessageLog("매도진입"); } if (nEventID == 2 && T == 0) { Main.KillTimer(2); Main.MessageLog("중복매도진입금지"); } }
프로필 이미지
너무조아
2019-01-02
3140
글번호 224700
답변완료

검색에 필요한 데이터가 부족합니다 (10313) 은 언제나오나요?

검색에 필요한 데이터가 부족합니다 (10313) 은 언제나오나요? 장전 혹은 장시작한지 얼마 안되서 그런가요? 혹은 오늘 10시부터 시작해서 그런가요? 원래 파워종목검색에서 나오던 종목들을 검색해보니 검색에 필요한 데이터가 부족합니다 (10313) 라고 나옵니다.
프로필 이미지
단테
2019-01-02
3327
글번호 224699
답변완료

질문드립니다.

아래는 친절히 답해주셔서 잘 사용하고 있습니다. 감사합니다. 1. 종목검색을 9시에 시작하고 원하는시간을 설정하여 종목검색을 종료할 수 있었으면 좋겠습니다. 2. 관심종목에 넣은 종목을 매매하고싶습니다. 3. 아래 스톱셋 기능을 제거하고 싶습니다. 4. 2%수익시 종목의 80%를 시장가로 청산하는 청산식이 추가되었으면 좋겠습니다. 감사합니다.아래는 로직입니다. var reqItemList = []; //검색되서 차트요청한 종목에 대해 종목코드를 저장할 배열변수 var ItemList = []; //검색된 종목 중 reqItemList에 없는 종목에 대해 종목코드를 저장한 배열변수장 var Count; //요청할 종목갯수 var ReqCount; //종목검색 후 차트객체 요청한 종목갯수 function Main_OnStart() { Main.MessageList("스팟시작"); Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList("종목검색완료 : 검색된 종목수 : ",nCount); //ItemList 변수 초기화 ItemList = []; //검색종목수가 1개 이상일떄만 수행 if (nCount > 0) { //reqItemList에 저장된 종목코드가 한개도 없을때 if (reqItemList.length == 0) { //ItemList 배열변수에 aItemList를 차례대로 모두 옮김 Count = 0; for (var i = 0; i < nCount; i++) { ItemList.push(aItemList[i]); Count = Count+1; } } else//reqItemList에 저장된 종목코드가 한개이상일때 { //검색된 종목 중 reqItemList에 없는 종목만 ItemList에 담음 Count = 0; for (var i = 0; i < nCount; i++) { var add = true; for (var z = 0; z < reqItemList.length; z++) { if (aItemList[i] == reqItemList[z]) { add = false; Main.MessageList("이미 차트생성된 종목 : ",aItemList[i]); } } if (add == true) { ItemList.push(aItemList[i]); Count = Count+1; } } } //생성할 종목수가 1개 이상일떄 if (Count > 0) { Main.MessageList("차트객체 생성시작 : 생성할 종목수 : ",Count,ItemList); Main.SetTimer(1, 1000); ReqCount = 0; } } } function Main_OnTimer(nEventID) { if (nEventID == 2) { Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } if (nEventID == 1) { var StopSet = new SystemStopInfo( new StopLoss(5, CALCMETHOD_PERCENT, 0), new StopTrailing(5, 7, CALCMETHOD_PERCENT, 0), new StopProfitTarget(10, CALCMETHOD_PERCENT, 0), //new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93), new StopEndOfDay(230000)); var ChartSet = new ReqChartItem(ItemList[ReqCount],2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("##단타", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); //생성요청한 종목에 대해 reqItemList에 종목코드 추가 reqItemList.push(ItemList[ReqCount]); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageList("차트객체 생성완료 : 생성된 종목수 : ",ReqCount); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Main.MessageLog("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 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),Account1.Balance.count,ChartEx.GetClose(1,0),1); Main.MessageList("매도주문"); } //잔고수량만큼만 시장가매도 } }
프로필 이미지
stockric
2019-01-18
3124
글번호 224698
답변완료

새해복 많이 받으세요. 수식부탁드립니다.

안녕하세요. 미리 감사의 말씀 드립니다. 1. A 시스템의 직전거래가 손실일 경우에만, 진입하고 싶습니다.(시스템과 같은방향, 같은종목 진입입니다.) 2. 처음 진입은 1계약 진입하며, 손실거래시 다음 진입은 2계약 진입합니다. ( 계약수를 1계약씩 계속 늘리고 싶습니다.) 3. 수익 거래시 계약수는 1계약으로 초기화 합니다. 4. 본전거래는 손실거래로 취급합니다.
프로필 이미지
율담
2018-12-31
3097
글번호 224697
답변완료

간헐적으로 가원장이 제대로 로드되지 않습니다.

간헐적으로 가원장이 불러지지 않는데요. 어떻게 해결하면 좋은지 궁금해서요. 프로그램을 시작하자마자 A1.Refresh(); bal = A1.GetBalanceETCinfo(20); 을 실행하는데요. bal 이 -1일때가 있습니다. 간헐적으로 안되서 -1이 생길때마다 타이머를 실행시켜서 다시 저 루틴을 실행하게 했는데요. 한번 -1이 나오면, 계속 -1이 나오더라고요. 다시 껐다 키는 방법밖에 없는건가요? 매크로로 돌리다보니 다시 껐다키면 여러모로 많이 불편해서요. 예스스팟내에서 해결할 수 있는 방법이 있는지 궁금합니다.
프로필 이미지
단테
2018-12-29
3040
글번호 224696
답변완료

질문드립니다.

항상 구체적이고 친절한 답변 감사드립니다. 다른 시스템의 청산과 겹치지않게 Setuservalue 함수로 그날 그날의 포지션을 저장한다음 다음날 시스템(포지션 트레이딩, 데이트레이딩 아님)에서 불러들여서 이용하고 있습니다.(예스스팟에서 안내한 가이드중 하나) 그런데 시스템이 여러개가 되면 같은 종목 거래시 Uservalue에는 저장이 되는데 다른 시스템에서는 청산을 해버리거나 반대포지션을 잡는 경우가 생기면 어떻게 대처해야할까요? 혹시 가이드식이 있을까요?
프로필 이미지
절제9단
2018-12-28
2983
글번호 224694
답변완료

왜 1820 답을 안 달아 주시나요?

chart1 이름이 울트라수퍼챠트 account1 이름이 9999-9999-99 콜옵션 가격은 0원에서 7만원사이 가격중 가장 큰 콜옵션 선택 울트라수퍼챠트에서 선물로 매수신호가 나올때 콜옵션 매수, 선물로 매도신호가 나올때 콜옵션 매도 나오게 예스스탁수식 작성해주세요 (물론 데이 트레이딩용이므로 첫신호가 선물의 매수신호가 먼저 나온 경우는 다음신호가 매도 일경우 매수청산후 매도진입하도록, 선물의 매도신호가 첫신호로 먼저 나온경우는 매도 청산후 매수 진입하도록, 신호 나오게 해주시고요 즉 울트라수퍼차트에서 나오는 선물의 신호가 그대로 옵션 챠트에서도 작동되도록 수식 부탁드립니다. 그리고 제가 스팟은 처음이라 자동매매를 위해 제 계좌를 연계하는 방법도 모릅니다. 그것도 수식에 넣어 주십시요 항상 감사드립니다 문의사항 010 3231 4592 유원장드림
프로필 이미지
sefswef
2018-12-22
2971
글번호 224683
답변완료

질문드립니다.

var ItemList; var Count; var ReqCount; function Main_OnStart() { Main.MessageLog("스팟시작"); Main.MessageLog("종목검색시작"); Main.ReqPowerSearch("급등주검색"); } function Main_OnRcvItemList(aItemList, nCount) { ItemList = aItemList; Count = nCount; Main.SetTimer(1, 1000); ReqCount = 0; } function Main_OnTimer(nEventID) { if (nEventID == 1) { var StopSet = new SystemStopInfo(new StopLoss(5, CALCMETHOD_PERCENT, 0), new StopTrailing(5, 7, CALCMETHOD_PERCENT, 0), new StopProfitTarget(10, CALCMETHOD_PERCENT, 0), //new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93), new StopEndOfDay(230000)); var ChartSet = new ReqChartItem(ItemList[ReqCount],2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("##단타", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageLog("종목검색완료"); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.current),0,1); Main.MessageLog("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //잔고수량만큼만 매도 1. 위와같이 구성할 경우 종목검색도 끝마치고, 확장차트까지 불러와줍니다. 근데 그 이후 수량을 선택하지 않았다며 주문이 나가질 않네요. 저는 수량보다 주문금액으로 처리하고싶습니다만... 어디가 문제인지요? 2. 위 수식에 종목검색을 3분주기로 계속 하며 검색을 할 수 있는 로직이 추가되었으면 좋겠습니다.
프로필 이미지
stockric
2018-12-26
2828
글번호 224681

kosto 님에 의해서 삭제되었습니다.

프로필 이미지
kosto
2018-12-10
0
글번호 224677
답변완료

수식 공부중인데 어려워서 도움 부탁드립니다^^

조건검색식 연구해봐서 실행중인데 시스템 자동매매에 적용해보고 싶은데 프로그램 만드는 부분이 어려워서 고수분들 계심 도움 부탁드립니다^^ 1)이평이격도: 1분봉기준 0봉전 6일 이평에 0.3%이내 근접 1회이상 2)당일 거래량: 6만주이상 거래량 발생 3)전일 대비 주가등락률 순위 상위 100위권 이내 종목 검색 4)10분봉기준 0봉전 이평선 10이평을 1봉이내 박스안에서 종가가 1회이상 상한선 상향돌파 5)시가총액 300억 이상~2000억이내 6)주가범위 : 1000원이상 100000만원 이하 7)기간내 등락률 10분봉기준으로 1봉전 기준 200봉이내에서 저가대비 고가 5%이상 조건 8)주가등락률: 일봉기준 0봉전기준 시가대비 0봉전 종가등락률 -5%이상 9)검색 포착 시간 10시~10시 10분 사이에 위에 조건식으로 차례로 검색되는 종목들을 매수 가능 금액에 비중 10프로 시장가 매수 --->> 10시 9분에 100% 시장가 매도 10)매수 시점 기준으로 1>자동익절 5% 2>자동손절 -2% 이렇게 설정을 하려고 하는데 가능할까요?^^ 도움 부탁드립니다.
프로필 이미지
황금타점
2018-12-03
3087
글번호 224676