커뮤니티

예스스팟 Q&A

답변완료

시스템트레이딩 시스템구매

안녕하세요 시스템시장에서 시스템을 구매하려고 하는데 시스템들어가면 왜 구매자가 "0"명으로 나오는건지해서요 정녕 단한명도 구매자가 없는건지 아니면 단순오류표기인건지해서 문의드립니다.
프로필 이미지
윤종신보험
2019-07-23
3341
글번호 224932

wjddmsl 님에 의해서 삭제되었습니다.

프로필 이미지
wjddmsl
2019-07-23
2
글번호 224931
답변완료

해외옵션 관련 에러수정

안녕하세요. 아래의 시스템으로 선물 신호를 받아 해외 선물 옵션을 거래하려하는데, 에러가 발생합니다. 에러를 수정해주시면 감사하겠습니다. =============================================================================== /*스크립트시작-----------------------------------------------------*/ var Start; var BuyC1_code; var BuyC2_code; var BuyP1_code; var BuyP2_code; var SellC1_code; var SellC2_code; var SellP1_code; var SellP2_code; function Main_OnStart() { Main.MessageLog("시작"); Start = 0; } function Chart1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); //Buy 신호발생 if (Signal.signalKind == 1 ) { Start = 1; BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드 BuyP2_code = Option.GetATMPutRecent(2,0); //풋 ATM+2 종목코드 SellP1_code = Option.GetATMPutRecent(0,0); //풋 ATM 종목코드 var BuyC2_price = Option.GetCurrent(BuyC2_code); var BuyP2_price = Option.GetCurrent(BuyP2_code); var SellP1_price = Option.GetCurrent(SellP1_code); var Vol = Signal.count; //신호수량 Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price, 1); Account1.OrderBuy(BuyP2_code, Vol*2, BuyP2_price, 1); Account1.OrderSell(SellP1_code, Vol, SellP1_price, 1); Main.MessageLog("상방합성선물매수"); } //매수청산신호 if (Start == 1 && Signal.signalKind == 2 ) { //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,0,1); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,0,1); } } Main.MessageLog("상방합성선물매수청산"); } } //Sell 신호발생 if (Signal.signalKind == 3 ) { Start = 1; BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드 SellC1_code = Option.GetATMCallRecent(0,0); //콜 ATM 종목코드 BuyP2_code = Option.GetATMPutRecent(2,0); //풋 ATM+2 종목코드 var BuyC2_price = Option.GetCurrent(BuyC2_code); var SellC1_price = Option.GetCurrent(SellC1_code); var BuyP2_price = Option.GetCurrent(BuyP2_code); var Vol = Signal.count; //신호수량 Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price , 1); Account1.OrderSell(SellC1_code, Vol, SellC1_price , 1); Account1.OrderBuy(BuyP2_code, Vol*2, BuyP2_price, 1); Main.MessageLog("하방합성선물매도"); } //매도청산신호 if (Start == 1 && Signal.signalKind == 4 ) { //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,0,1); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,0,1); } } Main.MessageLog("하방합성선물매도청산"); } } }
프로필 이미지
몬스터
2019-07-20
3274
글번호 224930
답변완료

타이머질문

안녕하세요. 종목검색에 타이머를 5초로 설정해뒀는데, 종목검색이 5초가 넘게걸리면 어떻게되나요? 종목검색이 끝난후 5초후 다시실행하나요?
프로필 이미지
깅창
2019-07-16
3292
글번호 224919
답변완료

재접속

해외선물에 새벽 6시 5분이면 재접속이 뜨는데 예스스팟으로 자동으로 로그인 시킬 수 있나요 ? 그리고 중간에 인터넷 접속이 끊어져도 재로그인 시킬수 있나요 ?
프로필 이미지
구다이전설
2019-07-13
3438
글번호 224918

퀀트드래곤 님에 의해서 삭제되었습니다.

프로필 이미지
퀀트드래곤
2019-07-08
0
글번호 224917
답변완료

옵션 과거 가격 조회

스팟에서 옵션 과거의 가격을 조회하는 방법이, 차트나 확장차트 외에는 없나요? 옵션 객체에서 바로 알 수 있는 방법 등이 있는지요? 몇 년치의 과거 가격이 궁금한 것이 아니라, 전일이나 전전일 등 과거 5일 이내 정도의 일봉 정도라도 참고가 되었으면 좋겠습니다.
프로필 이미지
idnotbe
2019-07-03
3441
글번호 224911
답변완료

옵션의 역사적변동성과 내제변동성의 차이를 통한 매매를 하고싶습니다

옵션의 역사적변동성과 내제변동성의 차이를 통한 매매를 하고싶은데 내제변동성은 알려주는 함수가있는데 역사적변동성은 알려주는 함수가 없는거같아요. option객체중 volatility를 사용하면 되는건가요? 콜 옵션 중에서 atm부터 가장 deep otm까지 돌면서 내제변동성이 역사적변동성보다 큰 종목중 가장 atm에 가까운 종목을 찾고싶은데 어떻게 코딩하면 되나요 for(var i =0; i<Option1.lowersATM, i++) { if(Option1.GetImpliedVolatility(0, i) > Option1.Volatility) } 이와 비슷하게 나올거같긴한데 i가 0부터 시작하니까 atm 부터 끝의 호가까지 돌면서 서로 차례대로 비교하는게 맞나요? "> Option1.Volatility" 이 부분이 아마 틀릴거같고 Option1.GetImpliedVolatility(0, i) 이 부분에서 i를 써주면 atm부터 찾는건지 모르겠네요 답변부탁드릴게요. 감사합니다
프로필 이미지
퀀트드래곤
2019-06-28
3437
글번호 224910
답변완료

해선 옵션 관련

아래 국선용 합성시스템을 해선의 옵션에도 적용하고 싶습니다. NH선물의 YesGrobal을 사용하는데, 1. 설정에 "옵션민감도" 등의 선택란이 없어 옵션에 대한 정보를 못가져오는지 우선 GetRemainDays에 문제가 발생하고 2. GetAskByCode 등의 함수에도 문제가 발생하고 있습니다. 아래의 시스템을 해선에서도 사용할 수 있도록 수정 부탁드립니다. ====================================================================== /*스크립트시작-----------------------------------------------------*/ var Start; var BuyC1_code; var BuyC2_code; var BuyP1_code; var BuyP2_code; var SellC1_code; var SellC2_code; var SellP1_code; var SellP2_code; function Main_OnStart() { Main.MessageLog("시작"); Start = 0; //옵션 Day청산이면 타이머셋팅 5초간격 if (Option.GetRemainDays(0,0) == 1) { Main.SetTimer(1, 5000); } } function Chart1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); //Buy 신호발생 if (Signal.signalKind == 1 ) { Start = 1; BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드 var BuyC2_price = Option.GetAskByCode(BuyC2_code,2); var Vol = Signal.count; //신호수량 Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price, 0); Main.MessageLog("상방합성선물매수"); } //매수청산신호 if (Start == 1 && Signal.signalKind == 2 ) { //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,Option.GetAsk(cc, 5),0); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,Option.GetBid(cc, 5),0); } } Main.MessageLog("상방합성선물매수청산"); } } //Sell 신호발생 if (Signal.signalKind == 3 ) { Start = 1; BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드 var BuyC2_price = Option.GetAskByCode(BuyC2_code,2); var Vol = Signal.count; //신호수량 Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price , 0); Main.MessageLog("하방합성선물매도"); } //매도청산신호 if (Start == 1 && Signal.signalKind == 4 ) { //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,Option.GetAsk(cc, 5),0); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,Option.GetBid(cc, 5),0); } } Main.MessageLog("하방합성선물매도청산"); } } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //만기일 15시 이후이면 if (nEventID == 1 && HHMMSS >= 150000) { //타이머종료 Main.KillTimer(2); //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산하고 차월물로 진입 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,Option.GetAsk(cc, 5),0); //차근월물 코드 찾기 var strike = Option.GetExercisePrice(cc); //잔고종목이 콜이면 if (cc == Option.GetCodeByExercisePrice(0,strike)) var NextMonth = Option.GetCodeByExercisePrice(2, strike); else //잔고종목이 풋이면 var NextMonth = Option.GetCodeByExercisePrice(3, strike); //동일행사가의 차근월물 매도주문 Account1.OrderSell(NextMonth,vv,Option.GetBid(NextMonth,5),0); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,Option.GetBid(cc, 5),0); //차근월물 코드 찾기 var strike = Option.GetExercisePrice(cc); //잔고종목이 콜이면 if (cc == Option.GetCodeByExercisePrice(0,strike)) var NextMonth = Option.GetCodeByExercisePrice(2, strike); else //잔고종목이 풋이면 var NextMonth = Option.GetCodeByExercisePrice(3, strike); //동일행사가의 차근월물 매수주문 Account1.OrderBuy(NextMonth,vv,Option.GetAsk(NextMonth,5),0); } } } } }
프로필 이미지
몬스터
2019-06-27
3384
글번호 224908
답변완료

수식 수정 부탁드립니다.

아래의 시스템은 진입 -> 청산 식으로 진행될때 옵션을 진입,청산는 시스템인데, 선물 신호가 진입 -> 청산과 진입 -> 리버스가 혼재되어 발생합니다. 선물 신호가 혼재되어 발생될때 함께 진입과 청산을 할 수 있는 식으로 수정 부탁드립니다. ================================================================ /*스크립트시작-----------------------------------------------------*/ var Start; var BuyC1_code; var BuyC2_code; var BuyP1_code; var BuyP2_code; var SellC1_code; var SellC2_code; var SellP1_code; var SellP2_code; function Main_OnStart() { Main.MessageLog("시작"); Start = 0; //옵션 Day청산이면 타이머셋팅 5초간격 if (Option.GetRemainDays(0,0) == 1) { Main.SetTimer(1, 5000); } } function Chart1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); //Buy 신호발생 if (Signal.signalKind == 1 ) { Start = 1; BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드 var BuyC2_price = Option.GetAskByCode(BuyC2_code,2); var Vol = Signal.count; //신호수량 Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price, 0); Main.MessageLog("상방합성선물매수"); } //매수청산신호 if (Start == 1 && Signal.signalKind == 2 ) { //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,Option.GetAsk(cc, 5),0); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,Option.GetBid(cc, 5),0); } } Main.MessageLog("상방합성선물매수청산"); } } //Sell 신호발생 if (Signal.signalKind == 3 ) { Start = 1; BuyC2_code = Option.GetATMCallRecent(2,0); //콜 ATM+2 종목코드 var BuyC2_price = Option.GetAskByCode(BuyC2_code,2); var Vol = Signal.count; //신호수량 Account1.OrderBuy(BuyC2_code, Vol*2, BuyC2_price , 0); Main.MessageLog("하방합성선물매도"); } //매도청산신호 if (Start == 1 && Signal.signalKind == 4 ) { //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,Option.GetAsk(cc, 5),0); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,Option.GetBid(cc, 5),0); } } Main.MessageLog("하방합성선물매도청산"); } } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //만기일 15시 이후이면 if (nEventID == 1 && HHMMSS >= 150000) { //타이머종료 Main.KillTimer(1); //전체 종목수 var num = Account1.GetTheNumberOfBalances(); //전체 종목 중 옵션만 청산하고 차월물로 진입 for(var i = 0 ; i < num ; i++) { //잔고셋팅 Account1.SetBalance(i); //옵션함수로 해당 종목이 옵션인지 확인 if (Option.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.count > 0) { //종목코드 var cc = Account1.Balance.code; //잔고수량 var vv = Account1.Balance.count; //매도포지션이면 if (Account1.Balance.position == 1) { //청산 Account1.OrderBuy(cc, vv,Option.GetAsk(cc, 5),0); //차근월물 코드 찾기 var strike = Option.GetExercisePrice(cc); //잔고종목이 콜이면 if (cc == Option.GetCodeByExercisePrice(0,strike)) var NextMonth = Option.GetCodeByExercisePrice(2, strike); else //잔고종목이 풋이면 var NextMonth = Option.GetCodeByExercisePrice(3, strike); //동일행사가의 차근월물 매도주문 Account1.OrderSell(NextMonth,vv,Option.GetBid(NextMonth,5),0); } //매수포지션이면 if (Account1.Balance.position == 2) { //청산 Account1.OrderSell(cc, vv,Option.GetBid(cc, 5),0); //차근월물 코드 찾기 var strike = Option.GetExercisePrice(cc); //잔고종목이 콜이면 if (cc == Option.GetCodeByExercisePrice(0,strike)) var NextMonth = Option.GetCodeByExercisePrice(2, strike); else //잔고종목이 풋이면 var NextMonth = Option.GetCodeByExercisePrice(3, strike); //동일행사가의 차근월물 매수주문 Account1.OrderBuy(NextMonth,vv,Option.GetAsk(NextMonth,5),0); } } } } }
프로필 이미지
몬스터
2019-06-27
3252
글번호 224907