커뮤니티

예스스팟 Q&A

지스카드 님에 의해서 삭제되었습니다.

프로필 이미지
지스카드
2018-08-15
1
글번호 224557

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

프로필 이미지
2ndbus
2018-08-08
12
글번호 224555

바람의나라 님에 의해서 삭제되었습니다.

프로필 이미지
바람의나라
2018-08-01
22
글번호 224554
답변완료

수식에 에러가 발생했습니다. 수정부탁합니다.

안녕하세요. 보내주신 수정한 수식을 예스트레이드로 돌려보니 아래와 같은 에러가 발생되네요. 수정부탁 드립니다. <에러발생내역> 1. 종목1 매도시 외부입력변수에 지정된 분할매도횟수(초기값 3회 분할매도) 만큼 매도가 되어야하나, 매도횟수는 3회 매도 주문이 정상적으로 나가고 있으나, 주문수량이 0 로 나가면서 매도체결이 되지 않고 매도처리 되어야 할 주식수량이 잔고로 남아 있습니다. 2. 종목2 매도시 외부입력변수에 지정된 분할매도횟수(초기값3회) 만큼 매도가 되어야하나, 매도횟수는 3회 매도 주문이 정상적으로 나가고 있으나 1회 매도주문수량이 많이 주문이 나갑니다. 3. 아래는 보내주신 스팟코딩 자료입니다. 수정부탁합니다 var HHMMSS,HHMMSS1; var count1, count2, count3, count4, count5; var M1; function Main_OnStart() { //1번 타이머 5초간격, 지정한 간격으로 시간체크하기 위한 용도 Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS1 = HHMMSS; HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //종목1(MarketData1) // 첫매수 if (nEventID == 1 && HHMMSS >= 매수시간1 && HHMMSS1 < 매수시간1) { //지정한 금액만큼 매도3호가로 매수주문 var BuyPrice1 = MarketData1.Ask(3); var Bvol1 = Math.floor(매수금액1/BuyPrice1); Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Bvol1,BuyPrice1,0); if (분할매수횟수1 >= 2) { //2번 타이머(종목1 추가매수 간격) Main.SetTimer(2, 분할매수시간간격1*1000); count2 = 1; } } //2번타이머 동작 //종목1(MarketData1) 추가매수(첫매수 후 N초 단위로) if (nEventID == 2) { //지정한 분할횟수보다 작으면 if (count2 < 분할매수횟수1) { //타이머 동작횟수 카운트 count2 = count2+1; //추가 매수 실행 var BuyPrice1 = MarketData1.Ask(3); var Bvol1 = Math.floor(매수금액1/BuyPrice1); Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Bvol1,BuyPrice1,0); } //지정한 분할횟수에 도달하면 if (count2 == 분할매수횟수1) { //2번 타이머 종료 Main.KillTimer(2); } } //종목1(MarketData1) 첫매도 if (nEventID == 1 && HHMMSS >= 매도시간1 && HHMMSS1 < 매도시간1) { //종목1에 대한 매수 미체결 모두 취소 var num1 = Account1.GetTheNumberOfUnfills() for(var i = 1 ; i < num1 ; i++) { Account1.SetUnfill(i); if (Account1.Unfill.orderKind == 2 && Account1.Unfill.count > 0 && Account1.Unfill.code == MarketData1.code) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //종목1 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); //잔고수량 Xvol1 = Account1.Balance.count; if (분할매도횟수1 >= 2) { var V1 = Math.floor(Xvol1/분할매도횟수1); Xvol11 = Xvol1 - V1*(분할매도횟수1-1); Xvol12 = V1; } else { Xvol11 = Xvol1; } var SellPrice1 = MarketData1.Bid(3); Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Xvol11,SellPrice1,0); if (분할매도횟수1 >= 2) { //3번 타이머,10초 타이머(분할매도 간격) Main.SetTimer(3, 10000); count3 = 1; } } //종목1(MarketData1) 추가매수(첫매수 후 N초 단위로) if (nEventID == 3) { if (count3 < 분할매도횟수1) { count3 = count3+1; var SellPrice1 = MarketData1.Bid(3); Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Xvol12,SellPrice1,0); } if (count3 == 분할매도횟수1) { Main.KillTimer(3); } } //종목2(MarketData2) // 첫매수 if (nEventID == 1 && HHMMSS >= 매수시간2 && HHMMSS1 < 매수시간2) { //지정한 금액만큼 매도3호가로 매수주문 var BuyPrice2 = MarketData2.Ask(3); var Bvol2 = Math.floor(매수금액2/BuyPrice2); Account1.OrderBuy(Main.GetOrderCode(MarketData2.code),Bvol2,BuyPrice2,0); if (분할매수횟수2 >= 2) { //2번 타이머(종목1 추가매수 간격) Main.SetTimer(4, 분할매수시간간격2*1000); count4 = 1; } } //2번타이머 동작 //종목2(MarketData2) 추가매수(첫매수 후 N초 단위로) if (nEventID == 4) { //카운트 값이 지정한 분할횟수 미만이면 if (count4 < 분할매수횟수2) { //타이머 동작횟수 카운트 count4 = count4+1; //추가 매수 실행 var BuyPrice2 = MarketData2.Ask(3); var Bvol2 = Math.floor(매수금액2/BuyPrice2); Account1.OrderBuy(Main.GetOrderCode(MarketData2.code),Bvol2,BuyPrice2,0); } //지정한 분할횟수에 도달하면 if (count4 == 분할매수횟수1) { //4번 타이머 종료 Main.KillTimer(4); } } //종목2(MarketData2) 첫매도 if (nEventID == 1 && HHMMSS >= 매도시간2 && HHMMSS1 < 매도시간2) { //종목2에 대한 매수 미체결 모두 취소 var num1 = Account1.GetTheNumberOfUnfills() for(var i = 1 ; i < num1 ; i++) { Account1.SetUnfill(i); if (Account1.Unfill.orderKind == 2 && Account1.Unfill.count > 0 && Account1.Unfill.code == MarketData2.code) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //종목2 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(MarketData2.code), 0); //잔고수량 Xvol2 = Account1.Balance.count; //분할매도횟수가 2이상일때 if (분할매도횟수2 >= 2) { //잔고수량을 지정한 횟수로 나누어 1회 주문할 수량 계산 var V2 = Math.floor(Xvol2/분할매도횟수2); Xvol21 = Xvol2 - V2*(분할매도횟수2-1); Xvol22 = V2; } else { Xvol21 = Xvol2; } var SellPrice2 = MarketData2.Bid(3); Account1.OrderSell(Main.GetOrderCode(MarketData2.code),Xvol21,SellPrice2,0); if (분할매도횟수2 >= 2) { //3번 타이머,10초 타이머(분할매도 간격) Main.SetTimer(5, 10000); //횟수 카운트 변수는 초기값 1 count5 = 1; } } //종목1(MarketData2) 추가매수(첫매수 후 N초 단위로) if (nEventID == 5) { //카운트 값이 분할매도횟수2 미만이면 if (count5 < 분할매도횟수2) { //타이저 동작할때 마다 1씩 증가 count5 = count5+1; //추가매도 실행 var SellPrice2 = MarketData2.Bid(3); Account1.OrderSell(Main.GetOrderCode(MarketData2.code),Xvol22,SellPrice2,0); } //카운트 값이 분할매도횟수와 같이면 if (count5 == 분할매도횟수2) { //5번타이머 종 Main.KillTimer(5); } } }
프로필 이미지
택군아
2018-08-24
2732
글번호 224546
답변완료

문의드립니다.

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 기타 -변수 고정 -예스스탁 전략 작성 한 뒤에 시뮬레이션한 결과값(전략레포트에 나오는 것들, 승률, 손익비, n개월간 손익 레코드 기록 등)을 저장해서 엑셀로 뽑거나 할 수 있나요? 가능여부가 궁금합니다.
프로필 이미지
잡다백수
2018-07-30
2548
글번호 224544

파일럿 님에 의해서 삭제되었습니다.

프로필 이미지
파일럿
2018-07-30
0
글번호 224543
답변완료

문의드립니다

안녕하세요, 매수가 대비 -1% 시 현재가로 손절 주문내는 식과 12시 정각의 60 분봉 5일선 가격으로 주문내는법을 알고 싶습니다 감사합니다
프로필 이미지
doilzul
2018-07-29
2458
글번호 224542

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

프로필 이미지
somun
2018-07-27
5
글번호 224541
답변완료

2개 이상의 file에서 하나의 프로젝트 동작 가능 문의

Code line 증가 및 가독성 때문에 2개 이상의 파일에서 하나의 프로젝트 동작하고 싶은데 혹시 예스스팟에서 가능한지 문의 드립니다.
프로필 이미지
궁금해요
2018-07-26
2492
글번호 224534
답변완료

종목검색 문의

안녕하세요. 파워종목검색으로 종목검색후 매매까지 잘되었습니다. //종목검색 완료되어 리스트(검색된 종목코드) 수신 function Main_OnRcvItemList(aItemList, nCount) { //검색된 종목코드를 저장 List = aItemList; //검색된 종목수 저장 ListCnt = nCount; //종목코드 디버깅창에 출력 Main.MessageList("전체종목코드",List); //검색된 종목에 대해 종목객체 요청 for (var i = 0; i < nCount; i++) { Main.ReqMarketData(List[i], 0, 0); } if (ListCnt >= 1){Main.KillTimer(1);} } 한번이 아니라 계속 검색을 하고 싶은데요. 예제 하나 부탁드립니다~
프로필 이미지
오토
2018-07-26
2586
글번호 224533