커뮤니티

예스스팟 Q&A

답변완료

문의드립니다.

예스스팟을 이용하여 해외선물 거래하고 싶습니다. 간단한 내용이지만 개인적으로 스팟으로 작성이 어렵습니다. 부탁드립니다. 07:01:00에 거래 시작 시작가보다 작으면 매도, 시작가보다 크면 매수 05:30:00에 포지션 청산
프로필 이미지
라떼처럼
2018-07-25
2431
글번호 224532
답변완료

문의드립니다

스팟에서 복합주기(일봉, 분봉)의 확장차트 생성법이 있을까요? 수식작성에서 복합주기의 경우 참조데이터로 매매하는 방법에 대해 답변받앗는데 스팟에서 참조데이터 확장차트 생성법을 몰라서 테스트를 못하고 잇네요
프로필 이미지
가이츠
2018-07-24
2398
글번호 224531
답변완료

확장차트 현재 몇개까지 만들수있는지요?

확장차트 현재 몇개까지 만들수있는지요?
프로필 이미지
2ndbus
2018-07-23
2157
글번호 224530

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

프로필 이미지
doilzul
2018-07-22
4
글번호 224529

하늘북 님에 의해서 삭제되었습니다.

프로필 이미지
하늘북
2018-07-21
27
글번호 224528
답변완료

문의드립니다

안녕하세요 현재 예스스팟을 사용하여 시험주문을 넣어보고있습니다. 아래와 같은 코드로 주문을 넣고있는데 옵션종목 매도면 GetBidByCode 를 사용하고 옵션종목 매수면 GetAskByCode를 사용하고있습니다 예) var BxCallPrice = Option1.GetBidByCode(buycallcode,5); var BxPutPrice = Option1.GetAskByCode(buyputcode,5); Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1); 첨부파일에도 보시면 아시겠지만 주문가격이 모두 0.00으로 표기되고있고 주문상태는 오류발생으로 표기되고있습니다. 다른 곳에서는 주문상태는 시험적용으로 되어있는데 주문가격은 0.00으로 표기가 되고있습니다. 저함수를 써서 주문을 넣었는데 왜 주문상태에서는 0.00으로 표기되는지 궁금합니다 var Start var buycallcode var buyputcode var sellcallcode var sellputcode var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var callQuantity; var putQuantity; var buyQuantity = 3000000; var sellQuantity = 1; function Main_OnStart() { Main.MessageLog("시작"); Start = 1; } function Chart1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/" + Signal.signalKind); //매수진입 if(Signal.signalKind ==1) { UNum = Option1.uppersATM; LNum = Option1.lowersATM; CallPrice = new Array(UNum + LNum + 1); CallCode = new Array(UNum + LNum + 1); PutPrice = new Array(UNum + LNum + 1); PutCode = new Array(UNum + LNum + 1); for(var i = -LNum; i <= UNum; i++) { if(Option1.GetCurrent(0,i) <= 2.0) { CallPrice[i+LNum] = Option1.GetCurrent(0, i); CallCode[i+LNum] = Option1.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option1.GetCurrent(1, ii) <= 2.5) { PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } CC = -1; buycallcode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; buycallcode = CallCode[iii+LNum] } } PP = -1; buyputcode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; buyputcode = PutCode[iiii+UNum]; } } Start = 1; var BuyCallPrice = Option1.GetAskByCode(buycallcode,5); callQuantity = Math.round(buyQuantity / BuyCallPrice / 250000); Account1.OrderBuy(buycallcode, callQuantity, BuyCallPrice, 1); var BuyPutPrice = Option1.GetBidByCode(buyputcode,5); putQuantity = sellQuantity; Account1.OrderSell(buyputcode, putQuantity, BuyPutPrice, 1); Main.MessageLog("선물매수"); } //매수청산 if(Start == 1 && Signal.signalKind == 2) { var BxCallPrice = Option1.GetBidByCode(buycallcode,5); var BxPutPrice = Option1.GetAskByCode(buyputcode,5); Account1.OrderSell(buycallcode, callQuantity, BxCallPrice, 1); Account1.OrderBuy(buyputcode, putQuantity, BxPutPrice, 1); Main.MessageLog("선물매수청산"); } //매도진입 if(Signal.signalKind ==3) { UNum = Option1.uppersATM; LNum = Option1.lowersATM; CallPrice = new Array(UNum + LNum + 1); CallCode = new Array(UNum + LNum + 1); PutPrice = new Array(UNum + LNum + 1); PutCode = new Array(UNum + LNum + 1); for(var i = -LNum; i <= UNum; i++) { if(Option1.GetCurrent(0,i) <= 2.0) { CallPrice[i+LNum] = Option1.GetCurrent(0, i); CallCode[i+LNum] = Option1.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option1.GetCurrent(1, ii) <= 2.5) { PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } CC = -1; buycallcode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; buycallcode = CallCode[iii+LNum] } } PP = -1; buyputcode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; buyputcode = PutCode[iiii+UNum]; } } Start = 1; var BuyCallPrice = Option1.GetBidByCode(buycallcode,5); callQuantity = sellQuantity; Account1.OrderSell(buycallcode, callQuantity, BuyCallPrice, 1); var BuyPutPrice = Option1.GetAskByCode(buyputcode,5); putQuantity = Math.round(buyQuantity / BuyPutPrice / 250000); Account1.OrderBuy(buyputcode, putQuantity, BuyPutPrice, 1); Main.MessageLog("선물매도"); } //매도청산 if(Start == 1 && Signal.signalKind == 4) { var BxCallPrice = Option1.GetAskByCode(buycallcode, 5); Account1.OrderBuy(buycallcode, callQuantity, BxCallPrice, 1); var BxPutPrice = Option1.GetBidByCode(buyputcode,5); Account1.OrderSell(buyputcode, putQuantity, BxPutPrice, 1); Main.MessageLog("선물매도청산"); } }
프로필 이미지
feelkdn
2018-07-20
2028
글번호 224527
답변완료

문의

예를 들어,매수주문 발생으로 설정된 3계약이 체결되었고 2계약이 매도 익절된 상태에서 손절신호가 발생되었다고 할 때 현재 포지션인 매수 1계약이 청산되어 무포지션 상태가 되어야 되는데, 현재 포지션 잔량이 인식되지 않아 매수 3계약을 청산하여 포지션이 2계약 매도 상태가 됩니다 손절신호시 현재 포지션 수량에 대해서만 반대신호가 나가도록 하고 또 미체결 포지션을 취소하거나 정정하는 해결 방안 알려주시면 감사하겠읍니다.
프로필 이미지
파일럿
2018-07-19
2068
글번호 224525
답변완료

문의

function Main_OnStart() { Main.MessageLog("시작") ; Main.SetTimer(5, 3000); a1.Refresh() ; } function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) { if (lUp*dateID == 30000) { OrderCode = Main.GetOrderCode(order1.code); a1.SetBalance(OrderCode, 0) ; if (a1.Balance.position != 1 && a1.Balance.position != 2 ) { Position = 0 ; cnt = 0 ; Main.MessageLog("무포지션"); } if (a1.Balance.position == 1 ) { Position = -1 ; cnt = 1 ; Main.MessageLog("매도포지션"); } if (a1.Balance.position == 2 ) { Position = 1 ; cnt = 1 ; Main.MessageLog("매수포지션"); } } } 위수식으로 하이투자증권과 nh선물에서 같이 사용하고 있는데 디버깅 내용이 틀리게 나오는 이유가 원지요 ? 위의 평션 메인업데이트어카운트 내용은 원래 평션 메인온스타트에 삽입하여 사용되었는데 에러 수정한 예스스탁의 회신된 내용으로 수정한 부분입니다. 원래식에서 매매식은 타이머로 작성해서 매매는 작동하였는데(계좌잔고수량 인신은 오류) 평션 메인업데이트어카운트로 수정한 다음부터는 매매식이 작동을 않하는 이유는 뭔가요 ? 그리고 스팟에서 종목명을 연결선물지수로 지정했는데 어떤경우에는 체결메세지에 kp200 f 1809로 표시되는 이유는 뭔지요 ? 추가 질문입니다. 온타이머 펑션으로 엑셀 셋데이타를 업로드해서 사용하는데 딜레이 없이 실시간으로 업데이트 하려면 어떤게 해야 하나요 ? 온타이머로 하니까 스팟은 작동하는데 키가 먹지 않더군요. 딜레이도 딜레이지만,,,,
프로필 이미지
파일럿
2018-07-25
2173
글번호 224524
답변완료

선물차트 적용 미니선물 거래 피라미딩 예스스팟 로직오류..

아까 전화로 문의드렸었습니다. 3개의 시스템 전부 선물에 적용하고 미니선물로 거래하는 피라미딩 로직입니다. 계좌명은 동일하게 설정하였습니다. 진입은 3개의 시스템 전부 멀쩡하게 들어갔는데, 청산이 되지 않았습니다. 예전에 1개의 시스템 가지로 테스트 했을 때에는 문제 없이 진행되는 것을 확인했었습니다. 코드 자체에 오류가 있는건가요? 한번봐주시길 부탁드립니다. 날씨가 더운데 수고하세요. var Position; var OrderCode; var BID; var SID; var Bnum; var Snum; var BuyCnt; var SellCnt; function Main_OnStart() {A1.Balance Main.MessageLog("시작"); Position = 0; BuyCnt = 0; SellCnt = 0; OrderCode = Main.GetOrderCode(miniKP.code) } function C1_OnRiseSignal(Signal) { Main.MessageLog("신호완성/" + Signal.signalKind); if (Signal.signalKind == 1) { Position = 1; BID = A1.OrderBuy(OrderCode, Signal.count, miniKP.Ask(5), 0) Main.MessageLog("미니선물 매수"); } if (Position==1 && Signal.signalKind == 2) { if (BuyCnt>0) { A1.OrderSell(OrderCode, BuyCnt, miniKP.Bid(5), 0) Main.MessageLog("미니선물 매수 청산"); BuyCnt = 0; } } if (Signal.signalKind == 3) { Position=-1; A1.OrderSell(OrderCode, Signal.count, miniKP.Bid(5), 0) Main.MessageLog("미니선물 매도"); } if (Position==-1 && Signal.signalKind == 4) { if (SellCnt>0) { A1.OrderBuy(OrderCode, SellCnt, miniKP.Ask(5), 0) Main.MessageLog("미니선물 매도 청산"); SellCnt = 0; } } } function Main_OnOrderResponse(OrderResponse) { if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; } } function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { BuyCnt = BuyCnt + 1; } if (Position == -1 && NotifyFill.orderNum == SNum) { SellCnt = SellCnt + 1; } }
프로필 이미지
ktemu10k
2018-07-17
2239
글번호 224520

파일럿 님에 의해서 삭제되었습니다.

프로필 이미지
파일럿
2018-07-18
11
글번호 224519