커뮤니티

예스스팟 Q&A

답변완료

주문 수량 오류 -1 문의드립니다.

안녕하세요. 수식작성을 했는데 매수할 때 자꾸 매수가 안되고 주문상태에 주문수량오류 (주문수량:-1) 이라고 뜹니다. 뭐가 잘못 작성 된 것 일까요? 저는 NH증권을 쓰고 매수금액을 주문가능금액의 85프로로 설정하였습니다. 차트에서 신호받아서 매수하진 않고, 검색기에 뜨는 종목을 매수합니다. 한번 봐주시길 바라겠습니다. 감사합니다. var 타이머간격 = 3; var 손절 = 0.95; var 익절 = 1.05; var OrderList = []; var MKList = []; var req; var 매수금; function Main_OnStart() { //1번 타이머, 3초 Main.SetTimer(1, 타이머간격*1000); // 오늘 매수한 종목 관리 배열 초기화 MKList = []; //주문가능현금의 85% 매수금 = Account1.GetBalanceETCinfo(16)*0.85; //스팟 시작시 잔고평가금액 V1 = Account1.GetBalanceETCinfo(100); } function Main_OnTimer(nEventID) { var d = new Date(); YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 90000 && HHMMSS < 151500) { // 종목검색 실행 //조건검색명입력 Main.ReqPowerSearch("전략2"); } if (nEventID == 1) { //계좌전체종목수 var num = Account1.GetTheNumberOfBalances(); //9시~15시 15분 사이 if (HHMMSS >= 90000 && HHMMSS < 151500) { //보유종목이 1개 이상 if (num >= 1) { //1번 타이머 종료 Main.KillTimer(1); //계좌리스트의 순서대로 인덱스를1씩증가 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); //수량이 있고 5%수익이거나 5% 손실이면 시장가 매도 if (Account1.Balance.count > 0 && (Account1.Balance.current >= Account1.Balance.avgUnitCost*익절 || Account1.Balance.current <= Account1.Balance.avgUnitCost*손절)) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } } //15시 15분이후이면 if (HHMMSS >= 151500) { //1번 타이머 종료 Main.KillTimer(1); //미체결 전체 취소 var Unum = Account1.GetTheNumberOfUnfills() for(var i = 0; i < Unum; i++) { Account1.SetUnfillIndex(i); if (Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //계좌리스트의 순서대로 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); if (Account1.Balance.count > 0) //잔고에 수량이 0이상이면 { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); //시장가로매도 } } } } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvItemList(aItemList, nCount) //종목검색완료 { OrderList = []; if (nCount >= 1) //1종목 이상 검색되면 { Main.KillTimer(1); if (MKList.length == 0) //첫검색이면 { OrderList = aItemList; //해당 종목코드 모두 종목객체요청 리스트에 추가 } else //첫검색이 아니면 { for (var a = 0; a < nCount; a++) //기존종목객체요청리스트에 없는 종목만 선별 { var Add = true; for (var b = 0; b < BuyList.length; b++) { if (aItemList[a] == BuyList[b].code) { Add = false; } } if (Add == true && !IsStockInAccount(aItemList[a])) { OrderList.push(aItemList[a]); } } } } if (OrderList.length == 0) //종목객체 요청할 종목수가 없으면 종목검색을 위해 타이머 다시 동작 { Main.SetTimer(1, 타이머간격*1000); //1번타이머재동작 } else //종목객체 요청할 종목수가 1이상이면 { req = 0; //요청횟수는 초기값 0 Main.ReqMarketData(OrderList[req]); //요청시작 } } function Main_OnRcvMarketData(MarketData) //요청한 종목객체가 만들어지먼 { if (MarketData.code == OrderList[req]) { MKList.push(MarketData); //MK배열변수에 순서대로 종목객체저장 // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { // 계좌에 없는 경우에만 매수 Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1); // 시장가 주문 Main.MessageList(MarketData.code + " 주식을 매수합니다."); } else { Main.MessageList( MarketData.code + " 주식은 이미 계좌에 있으므로 매수하지 않습니다."); } req = req+1; //요청횟수 1증가 if (req < OrderList.length) //요청횟수가 요청할종목수 미만이면 { var aa = Main.ReqMarketData(OrderList[req]); //다음종목 요청 if (aa == -1) //종목객체 제한시간에 걸리면(15초에 60개) 15초 쉬고 다시 요청 { Main.SetTimer(2, 15000); } } else //모두 요청했으면 { Main.SetTimer(1, 타이머간격*1000); //종목검색을 위해 타이머 다시 동작 } } } function IsStockInAccount(stockCode) { // 계좌에 해당 종목이 있는지 확인하는 함수 var numberOfBalances = Account1.GetTheNumberOfBalances(); for (var i = 0; i < numberOfBalances; i++) { Account1.SetBalance(i); if (stockCode == Account1.Balance.code) { return true; // 계좌에 같은 종목이 있으면 true 반환 } } return false; // 계좌에 같은 종목이 없으면 false 반환 }
프로필 이미지
iinnn
2024-08-12
655
글번호 226077
답변완료

문의드립니다

안녕하세요 문의 드립니다 -.차트에 나타나는 매매신호에 따라 진입이 되는 경우 최초 신호(매수신호이든 매도신호이든) 에는 진입이 안되고 두번째 신호(매도청산 또는 매수청산) 이후 에만 진입이 되는 식 (즉 첫번째신호만 진입 안하는 경우의 수식) -.(예를들어) 8시50분에 선물매수신호가 완성되고---1번신호 9시15분에 선물매수청산 신호---2번신호 가 나오는 경우 1번신호에는 진입이 안되고 2번 신호에는 진입(매수청산 즉 매도) 되게 하는 수식 부탁드립니다
프로필 이미지
tktmsl
2024-08-19
550
글번호 226076

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

프로필 이미지
Trader
2024-08-12
7
글번호 226075

하운드독 님에 의해서 삭제되었습니다.

프로필 이미지
하운드독
2024-08-08
6
글번호 226073
답변완료

MarketData1 옵션 매수 다운하이, 하이다운하이

MarketData1에 옵션종목 1개를 선정하여 진입하는 수식입니다. 요청수식 1. 시작 084500 우선순위 1 : 가격이 1.00 보다 작아지고 우선순위 2 : 가격이 1.01 보다 커지면 매수 1계약 지정가 상대5호가 익절 1.00, 손절 0.50 1번 진입하고 1번 청산하면 추가 진입금지 endofday 151500 주의점 : 계좌에는 다른 전략의 미결제들도 있으므로 그것들과 구별하여 청산함. 요청수식 2. 시작 084500 우선순위 1 : 가격이 1.50 보다 커지고 우선순위 2 : 가격이 1.00 보다 작아지고 우선순위 3 : 가격이 1.01 보다 커지면 매수 1계약 지정가 상대5호가 익절 1.00, 손절 0.50 1번 진입하고 1번 청산하면 추가 진입금지 endofday 151500 주의점 : 계좌에는 다른 전략의 미결제들도 있으므로 그것들과 구별하여 청산함. 수식 부탁드립니다.
프로필 이미지
좌오비우오비
2024-11-15
717
글번호 226072
답변완료

예스스팟 자동주문

아래는 현재 제가 쓰고있는 예스스팟입니다. 현재는 같은종목은 매수치 않게 되어 있는데 이것을 계좌에 있더라도 중복매수되게 고치고 싶습니다. 수정부탁드립니다. ====================================================================== var timer5 = 2; //5초 var 매수금 = 100000; var OrderList = []; var MKList = []; var req; function Main_OnStart() { //1번 타이머, 1초 Main.SetTimer(1, timer5*1000); // 오늘 매수한 종목 관리 배열 초기화 MKList = []; Main.MessageList("START"); } function Main_OnTimer(nEventID) { var d = new Date(); YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS > 090000 && HHMMSS < 150000) { //종목검색 수행 Main.ReqPowerSearch("60분봉 급소2") } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); Main.MessageList("Main_OnRcvItemList:",nCount); OrderList = []; if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList; } else { for (var a = 0; a < nCount; a++) { var Add = true; for (var b = 0; b < MKList.length; b++) { if (aItemList[a] == MKList[b].code) { Add = false; } } if (Add == true && !IsStockInAccount(aItemList[a])) { OrderList.push(aItemList[a]); } } } } if (OrderList.length == 0) { Main.SetTimer(1, timer5*1000); } else { req = 0; Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == OrderList[req]) { MKList.push(MarketData); // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { // 계좌에 없는 경우에만 매수 //Account1.OrderBuy(MarketData.code,1,0,1); Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(3)),0,1); // Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),MarketData.Ask(1),0); //지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다. Main.MessageList(MarketData.code + " 주식을 매수합니다."); } else { Main.MessageList( MarketData.code + " 주식은 이미 계좌에 있으므로 매수하지 않습니다."); } req = req+1; if (req < OrderList.length) { var aa = Main.ReqMarketData(OrderList[req]); if (aa == -1) { Main.SetTimer(2, 15000); } } else { Main.SetTimer(1, timer5*1000); } } } function IsStockInAccount(stockCode) { // 계좌에 해당 종목이 있는지 확인하는 함수 var numberOfBalances = Account1.GetTheNumberOfBalances(); for (var i = 0; i < numberOfBalances; i++) { Account1.SetBalance(i); if (stockCode == Account1.Balance.code) { return true; // 계좌에 같은 종목이 있으면 true 반환 } } return false; // 계좌에 같은 종목이 없으면 false 반환 }
프로필 이미지
ksks
2024-08-08
773
글번호 226071

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

프로필 이미지
ksks
2024-08-07
3
글번호 226070
답변완료

ai code program

yl로 코드 작성에 알맞는 국내외 ai로 코드를 완성하는 ai 무유료 프로그램들?
프로필 이미지
aw
2024-08-06
585
글번호 226069
답변완료

book discovery

'「한권으로 끝내는 시스템 트레이딩`」 책을 구하는 방법?
프로필 이미지
aw
2024-08-06
506
글번호 226068
답변완료

파워종목검색에서 총거래대금? 거래대금? 무슨 차이일까요?

파워종목검색에서 총거래대금, 거래대금이 나뉘어져 있는데, 둘간 차이가 무엇일까요?
프로필 이미지
푸른비행
2024-07-30
527
글번호 226061