커뮤니티

예스스팟 Q&A

답변완료

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

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

excel getData 문의

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

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

- 어제 새벽 LG-U 플러스 인터넷 장애로 시스템 자동매매가 중단됨. - 이에 따라 손실이 발생하였습니다. - 사전 고지 없이 중단에 따른 손실 법적 대응 방법이 있을 까요...???
프로필 이미지
유샘
7
글번호 225591
0
답변완료

예수금잔고 통화를 USD로 표현

수고하십니다. 스팟에서 예수금잔고 통화를 USD로 표현하고 싶습니다. 어찌하나요? 예수금잔고 = 계좌.GetBalanceETCinfo(0);
프로필 이미지
후왕
1677
글번호 225590
답변완료

썸머타임 알려주세요

수고하십니다.스팟에서 썸머타임 True / False로 표시하고 싶은데 전략 작성좀 해주세요
프로필 이미지
후왕
1622
글번호 225589
답변완료

안녕하세요

수식을 직접 기입하여 종목찾기를 하면 잘 나오지 않습니다 특별한 메카니즘이 있는지요 ? 그냥 수식명이 나오다가 안나오다가,,종목이 잘 나오지 않는데 종목명이 잘 바뀌어지지도 않구여 ..ㅜㅜ 도아주십시요
프로필 이미지
사는게먼지
1676
글번호 225588
답변완료

수식 문의합니다

많은 도움 받고 있습니다. 종목에 관계 없이 매수, 매도한 잔고를 5초마다 합산해서 -50만원에 손절, 50만원에 익절 하는식 원합니다. 예시는 매도포지션 일때 청산식인데 매도와 매수한 가격을 합산하여 청산하는 식 원합니다. 예시) 옵션매도포지션 전체 손익계산 var num = A1.GetTheNumberOfBalances(); var PLsum = 0; for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매도포지션이고 옵션종목이고 if (A1.Balance.position == 1 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3")) { //각 옵션매도종목의 (평균단가-현재가)*수량*50만원을 누적 PLsum = PLsum + ((A1.Balance.avgUnitCost - A1.Balance.current)*A1.Balance.count)*250000; } } //손익이 +50만원이상이거나 -50만원 이하이면 if (PLsum >= 100000 || PLsum <= -100000) { for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매도포지션이고 옵션종목이고 if (A1.Balance.position == 1 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3")) { A1.OrderBuy(A1.Balance.code, A1.Balance.count, 0,1); } } }
프로필 이미지
팡팡
1804
글번호 225587

와사비 님에 의해서 삭제되었습니다.

프로필 이미지
와사비
6
글번호 225576

온고지신 님에 의해서 삭제되었습니다.

프로필 이미지
온고지신
0
글번호 225575