커뮤니티

자동으로 처리하게

프로필 이미지
atmskill
2020-03-12 13:59:39
175
글번호 136831
답변완료
수고하십니다 정보 확인을 위하여 검색식에서 옵션의 가격별로 전일종가-당일시가를 계산하는 식을 만들어 실시간챠트에 적용하니 결과가 나옵니다 한데 각 옵션가격을 일일이 선정해줘야해서 여간 번거로운게 아니군요 하여 프로그램상에서 각 옵션가격을 던져주고 결과를 일괄 받아볼수있는 방법은 없을까요?? 적용식은 아래와 같습니다.. var : xc(0), xo(0); var : x(0), idx(0); idx = idx + 1; if LastBarOnChart == 1 then { for x = 0 to idx Begin Print("c:₩yeslan₩aaatext.txt","날자 = / %.0f / 종목명 = / %s / 전날종가 = / %.2f / 오늘시가 = / %.2f /", sdate[x], SymbolName, c[x+1], o[x]); end; Print("c:₩yeslan₩aaatext.txt","============================================"); } 이 결과를 실시간 챠트에서 각 옵션값을 일일이 선택하여야하는데,, 프로그램상에서 각 옵션값으로 바꿔가며 발췌할수있는 방법은 없나요?? 아님 예스스팟에서는 할수있나요???
검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-13 13:23:41

안녕하세요 예스스탁입니다. 일간데이타이면 스팟으로 아래식 이용하시면 됩니다. 옵션전체 종목의 종목객체를 만들고 해당 객체에서 최대 300일 일간 데이타를 받아 출력하게 됩니다. 미결제약정이 없는 종목은 제외가 됩니다. 적용하시면 프로그램의 spot폴도 아래 export폴더에 종목코드.txt파일로 출력됩니다. 스크립트 객체화면 설정 옵션객체 추가 --> 속성에서 객체명은 Option1, 지수선물로 지정 var Call = []; var Put = []; var req; function Main_OnStart() { for (var a = -Option1.lowersATM; a <= Option1.uppersATM; a++) { if (Option1.GetOpenInterest(0,a) > 0) { Call.push(Option1.GetATMCallRecent(a)); Main.MessageList(a,"call",Call.length,Call); } if (Option1.GetOpenInterest(1,-a) > 0) { Put.push(Option1.GetATMPutRecent(-a)); Main.MessageList(a,"put",Put.length,Put); } } if (Call.length > 0) { req = 0; Main.ReqMarketData(Call[req],300); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == Call[req]) { var path = MarketData.code + ".txt"; Main.PrintOnFile(path,"날짜:",MarketData.date,"시가:",MarketData.open,"종가:",MarketData.current); for (var a = 1; a <= MarketData.GetPrevCount(); a++) { Main.PrintOnFile(path,"날짜:",MarketData.GetPrevDate(a),"시가:",MarketData.GetPrevOpen(a),"종가:",MarketData.GetPrevClose(a)); //Main.MessageList(a,MarketData.GetPrevDate(a),MarketData.GetPrevOpen(a),MarketData.GetPrevClose(a)); } req = req+1; if (req < Call.length) { var S = Main.ReqMarketData(Call[req],300); if (S == 1) { Main.SetTimer(1, 15000); } } else { req = 0; var S = Main.ReqMarketData(Put[req],300); if (S == 1) { Main.SetTimer(2, 15000); } } } if (MarketData.code == Put[req]) { var path = MarketData.code + ".txt"; Main.PrintOnFile(path,"날짜:",MarketData.date,"시가:",MarketData.open,"종가:",MarketData.current); for (var a = 1; a <= MarketData.GetPrevCount(); a++) { Main.PrintOnFile(path,"날짜:",MarketData.GetPrevDate(a),"시가:",MarketData.GetPrevOpen(a),"종가:",MarketData.GetPrevClose(a)); } req = req+1; if (req < Put.length) { var S = Main.ReqMarketData(Put[req],300); if (S == 1) { Main.SetTimer(2, 15000); } } } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Main.ReqMarketData(Call[req],300); } if (nEventID == 2) { Main.KillTimer(2); Main.ReqMarketData(Put[req],300); } } 즐거운 하루되세요 > atmskill 님이 쓴 글입니다. > 제목 : 자동으로 처리하게 > 수고하십니다 정보 확인을 위하여 검색식에서 옵션의 가격별로 전일종가-당일시가를 계산하는 식을 만들어 실시간챠트에 적용하니 결과가 나옵니다 한데 각 옵션가격을 일일이 선정해줘야해서 여간 번거로운게 아니군요 하여 프로그램상에서 각 옵션가격을 던져주고 결과를 일괄 받아볼수있는 방법은 없을까요?? 적용식은 아래와 같습니다.. var : xc(0), xo(0); var : x(0), idx(0); idx = idx + 1; if LastBarOnChart == 1 then { for x = 0 to idx Begin Print("c:₩yeslan₩aaatext.txt","날자 = / %.0f / 종목명 = / %s / 전날종가 = / %.2f / 오늘시가 = / %.2f /", sdate[x], SymbolName, c[x+1], o[x]); end; Print("c:₩yeslan₩aaatext.txt","============================================"); } 이 결과를 실시간 챠트에서 각 옵션값을 일일이 선택하여야하는데,, 프로그램상에서 각 옵션값으로 바꿔가며 발췌할수있는 방법은 없나요?? 아님 예스스팟에서는 할수있나요???