커뮤니티

예스스팟 Q&A

답변완료

옵션 과거 가격 조회

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

기 보유종목 매도(현물)

안녕하세요? 아래 수식 작성 부탁드립니다 (매번 큰 도움 감사드립니다.) 1) (예를들어) 삼성전자 를 10주 기보유 (스마트폰 등으로 몇일전에 매수) 2) 기 보유한 삼성전자가 예스트레이더 차트(차트명 C1)에서 시스템(시스템명: S1) 적용되어 있음 3) 시스템 S1에서 매도신호 발생 4) 예스 스팟으로 매도신호 받아서 매도 ------------------------------------- 위의 상황을 아래 수식으로 작성했을때, 이미 해당종목에 대해 보유 수량이 있음에도 매도신호가 발생을 안하네요.. 도움 부탁드립니다. (변수 선언 부분은 글에서 제거했습니다.) function Main_OnStart() { Main.MessageList("시작합니다."); Main.MessageList("C1 차트종목: ",C1.GetCode(1)); //S2차트종목코드를 불러와 종목객체를 요청 Main.ReqMarketData(C1.GetCode(1), 0, 0); Start = 0; state1 = 0; } //요청한 종목객체가 생성되어 수신되면 function Main_OnRcvMarketData(MarketData) { //현재 수신된 종목객체가 요청한 종목과 같으면 //item에 종목객체를 저장(이후에 item이 해당 종목객체로 사용됨) if (MarketData.code == C1.GetCode(1)) SSEobject = MarketData; } function C1_OnRiseSignal(Signal) { Skind = Signal.signalKind; Scode = Signal.code; Scount = Signal.count; if (Signal.signalKind == 2) { A1.SetBalance(scode,0); BxID=A1.OrderSell(Scode,A1.Balance.count,SSEobject.current,0); Main.MessageLog("매도주문"); Start1 = 0; //타이머 실행 Main.MessageLog("매도주문 후 타이머20초 시작"); Main.SetTimer(2, 1000);//1초 타이머 } } function Main_OnOrderResponse(OrderResponse) { //매수주문 접수되면 주문번호 저장 if (OrderResponse.orderID == BuyID) { BuyNum = OrderResponse.orderNum; } //매수청산주문 접수되면 주문번호 저장 if (OrderResponse.orderID == BxID) { BxNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 2) { //2번 타이머 종료 Main.KillTimer(2); //BxNum주문번호에 대한 미체결 객체 설정 A1.SetUnfillOrderNumber(BxNum); //설정된 미체결객체에 잔량이 있으면 if (A1.Unfill.count > 0) { //BxNum주문 정정 (매수1호가로 정정) if (A1.Unfill.price != SSEobject.Bid(1)) { BxID = A1.OrderReplacePrice(BxNum, SSEobject.Bid(1)); Main.MessageLog("매도 정정"); Main.SetTimer(3, 1000); } } } if (nEventID == 3) { //2번 타이머 종료 Main.KillTimer(3); //BxNum주문번호에 대한 미체결 객체 설정 A1.SetUnfillOrderNumber(BxNum); //설정된 미체결객체에 잔량이 있으면 if (A1.Unfill.count > 0) { //BxNum주문 정정 (매수1호가로 정정) if (A1.Unfill.price != SSEobject.Bid(1)) { BxID = A1.OrderReplacePrice(BxNum, SSEobject.Bid(1)); Main.MessageLog("매도 정정"); } } } }
프로필 이미지
adino30
2019-06-26
3264
글번호 224906
답변완료

확장차트로 거래 시 문의

var callCode = Option.GetCodeByExercisePrice(0, exercisePrice); // 0 : 최근월물 콜 // 시스템명, 일반수식 YL_TYPE_NORMAL, 입력변수 Array, 비용/수량 설정, 강제청산 설정 var callSysInfo = new SystemInfo("Test_Signal_1",YL_TYPE_NORMAL,null,null,null); //콜 차트, 1분봉, 10000개,수정주가x,갭보정x var callChartItem = new ReqChartItem(callCode, 1, CHART_PERIOD_MINUTE, 10000, CHART_REQCOUNT_BAR, false, false); // ReqChartItem, SystemInfo, IndicatorInfo, ReqRefItem Main.ReqChartEx(callChartItem, callSysInfo, null, null); 위의 식으로 테스트해보니, 스팟에서 차트와 "Test_Signal_1" 시스템이 걸리기는 합니다. 1. 스팟을 적용할 때 "자동주문" 으로 설정을 하여도, 스팟에서 차트를 열어보면 "Test_Signal_1" 시그널이 "시험" 으로 걸려있습니다. "Test_Signal_1" 을 "자동" 으로 바꾸어 자동매매가 되게 하려면 어떻게 해야 하나요? 2. 이 하나의 스팟전략 안에서 "Test_Signal_1" 뿐만 아니라 "Test_Signal_2", "Test_Signal_3" 등을 확장차트로 불러오고, 모두 같은 종목을 거래한다고 가정하겠습니다. 이 때 상황에 따라 시그널을 허용하게도 하고 무시하게도 하고 싶습니다. 시그널이 발생하였을 때, Main_OnRiseSignal() 등에서 이것이 "Test_Signal_1" 로부터 온 것인지, "Test_Signal_2" 에서 온 것인지를 판단할 수 있나요?
프로필 이미지
idnotbe
2019-06-25
3189
글번호 224905
답변완료

종목자동검색 문의

안녕하세요 예스스팟으로 정해진 검색식을 이용하여 장중에 조건에 맞는 종목을 찾아서 매매하고 싶습니다 전종목을 실시간으로 검색해서 자동매매할 수 있나요?
프로필 이미지
huma80
2019-06-24
3469
글번호 224904
답변완료

수식 수정 부탁드립니다.(에러)

잘 작동을 하다가 아래와 같은 에러메시지가 뜨면서 작동을 멈춥니다. 특히, 신규종목이 추가될때 에러가 발생하는듯 합니다. 78번줄 'TypeError : Cannot read property 'code' of undefined' 문제점과 해결책을 알려주시면 감사하겠습니다. ================================================================ var Nth = 0; var ItemCode = new Array(200); var ItemObject = new Array(200); var ItemHigh = new Array(200); var Bnum; function Main_OnStart() { Nth = 0; Bnum = Account1.GetTheNumberOfBalances() Main.MessageList("잔고종목수",Bnum); if (Bnum > 0) { //계좌의 잔고리스트에서 첫번째 잔고 셋팅 Account1.SetBalanceIndex(Nth);//잔고는 순번이 0부터 시작 //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //1번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } } //요청한 종목객체 수신되면 function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체수신",MarketData.code); //수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에 if (MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 ItemHigh[Nth] = 0; //ItemHigh의 [Nth]방의 값을 0으로 셋팅 (이후 최고값 계산해 저장할 변수) Main.MessageList(Nth,"번째","종목객체생성완료 : ",ItemObject[Nth].code); //순번은 1 증가 Nth = Nth+1; //종목객체 수신완료되면 다음 종목 종목객체 요청 if (Bnum > 0) { //계좌의 잔고리스트에서 다음 순번 잔고 셋팅 Account1.SetBalanceIndex(Nth); //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //Nth번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } } } //잔고에 종목이 추가된다면 function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) //*삭제 { if (sAccntNum == Account1.number && lUp*dateID == 30001) //*삭제 { Nth = Nth+1; //1번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } //종목객체 시세 업데이트 function Main_OnUp*dateMarket(sItemCode, lUp*dateID)// *제거 { //편입된 종목수 만&#53380;만 수행 for (var i = 0; i < Nth; i++) { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)// *제거 { Main.MessageList("-----------------------------------------------"); Main.MessageList(ItemObject[i].code,"업데이트"); //잔고셋팅 Account1.SetBalanceItem(ItemObject[i].code,0); //종목편입 이후의 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i] = ItemObject[i].current; } //매수잔고 if (Account1.Balance.position == 2) { //현재가가 평균단가 대비 10%이상 상승하면 목표이익 매도 if (ItemObject[i].current >= Account1.Balance.avgUnitCost*1.10) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("수익청산 : ",ItemObject[i].code,"종목객체삭제"); } // 현재가가 평균단가 대비 3%이상 하락하면 손절매도 if (ItemObject[i].current <= Account1.Balance.avgUnitCost*0.97) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("손절청산 : ",ItemObject[i].code,"종목객체삭제"); } //현재가가 평균단가 대비 7% 이상 상승후 평균단가+5%까지 하락하면 매도주문 if (ItemHigh[i] >= Account1.Balance.avgUnitCost*1.07 && ItemObject[i].current <= Account1.Balance.avgUnitCost*1.05) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("TR청산 : ",ItemObject[i].code,"종목객체삭제"); } } Main.MessageList("-----------------------------------------------"); Main.MessageList("종 목 : ",ItemObject[i].code); Main.MessageList("평균단가 : ",Account1.Balance.avgUnitCost); Main.MessageList("현 재 가 : ",ItemObject[i].current); Main.MessageList("진입최고 : ",ItemHigh[i]); } } }
프로필 이미지
몬스터
2019-06-27
3577
글번호 224903
답변완료

모의 거래 옵션 잔고리스트 개수 문의

안녕하십니까? 수고하십니다. 문의드리고자 하는 바는 아래와 같습니다. 옵션 모의거래 테스트를 하면서 GetTheNumberofBalances를 이용하여 잔고리스트의 개수를 불러오고자 했습니다. 하지만 분명 계좌 잔고에는 옵션 종목이 4개가 있는데 위 함수를 이용하여 잔고리스트 수를 불러오면 10개로 나옵니다. 잔고에 있는 옵션을 청산하고 1개만 남겨도 잔고리스트의 수는 10개로 나옵니다. 해당 부분내용은 아래와 같습니다. 참고로 모의계좌번호 일치 확인했습니다. 그리고 추가적인 문의사항은 지금은 6월인데 아래 date결과가 5월로 나옵니다. 분명 컴퓨터에 뜨는 날은 오늘로 뜨는데 말이죠 이부분도 함께 문의드립니다. 감사합니다. var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); var Month = d.getMonth(); var SCallCode, BCallCode; var SPutCode, BPutCode; var IDPB, IDPS, IDCS, IDCB; var NumPB, NumPS, NumCS, NumCB; var entryBPutCode, entrySPutCode, entrySCallCode, entryBCallCode; var amount = 20;//매매수량 function Main_OnStart() { Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--시작--"); var num = A.GetTheNumberOfBalances(); if (HHMMSS >= 90100 && HHMMSS <= 155000 && PstEntry == 0) { Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"num",num); for (var i = 0; i < num; i++) { A.SetBalance(i); if (A.Balance.position == 1) { if (O.GetDelta(A.Balance.code) < 0) { SCallCode = A.Balance.code; Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"SCallCode",A.Balance.code,O.GetDelta(A.Balance.code)); } else { SPutCode = A.Balance.code; Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"SPutCode",A.Balance.code,O.GetDelta(A.Balance.code)); } } else { if (O.GetDelta(A.Balance.code) < 0) { BPutCode = A.Balance.code; Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"BPutCode",A.Balance.code,O.GetDelta(A.Balance.code)); } else { BCallCode = A.Balance.code; Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"BCallCode",A.Balance.code,O.GetDelta(A.Balance.code)); } } } Main.SetTimer(1, 5000); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--잔고 내 옵션보유 확인 후 5초 타이머셋--"); } if (HHMMSS >= 90100 && HHMMSS <= 153500 && PstEntry == 1) { Main.SetTimer(2, 5000); Main.MessageList(getYYYYMMDD(),getHHMMSSS(),"--포지션 진입 준비--"); Main.SetTimer(3, 30000); } }
프로필 이미지
rayen
2019-06-17
3212
글번호 224902
답변완료

선물 포지션 전환 방법 문의드립니다.

안녕하십니까. 선물 포지션을 전환할 때 YesSpot으로는 어떻게 해야 하는지요? 예를 들어 선물 1계약을 매수로 보유하다가 매도 포지션으로 바꾸고 싶으면 무조건 2계약을 매도해야 하는 것인가요?
프로필 이미지
좋은밤
2019-06-14
3260
글번호 224899