커뮤니티

예스스팟 Q&A

답변완료

해외선물에서 거래량 많은 월물의 종목코드를 조회할 수 있나요?

안녕하세요. 해외선물 시스템 트레이딩 시 연속월물로 차트를 셋팅하지 않고, 예를 들면 오일이라는 종목에서 거래량 많은 월물을 예스스팟에서 조회해서 차트를 셋팅하려고 합니다. 가능하다면 어떻게 코딩을 해야 하나요? 그리고 해외선물 종목의 만기일을 코딩으로 조회할 수 있는 방법이 있나요? 다음과 같이 코드를 짜 봤습니다. 저는 한국투자증권 eFriend Global YesTrader를 사용 중인데, YesStock 홈페이지에서 한국투자증권 YesSpot 매뉴얼을 다운로드 받아보았는데, 매뉴얼에는 종목객체의 속성에 expirationDate 가 있습니다. 그러나 YesSpot 프로그램에서는 이 속성이 보이지 않고 다음 코드로 출력해봐도 undefined로 나옵니다. 만기일을 조회해 볼 수 있는 방법이 없나요? function Main_OnStart() { var reqChartItem = new ReqChartItem('CLX18',5,CHART_PERIOD_MINUTE,300,CHART_REQCOUNT_BAR,false,false) var chartEx = Main.ReqChartEx(reqChartItem) var marketData = Main.ReqMarketData(reqChartItem.code, reqChartItem.count) } function Main_OnRcvMarketData(MarketData) { var code = MarketData.code; Main.MessageList("code: " + code); var expirationDate = MarketData.expirationDate; Main.MessageList("expirationDate: " + expirationDate); }
프로필 이미지
브라이언7
2018-10-07
3236
글번호 224624
답변완료

한국투자증권 스팟 버그관련

한투 예스트레이더 스팟 작동관련하여 문의드립니다. 아래수식중 중간에 있는 주석 Main.MessageLog("신규편입"); //이거 없으면 작동안돼 딱 저줄에 주석이나 뭐라도 적어줘야 작동이됩니다. 주석은 빠저도 아무상관이 없는건데 저 주석이 없으면 저 주석 아래줄부터 먹통으로 작동을 안합니다. 한번 테스트 해보시고 확인 부탁드립니다. 그래서 주석을 한줄 넣어서 사용하고 있는데 시스템 버그나 문제가 있는거 같습니다만...아니면 제가 식을 잘못작성한것인지 확인 부탁드립니다. //====================================================================================== //계좌에 종목이 추가되면 function Main_OnU*pdateAccount(sAccntNum, sItemCode, lU*pdateID) { if (Start == 0 && //Start는 0이고 sAccntNum == Account1.number && //종목이 추가된 계좌가 account1 객체의 계좌이고 lU*pdateID == 30001 && //신규편입종목이고(종목추가) sItemCode == Main.GetOrderCode(MarketData1.code)) //MarketData1 객체 종목과 같은 종목이면 Main.MessageLog("신규편입"); //이거 없으면 작동안돼 { //Main.MessageLog("종목신규편입"+"종목코드"+Main.GetOrderCode(MarketData1.code)); Account1.SetBalanceItem(sItemCode, 0); //선물종목의 잔고객체 생성 if (Account1.Balance.count > 0) //잔고객체가 생성되면 { Highest = Account1.Balance.avgUnitCost; //Highest는 초기값으로 해당 종목의 평균가 저장 Lowest = Account1.Balance.avgUnitCost; //lowest는 초기값으로 해당 종목의 평균가 저장 Start = 1; //Start는 1 Main.MessageLog("잔고객체 생성"+"종목코드"+Account1.Balance.code+"평균단가"+Account1.Balance.avgUnitCost); EP = Account1.Balance.avgUnitCost; //평단가저장 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); } } }
프로필 이미지
수다리
2018-10-06
3126
글번호 224623
답변완료

1787번 관련입니다

올려주신 수식을 그대로 복사하여 실행해보니 여전히 첨부파일처럼 제대로 출력이 않되고 있읍니다. 해결 방법이 없는 걸까요 ?
프로필 이미지
파일럿
2018-10-05
3094
글번호 224622
답변완료

DDE 로 데이터 수신 시 한 글자만 전송되는 현상

안녕하세요. YesSpot 에 있는 DDE 객체를 이용해서 python 에서 데이터를 전송하는 프로그램을 만들었는데, 한 글자 밖에 전송이 안되는 현상이 발생하고 있습니다. 참고 예제: https://booja.blogspot.com/2017/05/dde.html 실행환경: Windows 10 Anaconda 64비트 설치 Python 3.6.4 Python 소스는 다음과 같습니다. ABC 를 전송했는데 예스스팟에서 첫 글자인 A 밖에 받지 못합니다. 해결책이 뭘까요? import time import win32ui, dde from pywin.mfc import object class DDETopic(object.Object): def __init__(self, topicName): self.topic = dde.CreateTopic(topicName) object.Object.__init__(self, self.topic) self.items = {} def setData(self, itemName, value): try: self.items[itemName].SetData(value) except KeyError: if itemName not in self.items: self.items[itemName] = dde.CreateStringItem(itemName) self.topic.AddItem(self.items[itemName]) self.items[itemName].SetData(value) ddeServer = dde.CreateServer() ddeServer.Create('PYTHON') ddeTopic = DDETopic('hello') ddeServer.AddTopic(ddeTopic) while 1: ddeTopic.setData('item1', 'ABC') win32ui.PumpWaitingMessages(0, -1) time.sleep(1)
프로필 이미지
브라이언7
2018-10-03
3217
글번호 224612
답변완료

빠르게 매매가 진행될때에 문제점

예스 뿐만 아니라 여러분께도 질문을 구합니다. 예시로 한가지 경우를 들자면 1. A 종목을 10계약 매수 주문을 넣었습니다. 2. A가 체결되는 도중에 손절가격에 도달해서 미체결된 내역을 취소하고 손절 주문을 넣습니다. 3. 가격이 손절가격을 찍고 바로 상승해서 미체결 취소주문의 OrderResponse가 오기전에 A 매수 주문이 체결되어 버렸습니다. 4. 따라서 OrderResponse에서는 취소할 주문번호가 존재하지 않기 때문에 오류가 발생합니다. 이러한 케이스의 오류를 해결할 수 있는 방법이 있을까요? 여러 방안으로 고민해보지만 원하는 답이 나오지 않아서 여쭤봅니다.
프로필 이미지
도비
2018-10-02
2767
글번호 224611
답변완료

일정시간 매수, 청산 수식

100분봉을 사용하면 몇일만에 신호가 발생되어 매수한 옵션종목이 바뀌게 되어 청산이 안됩니다.최초 매수한 종목이 저장되어 몇일 후에도 같은종목이 청산되는 수식 원합니다. 아래와 같이 만약 5계약을 매수 한다면 5초간격으로 1계약씩 매수되고 청산도 5초간격으로 청산하는 수식 원합니다. var Start, BE, SE; var CallCode, PutCode; function Main_OnStart() { Main.MessageList("시작"); //내부파일에 Start로 저장된 값 호출해 V에 저장 var V = Main.GetUserValue("Start"); //0이면 Start는 0 if (V == 0) Start = 0; //1이면 if (V == 1) { //Start는 1 Start = 1; //CallCode에 내부파일 Code에 저장된 값 호출해 저장 CallCode = Main.GetUserValue("Code"); } if (V == -1) { Start = 0; //Start는 -1 Start = 1; //PutCode에 내부파일 Code에 저장된 값 호출해 저장 PutCode = Main.GetUserValue("Code"); Main.SetTimer(1, 5000);//5초간격 타이머 셋팅 } } function C1_OnRiseSignal(Signal) { if (Signal.signalKind == 1 ) { Main.MessageList("매수신호발생"); Start = 1; CallCode = Option.GetATMCallRecent(0); var CallPrice = Option.GetAskByCode(CallCode,2); A1.OrderBuy(CallCode, Vo, CallPrice, 0); BE = 1; Main.SetTimer(1,5000); //Start와 종목코드 저장 Main.SetUserValue("Start", Start); Main.SetUserValue("Code", CallCode); } if (Start == 1 && Signal.signalKind == 2 ) { Start = 0; Main.MessageList("매수청산발생"); var BxPrice = Option.GetBidByCode(CallCode, 2); A1.OrderSell(CallCode, Vo, BxPrice, 0); Main.KillTimer(1); //저장값 초기화 Main.SetUserValue("Start", 0); Main.SetUserValue("Code", " "); } if (Signal.signalKind == 3 ) { Main.MessageList("매도신호발생"); Start = -1; PutCode = Option.GetATMPutRecent(0); var PutPrice = Option.GetAskByCode(PutCode, 2); A1.OrderBuy(PutCode, Vo, PutPrice, 0); SE = 1; Main.SetTimer(1,5000); //Start와 종목코드 저장 Main.SetUserValue("Start", Start); Main.SetUserValue("Code", PutCode); } if (Start == -1 && Signal.signalKind == 4 ) { Start = 0; Main.MessageList("매도청산발생"); var SxPrice = Option.GetAskByCode(PutCode, 2); A1.OrderSell(PutCode, Vo, SxPrice, 0); Main.KillTimer(2); //저장값 초기화 Main.SetUserValue("Start", 0); Main.SetUserValue("Code", " "); } } //5초단위로 잔고 체크 function Main_OnTimer(nEventID) { if (nEventID == 1 && Start == 1) { BE = BE+1; if (BE < 5) { A1.OrderBuy(CallCode, 1, 0, 1); } if (BE == 5) { Main.KillTimer(1); Main.SetTimer(2,1000); } } if (nEventID == 1 && Start == -1) { SE = SE+1; if (SE < 5) { A1.OrderBuy(PutCode, 1, 0, 1); } if (SE == 5) { Main.KillTimer(1); Main.SetTimer(2,1000); } } } } }
프로필 이미지
팡팡
2018-09-29
2761
글번호 224609
답변완료

두개의수식을 만족하는 조건

하나의 조건과 다른하나의 조건이 만족할때 사용하는 함수는 무엇인가요? 예를들어 a전략 그리고 b전략이 만족할때진입시그널 주는경우
프로필 이미지
추세신호
2018-09-28
2677
글번호 224608
답변완료

피라미딩 청산 수식관련

첨부사진처럼 피라미딩 진입이 있을때 청산신호가 2개라서 이전진입계약수가 2계약이라 총 4개가 청산되는데 2계약만 청산하고 싶은데 어떻게 해야할지 모르겠습니다. 아래수식에다 적용을 하려면 어떻게 수정해야하는지 알고 싶은데 도움부탁드리겠습니다. //스팟 시작시 function Main_OnStart() { Main.MessageList("스팟 시작"); } //------------------------------------------------------------------------------------- //차트에서 신호나오면 MarketData1 종목에 대해 주문 function Chart1_OnRiseSignal(Signal) //차트1에서 완성신호이벤트가(온라이즈시그널)) 발생하면 시그널에 그정보를 넘겨준다 { //매수진입신호 발생 if (Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count,매수주문가격,주문종류); } //매수청산신호 발생 if (Signal.signalKind == 2) { //잔고셋팅해 매수포지션 있으면 잔고수량만큼만 청산 Main.MessageList("J1매수청산"); Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { BXID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,매도주문가격,주문종류); } } //매도진입신호 발생 if (Signal.signalKind == 3) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Signal.count,매도주문가격,주문종류); } //매도청산신호 발생 if (Signal.signalKind == 4) { //잔고셋팅해 매도포지션 있으면 잔고수량만큼만 청산 Main.MessageList("J1매도청산"); Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { SXID = Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,매수주문가격,주문종류); } } }
프로필 이미지
수다리
2018-09-28
2730
글번호 224607
답변완료

사운트 출력문제

한투 예스스팟을 사용중인데요 사운드 출력을 하면 기본소리로 대체되어 나옵니다. 사운드 출력내용을 function Main_OnStart() 구문에 넣으면 시작할때 사운드가 출력되는데 다른부분에 사운드 출력문을 넣으면 사운드가 기본 삑 소리로 대체되고 지정한 사운드가 나오질 않습니다. 경로나 ₩₩ 부호가 잘못된건가 해서 확인도 해보고 다시 타이핑도 해보고 했느데 나오질 않습니다. 확인 부탁드리겠습니다. //체결통보를 받을 때 function Main_OnNotifyFill(NotifyFill) { if (Math.round(SUIK) >= 3) { Main.MessageList("수익청산"); Main.PlaySound("D:₩₩자동매매₩₩차트사운드₩₩청산멘트.wav"); } }
프로필 이미지
수다리
2018-09-26
2668
글번호 224606
답변완료

파워종목검색 사용할때 입력변수 값을 변경할 수 있나요?

input : ii(0); If CodeCategory == 1 and C[ii] < O [ii] Then Find(1); 위와 같이 수식을 작서하고 예스스팟에서 종목검색으로 검색할때 입력변수 ii의 값을 0, 1, 2, 3등 값으로 변경할수있나요?
프로필 이미지
2ndbus
2018-09-23
2749
글번호 224605