커뮤니티

같은 YesSpot 스크립트가 NH에서는 안되고 VI에서 되는 이유

프로필 이미지
민현종
2022-11-22 15:48:58
956
글번호 164022
답변완료
요즘 변동성이 커 금요일 장 마감 직전에 포지션을 정리하려고 합니다. 다음과 같은 YesSpot수식으로 포지션을 정리하고 있는데, VI에서는 작동이 되고 NH에서는 작동이 되지 않더라구요. 그 이유가 무엇인지, NH에서는 어떻게 개선하면 될지 문의드립니다. var TT, TT1, ExitTime; //스팟 시작 function Main_OnStart() { TT = getHHMMSS(); ExitTime = 65500; endTime = 70000; var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); Week = getDateStr(YYYYMMDD); //사용자 함수 Main.SetTimer(1, 60000); } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 1 && TT1 > ExitTime && TT1 < endTime && Week == "금") {A1.Refresh(); var num1 = A1.GetTheNumberOfBalances(); for (j = 0; j < num1; j++) {//계좌의 리스트 순서로 잔고셋팅 A1.SetBalance(j); var Code1 = A1.Balance.code ; var avgC1 = A1.Balance.avgUnitCost ; var Count1 = A1.Balance.count ; var Price1 = A1.Balance.current ; //매수포지션 if (A1.Balance.position == 2) {A1.OrderSell(Code1, Count1, 0, 1); } //매도포지션 if (A1.Balance.position == 1) {A1.OrderBuy(Code1, Count1,0, 1); } Main.KillTimer(1); } } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-11-23 11:26:19

안녕하세요 예스스탁입니다. 1 getHHMMSS getDateStr 올리신 식에서 별도로 만든 함수는 NH에도 그대로 만들어 추가하셔야 합니다. 2 다른 부분은 별도로 문제가 될 부분이 없습니다. A1.Refresh(); 계좌의 재조회를 요청하시면 재조회가 되어서 계좌정보가 모두 업데이트가 완료된 후에 나머지 수식을 수행하게 하셔야 합니다. 현재 수식에는 재조회와 함께 바로 잔고를 체크하는 내용이 있습니다. 일반적으로 아래와 같이 재조회를 하면 재조회 완료후에 다음 코드가 수행되게 하셔야 합니다. 영문 업데이트가 게시판 금칙어라 Up*date와 같이 중간에 *이 추가되어 있습니다. 해당부분은 제거하시기 바랍니다. var TT, TT1, ExitTime; //스팟 시작 function Main_OnStart() { TT = getHHMMSS(); ExitTime = 65500; endTime = 70000; var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); Week = getDateStr(YYYYMMDD); //사용자 함수 Main.SetTimer(1, 60000); } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 1 && TT1 > ExitTime && TT1 < endTime && Week == "금") { Main.KillTimer(1); A1.Refresh(); //수식에서 계좌재조회를 판단하는 변수 RF = true; } } function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)//*제거 { //계좌 재조회 완료 if (RF == true && lUp*dateID == 30000)*제거 { RF = false; var num1 = A1.GetTheNumberOfBalances(); for (j = 0; j < num1; j++) { //계좌의 리스트 순서로 잔고셋팅 A1.SetBalance(j); var Code1 = A1.Balance.code ; var avgC1 = A1.Balance.avgUnitCost ; var Count1 = A1.Balance.count ; var Price1 = A1.Balance.current ; //매수포지션 if (A1.Balance.position == 2) { A1.OrderSell(Code1, Count1, 0, 1); } //매도포지션 if (A1.Balance.position == 1) { A1.OrderBuy(Code1, Count1,0, 1); } } } } 즐거운 하루되세요 > 민현종 님이 쓴 글입니다. > 제목 : 같은 YesSpot 스크립트가 NH에서는 안되고 VI에서 되는 이유 > 요즘 변동성이 커 금요일 장 마감 직전에 포지션을 정리하려고 합니다. 다음과 같은 YesSpot수식으로 포지션을 정리하고 있는데, VI에서는 작동이 되고 NH에서는 작동이 되지 않더라구요. 그 이유가 무엇인지, NH에서는 어떻게 개선하면 될지 문의드립니다. var TT, TT1, ExitTime; //스팟 시작 function Main_OnStart() { TT = getHHMMSS(); ExitTime = 65500; endTime = 70000; var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); Week = getDateStr(YYYYMMDD); //사용자 함수 Main.SetTimer(1, 60000); } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 1 && TT1 > ExitTime && TT1 < endTime && Week == "금") {A1.Refresh(); var num1 = A1.GetTheNumberOfBalances(); for (j = 0; j < num1; j++) {//계좌의 리스트 순서로 잔고셋팅 A1.SetBalance(j); var Code1 = A1.Balance.code ; var avgC1 = A1.Balance.avgUnitCost ; var Count1 = A1.Balance.count ; var Price1 = A1.Balance.current ; //매수포지션 if (A1.Balance.position == 2) {A1.OrderSell(Code1, Count1, 0, 1); } //매도포지션 if (A1.Balance.position == 1) {A1.OrderBuy(Code1, Count1,0, 1); } Main.KillTimer(1); } } }