커뮤니티
예스스팟 Q&A
답변완료
옵션 내재변동성 엑셀로 구현하기
안녕하세요.
다음과 같이 에러메시지가 뜨며 엑셀에 구동이 되질 않습니다.
Excel-TypeError:Property 'HHMMSS' of object [object Obiect] is not a function
첨부파일 엑셀에 표현될 수 있도록 수정 부탁드립니다.
감사합니다.
var cnt;
var HHMMSS;
function Main_OnStart()
{
var d = new Date();
HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds();
var temp_code = Option.GetATMCallRecent(0,0);
Excel.SetRowData(1, "O2", Option.GetRemainDays(temp_code));
Excel.SetRowData(1, "P2", Option.RiskFreeRate);
if(HHMMSS >= 090100 && HHMMSS < 154500)
{
Main.MessageList("======",HHMMSS(), "IV_calc 시작","======");
Main.SetTimer(1, 5000); //5초 마다 실행
cnt = 2;
}
}
function Main_OnTimer(nEventID){ if(nEventID ==1)
{
var d = new Date();
HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds();
var call_Code, put_Code,ksp_price ;
cnt = cnt+1;
var An = "A"+cnt; //시간
var Bn = "B"+cnt; //기초자산
var Cn = "C"+cnt; //Call
var Dn = "D"+cnt; //Call
var En = "E"+cnt; //Call bid
var Fn = "F"+cnt; //Call ask
var In = "I"+cnt; //put iv
var jn = "j"+cnt; //put 행사가
var Kn = "K"+cnt; //put bid
var Ln = "L"+cnt; //put ask
Main.MessageList("======",HHMMSS, "To_Excel","======");
ksp_price = ksp.current;
call_Code = Option.GetATMCallRecent(0,0);
put_Code = Option.GetATMPutRecent(0,0);
Excel.SetRowData(l,An,get_date_time()); //시간
Excel.SetRowData(l,Bn,ksp_price); //기초자산
Excel.SetRowData(l,Cn,Option.GetImpliedVolatility(call_Code)); //Call iv
Excel.SetRowData(l,Dn,Option.GetExercisePrice(call_Code)); //Call 행사가
Excel.SetRowData(l,En,Option.GetBid(call_Code,1)); //Call bid
Excel.SetRowData(l,Fn,Option.GetAsk(call_Code,1)); //Call ask
Excel.SetRowData(l,In,Option.GetImpliedVolatility(put_Code)); //put iv
Excel.SetRowData(l,Jn,Option.GetExercisePrice(put_Code)); //put 행사가
Excel.SetRowData(l,Kn,Option.GetBid(put_Code,1)); //put bid
Excel.SetRowData(l,Ln,Option.GetAsk(put_Code,1)); //put ask
if(HHMMSS >= 154500)
{
Main.KillTimer(1);
Excel.Save();
Main.MessageList("======",HHMMSS, "종료","======");
}
}
}
2020-09-01
1681
글번호 225311
tktmsl 님에 의해서 삭제되었습니다.
2020-09-03
94
글번호 225310
데니얼 님에 의해서 삭제되었습니다.
2020-08-28
20
글번호 225309
바둑이 님에 의해서 삭제되었습니다.
2020-08-27
8
글번호 225302
답변완료
ReqChartEx 로 사용하는 차트의 이름 지정이 가능한가요?
안녕하세요.
예스스팟 코드 상에서 ReqChartEx 로 차트 요청해서 사용하고 있습니다.
[6131] 예스스팟 - 전략 화면에 보면
전략에서 사용중인 차트와 그리드, 이력변수 등을 볼 수 있는데
차트 보기에서 차트들의 이름이 #D651B80 처럼 알수 없는 값으로 되어 있어서 불편하네요.
이름을 지정할 수 있는 방법이 있을까요?
아니면 기능 업데이트를 부탁드리겠습니다.
2020-08-26
2195
글번호 225300
답변완료
포트폴리오 매매
안녕하세요.
아래의 포트폴리오 매매 전략이 예스랭귀지나 예스스팟으로 구현 가능한지 검토바랍니다.
제 생각에는 예스랭귀지로는 불가능하고 스팟으로만 가능할 것 같은데요...
1. 계좌 총 평가자산 조회
2. 두종목(A종목과 B종목) 70% : 30% 비율로 매수
3. 특정기간(예: 한달)이후 계좌 총 평가자산 조회 : (A종목x수량)+(B종목x수량)+현금
4. 계좌 총 평가자산을 기초로 다시 두종목에 대한 70% : 30% 비율계산
5. 비율 초가분은 매도 청산하고 비율 부족분은 매수 : 리밸런싱
예를들어,
100을 투자자산으로 A종목 70 / B종목 30 매수 진입이후
한달뒤에 총 평가자산이 110으로 A종목 74 / B종목 36 이 되었을때
B종목 3을 매도 청산하고 A종목 3을 매수하여 A종목 77 / B종목 33 으로 매달 리밸런싱하는 전략입니다.
2020-08-18
2454
글번호 225299
답변완료
시스템 수식 수정 문의
0915시에 "분봉장중단타1.5" 파워검색 실시 후 나온 종목들에 대해 시스템을 실행하려고 합니다.
아래와 같이 코딩했는데... 어디가 문제인지 모르겠습니다. ㅜㅡ
var List;
var ListCnt;
var ReqCount;
var HHMMSS,HHMMSS1;
//스팟 첫 실행시
function Main_OnStart()
{
Main.MessageLog("시작"); //시작 메세지 출력
Main.SetTimer(1,60000);
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var d = new Date();
HHMMSS1 = HHMMSS;
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 093000 && HHMMSS1 < 0930) // 0930시 파워검색 실시
{
Main.ReqPowerSearch("분봉장중단타1.5");
Main.MessageLog("파워검색시작");
Main.KillTimer(1);
}
}
}
function Main_OnRcvItemList(aItemList, nCount) //종목검색 완료되어 리스트(검색된 종목코드) 수신
{
List = aItemList; //검색된 종목코드를 저장
ListCnt = nCount; //검색된 종목수 저장
Main.SetTimer(2,2000);//2초 타이머
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 2) //2초 단위로 한종목씩 차트 생성
{
if (ReqCount == ListCnt) //요청이 검색된 종목수 만큼 되었으면 터이머 종료
Main.KillTimer(2);
//ReqCount번째 종목요청
//종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청
//차트설정 :종목, 주기 분봉, 조회건수 1500
var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_MINUTE, 1500, CHART_REQCOUNT_BAR, false, false);
//시스템 설정
var S1 = new SystemInfo("feel29na_ver_1.0");
//C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성
Main.ReqChartEx(C1,S1);
ReqCount = ReqCount+1;//요청횟수 1증가
}
}
//생성된 차트에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//신호완성 출력
Main.MessageLog("신호발생");
//매수신호 발생하면 매수주문
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1);
Main.MessageLog("매수");
}
//청산신호 발생하면 매도주문
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1);
Main.MessageLog("매수청산");
}
}
2020-08-17
2427
글번호 225298
훈sys 님에 의해서 삭제되었습니다.
2020-08-10
1
글번호 225297
edan 님에 의해서 삭제되었습니다.
2020-08-02
4
글번호 225293
답변완료
실시간 가격비교 중 GetHigh 관련문의
안녕하세요.
예스스팟을 이용해서 전략들을 만들고있는데 궁금한 부분이 생겨서 문의드립니다.
매수 이후에 타이머를 500ms 간격으로 돌면서 현재 가격과 비교하여 어느정도 이상이면 청산을 하도록하는 내용입니다.
처음에는 Account 객체안의 balance에서 제공하는 보유종목의 현재가격과 비교하였으나 급격한 변화가 잇을경우 뫀표가에 도달했음을 놓치고 지나갈수노 있다는 생각이 들더라구요.
그래서 차트객체에서 GetHigh를 통해 현재 진행중인 봉의 최고가와 비교를 하도록 하고있습니다. 그런데 종종 GetHigh에서 제대로된 값을 얻을수 없다는 참조오류가 발생하더라구요. 틱봉일때 주로 발생하는것 같긴한데 왜 이런문제가 발생하는걸까요? 해결방법이나 다른 접근방싴이 있을까요?
2020-07-30
2458
글번호 225292