커뮤니티

예스스팟 Q&A

답변완료

예트레이더 (NH 트레이더) 종목검색후 예스스팟 주문

YesLanguage편집기로 검색식은 이미 만들었구요. YesLanguage편집기로 종목검색 리스트를 만들고 검색된 리스트 종목을 실시간으로 스팟으로 보내고 예스스팟을 이용해서 매수 종목수는 최대 일 때 30개까지 n개 종목까지만 임의로 정합니다. 임의로 정하기 어려우면 종목의 현재가가 작은 순서로 30개 이하로 순서를 정합니다. 1종목 투입금액 = 예수금/30 으로 잔고가 없는 종목들을 동일항 금액으로 시장가 매수합니다. 각종목마다 매수후에 5% 이익이 생기면 처음 총매수 잔고의 40%를 청산하고 처음 매수가보다 다시 10% 이익이 나면 다시 40% 청산합니다. 그후 15% 이익이 나면 나머지 전부 잔량을 청산합니다. 종가 무렵 3시 15분에 종목마다 잔고 수량이 있으면 전량 청산합니다. 손절 : 종목마다 매수후 5% 손실이 나면 전량 손절합니다, 5분마다 위의 과정을 반복하며 매수가 되고 잔고가 전부 청산된 좀옥은 리스트에서 제거하며 이전 종목 리스트와 겹치는 종목들은 제외하고 새로운 종목들만 집계하며 매수 종목 수가 30개 이하이면 새로운 종목을 현재가가 작은 순서로 이전 매수한 종목과 합하여 총 30개 이하가 되도록 위와 같이 매매하게 하고 싶습니다. 부탁드립니다.
프로필 이미지
종호
2022-01-06
1894
글번호 225605

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

프로필 이미지
Trader
2021-12-30
0
글번호 225604
답변완료

DDE 데이터매니저와 참조데이터 시그널링 문의

안녕하세요 증권사의 DDE 기능과 엑셀을 통해 수신받은 나름의 가공 지표를 데이터매니저를 통해 예스트레이더에서 차팅한 후에 그 차트를 예스스팟에서 불러들여서 그 지표값들을 스팟 내에서 가공하여 신호로 만들어서 다시 엑셀에 뿌려주거나 스팟 내에서 시인성 있는 UI를 만들고 싶습니다 이게 가능한지요? 그리고 나름의 가공 지표가 여러개인데 모두 스팟에서 불러들여서 모두 합쳐서 종합신호로 스팟에서 비주얼하게 표한하고 싶은데 외부 데이터는 기본 DATA1이 아닌 참조데이터로만 된다고 하니 혹시 이게 DATA2, 3, 4,,, 등의 데이터값을 스팟서 불러들여 개별 신호체계로 만들고 합산한 종합 신호로 만들고자 하는데 가능여부와 혹시 이 과정에서 발생할 수 있는 문제가 있는지 조언을 얻고 싶스니다 미리 답변에 대해 감사합니다
프로필 이미지
ewhaelin
2021-12-22
1805
글번호 225603

솔잎22 님에 의해서 삭제되었습니다.

프로필 이미지
솔잎22
2021-12-21
0
글번호 225602
답변완료

차월물 거래

선물인 경우에 만기날 오버나잇으로 차월물 선택을 어떻게 해야 하나요? 미니선물, 선물.
프로필 이미지
달무드
2021-12-17
1723
글번호 225600
답변완료

스팟 종목검색 nCount 가..

10초에 한번씩 종목검색 요청을 하게 되어 있구요. 자주는 아니지만 가끔씩 갑자기 nCount : -1 이 되면서 (11개가 갑자기 검색 기준에 이탈되는 것이 아니구요) 종목검색 요청이 멈춰버립니다. 장끝날때까지 신규 종목추가가 안되는 상태가 되구요. 한달에 두세번? 이런 날이 있습니다. 이유가 뭘까요? ㅠㅠ 스팟게시판에 개발자님이 써주신 식 그대로 쓰기에 스팟 식에는 아무 문제가 없습니다. 스팟식도 아주 가벼운걸로 이거 딱 하나만 걸고있구요 랭귀지 식도 가볍구요. 예트만 켜놓기에 다른 인터넷 트래픽도 없구요.
프로필 이미지
시스시스스템
2021-12-16
1812
글번호 225595
답변완료

장종료 예상체결 시간에서 하한가 잔량 구하는 법

항상수고 많으십니다. 예상체결시간에서 하한가 잔량이 일정 이상이라면 매수진입 하지 않으려 합니다. 하한가 잔량을 구하는 수식을 부탁드립니다.
프로필 이미지
재령
2021-12-12
1901
글번호 225594
답변완료

excel getData 문의

excel의 getData GetData(nSheetIndex, sCell) 의 사용법에 대해 문의 드립니다. 사용목적: 활성화된, 엑셀시트에 실시간으로 data를 받아오고, 이data를 바탕으로 트레이딩에 매매 조건을 활용하고자 합니다. ex: 2년물 금리 실시간 data 사용하여, spot으로 주문 만약 sheet1의 A1 셀의 값이 상승시 orderbuy, 하락시 ordersell을 하고자 한다면, 가능할까요? 가능 하다면 간단한 예시 부탁드리며, 불가능하다면, spot의 다른기능(DDE이나, dataManager로 '실시간 외부데이터'를 사용한 매매가 가능한 방법이 있나요?
프로필 이미지
하운드독
2021-12-08
1855
글번호 225593
답변완료

조회제한 및 주문호가문의

Q1. 아래 수식이 랜덤하게 조회제한에 걸립니다. 조회수제한인지, 주문제한인지는 모르겠습니다. 계좌에 보유종목이 많을때(20종목+), 일때 spot을 실행하자마자 제한이걸려 멈춰버립니다. 제한이 걸리지 않게 코드수정부탁드립니다. Q1-2. 계좌내 최대종목수를 20종목이하로 제한하고 싶습니다. Main.SetTimer(1, 1000*60); //60초 로 제한했음에도 불구하고, 제한에 걸립니다. Q2. ordersSell로 익절조건을 추가했는데, '호가단위가 맞지 않다'고 나옵니다 아래 코드에 2% 익절조건으로 호가단위를 맞출 방법을 문의드립니다. profitB == 1.02 //외부입력변수 if(cond == true){ A.OrderSell(A.Balance.code, A.Balance.count, Math.floor(A.Balance.avgUnitCost * profitB/100)*100, 0); Q3. kosdaq 지수 전일종가가 3일선, 5일선, 10일선 위에 있을때만, orderbuy 조건을 활성화 하고 싶습니다. 확장차트객체를 사용하지 않고서도 가능할까요? ---------------원본 수식코드------- //1. 시세/파워종목검색에서 임의의 사용자검색조건을 설정한다 //2. 사용자검색조건식을 이용하여 일정시간마다 종목을 검색한다 //3. 기존의 미체결 주문을 취소주문한다 //4. 현재 보유하고 있는 잔고종목이 새로 검색된 종목에 없는 경우 현재가로 청산주문낸다 //5. 검색된 종목들을 차례대로 종목객체 생성한다 //6. 생성된 종목객체가 잔고에 없으면 100,000원씩 매도 1호가에 매수주문한다. (단, 100,000원 이상인 종목은 1주 주문)) //7. 생성되었던 객체를 삭제한다 //8. 일정시간 경과 후 다시 종목검색을 하여 위의 과정을 반복한다 /* function getHHMMSSS() { var d = new Date(); HHMMSSS = d.getHours()+":"+ d.getMinutes()+":"+ d.getSeconds(), SSS = d.getMilliseconds(); // 1/1000초 if(SSS < 10) SSS = "00" + SSS; else if (SSS < 100) SSS = "00" + SSS; return HHMMSSS + "." + SSS;} */ var gEntryMoney = 1000000, //종목당 매수금액 gaItemList = [], //검색된 종목들을 담은 배열변수 gItemCnt, //종목객체 생성할 종목수 gRegCnt; //종목객체 생성을 요청한 건수 function Main_OnStart() { Main.MessageList(getHHMMSSS(), "시작"); //2. 사용자검색조건식을 이용하여 일정시간마다 종목을 검색한다 Main.ReqPowerSearch("#전고점돌파(30)"); Main.SetTimer(1, 1000*60); //60초마다 종목검 } function Main_OnRcvItemList(aItemList, nCount) { //3.기존의 미체결 주문을 취소주문한다 var num = A.GetTheNumberOfUnfills(); for(var i = 0; i < num ; i++){ A.SetUnfillIndex(i); A.OrderCancel(A.Unfill.orderNum); //Main.MessageList(getHHMMSSS(), "취소된 미체결주문 종목코드:", A.Unfill.code); } //4. 현재 보유하고 있는 잔고종목이 새로 검색된 종목에 없는 경우 현재가로 청산주문낸다 if(nCount >= 1){ gaItemList = aItemList; Main.MessageList(getHHMMSSS(), "종목검색된 종목수와 종목", nCount, gaItemList); var num = A.GetTheNumberOfBalances(); for(var i = 0; i < num ; i++){ A.SetBalanceIndex(i); //Main.MessageList(getHHMMSSS(), "보유잔고 종목", i + 1, A.Balance.code, A.Balance.count); //검색된 종목과 잔고종목의 종목코드들을 비교하여 같은 종목코드가 있으면 true 아니면 false var cond = false; for(var j = 0; j < gaItemList.length; j++){ // for문으로 잔고코드에 번호 부여 0부터 종목수 if(A.Balance.code == gaItemList[j]){ cond = true; gaItemList.splice(j, 1); //배열변수명.splice(배열에서 삭제할 부분의 처음 인덱스, 삭제할 크기) break; //break문 : for문이나 while문을 빠져나옴 } } //cond이 false이면 매도 if(cond == false){ A.OrderSell(A.Balance.code, A.Balance.count, A.Balance.current, 0); //Main.MessageList(getHHMMSSS(), "청산주문된 종목코드:", A.Balance.code); } if(cond == true){ A.OrderSell(A.Balance.code, A.Balance.count, A.Balance.current , 0);//계좌안에 있으면서, 종목 Main.MessageList (getHHMMSSS (), "[체결잔고 익절 매도주문]", A.Balance. code,"평단가:", A.Balance.avgUnitCost, "매도가격:", Math.floor(A.Balance.avgUnitCost * profitB)); } } //5. 검색된 종목들을 차례대로 종목객체 생성한다 gReqCnt = 0; gItemCnt = gaItemList.length; if(gItemCnt > 0){ Main.ReqMarketData(gaItemList[gReqCnt], 0, 0); } } } function Main_OnRcvMarketData(MD) { // Main.MessageList(getHHMMSSS(), "종목객체 생성", MD.code, MD.name); //6. 생성된 종목객체가 잔고에 없으면 1,000,000원씩 매도 1호가에 매수주문한다.(단, 100,000원 이상인 종목은 1주 주문)) var EntryVol; if(MD.current < gEntryMoney){ EntryVol = Math.floor(gEntryMoney/MD.current); } else{ EntryVol = 1; } A.OrderBuy(MD.code, EntryVol, MD.Ask(1), 0); //Main.MessageList(getHHMMSSS(), "매수주문 종목과 수량:", MD.code, EntryVol); //7. 생성되었던 객체를 삭제한다 // Main.MessageList(getHHMMSSS(), "종목객체 삭제:", MD.code); Main.RemoveMarketData(MD); gReqCnt++; if(gReqCnt < gItemCnt){ var TimeLimit = Main.ReqMarketData(gaItemList[gReqCnt], 0, 0); if(TimeLimit == -1){ Main.SetTimer(2, Main.GetLimitedTime(0) + 100); } } else if(gReqCnt == gItemCnt){ Main.MessageList(getHHMMSSS(), "매수주문 종료"); } } function Main_OnNotifyFill(NF) { Main.MessageList(getHHMMSSS(), "NF:", NF); } function Main_OnTimer(nEventID) { //8. 일정시간 경과 후 다시 종목검색을 하여 위의 과정을 반복한다 if(nEventID == 1){ Main.MessageList(getHHMMSSS(), "종목검색 재시작"); Main.ReqPowerSearch("#전고점돌파(30)"); } //조회시잔이 제한된 경우 if(nEventID == 2){ Main.ReqMarketData(gaItemList[gReqCnt], 0, 0); } }
프로필 이미지
하운드독
2021-12-08
1691
글번호 225592

관리자에 의해 자유게시판으로 이동되었습니다

프로필 이미지
유샘
2021-12-01
7
글번호 225591
0