커뮤니티

[79691] 오류

프로필 이미지
민현종
2022-11-23 17:36:27
1086
글번호 164082
답변완료
안녕하세요, 수정 주신 수식을 YesSpot에 적용했는데, ReferenceError: RF is not defined 라고 찍힙니다. 청산시기를 두개(0555~0600, 0655~0700)로 나누어서 그런건가요? 확인 부탁드립니다. ---------------------------------------------------- var TT, TT1, ExitTime; //스팟 시작 function Main_OnStart() { TT = getHHMMSS(); Dax_ExitTime = 55500; Dax_endTime = 60000; 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); Main.SetTimer(2, 60000); } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 1 && TT1 > Dax_ExitTime && TT1 < Dax_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(Code1.substring(0,3) == "FDX") //매수포지션 if (A1.Balance.position == 2) {A1.OrderSell(Code1, Count1, 0, 1); } //매도포지션 if (A1.Balance.position == 1) {A1.OrderBuy(Code1, Count1,0, 1); } } } } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 2 && TT1 > ExitTime && TT1 < endTime && Week == "금") { Main.KillTimer(2); A1.Refresh(); //수식에서 계좌재조회를 판단하는 변수 RF = true; } } function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) { //계좌 재조회 완료 if (RF == true && lUp*dateID == 30000) { RF = false; var num2 = A1.GetTheNumberOfBalances(); for (j = 0; j < num2; 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); } } } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-11-24 11:35:57

안녕하세요 예스스탁입니다. 1 답변식에 변수 선언부가 빠져있었습니다. 상단에 RF 변수에 대한 전역변수 선언을 추가해 주시면 됩니다. 또한 수식에서 동일 이벤트는 하나만 사용하셔야 합니다. 동일이벤트를 여러개 적으면 상단의 하나만 동작합니다. 2 시간에 따라 처리하는 내용이 다르므로 refresh할때 변수를 변경해서 구분해서 처리하게 하셔야 합니다. 아래 수정된 식 내용을 확인하시기 바랍니다. 3 var TT, TT1, ExitTime; var RF1,RF2; //스팟 시작 function Main_OnStart() { TT = getHHMMSS(); Dax_ExitTime = 55500; Dax_endTime = 60000; 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); Main.SetTimer(2, 60000); } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 1 && TT1 > Dax_ExitTime && TT1 < Dax_endTime && Week == "금") { Main.KillTimer(1); A1.Refresh(); //수식에서 계좌재조회를 판단하는 변수 RF1 = true; } if(nEventID == 2 && TT1 > ExitTime && TT1 < endTime && Week == "금") { Main.KillTimer(2); A1.Refresh(); //수식에서 계좌재조회를 판단하는 변수 RF2 = true; } } function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) { //계좌 재조회 완료 if (RF1 == true && lUp*dateID == 30000) { RF1 = 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(Code1.substring(0,3) == "FDX") { //매수포지션 if (A1.Balance.position == 2) { A1.OrderSell(Code1, Count1, 0, 1); } //매도포지션 if (A1.Balance.position == 1) { A1.OrderBuy(Code1, Count1,0, 1); } } } } //계좌 재조회 완료 if (RF2 == true && lUp*dateID == 30000) { RF2 = false; var num2 = A1.GetTheNumberOfBalances(); for (j = 0; j < num2; 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); } } } } 즐거운 하루되세요 > 민현종 님이 쓴 글입니다. > 제목 : [79691] 오류 > 안녕하세요, 수정 주신 수식을 YesSpot에 적용했는데, ReferenceError: RF is not defined 라고 찍힙니다. 청산시기를 두개(0555~0600, 0655~0700)로 나누어서 그런건가요? 확인 부탁드립니다. ---------------------------------------------------- var TT, TT1, ExitTime; //스팟 시작 function Main_OnStart() { TT = getHHMMSS(); Dax_ExitTime = 55500; Dax_endTime = 60000; 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); Main.SetTimer(2, 60000); } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 1 && TT1 > Dax_ExitTime && TT1 < Dax_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(Code1.substring(0,3) == "FDX") //매수포지션 if (A1.Balance.position == 2) {A1.OrderSell(Code1, Count1, 0, 1); } //매도포지션 if (A1.Balance.position == 1) {A1.OrderBuy(Code1, Count1,0, 1); } } } } function Main_OnTimer(nEventID) { TT1 = getHHMMSS(); if(nEventID == 2 && TT1 > ExitTime && TT1 < endTime && Week == "금") { Main.KillTimer(2); A1.Refresh(); //수식에서 계좌재조회를 판단하는 변수 RF = true; } } function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) { //계좌 재조회 완료 if (RF == true && lUp*dateID == 30000) { RF = false; var num2 = A1.GetTheNumberOfBalances(); for (j = 0; j < num2; 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); } } } }