커뮤니티

예스스팟 Q&A

답변완료

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
3236
글번호 224612
답변완료

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

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

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

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

사운트 출력문제

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

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

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

예스스팟 모두 실행후 실행창의 X와 같은 기능은 어떻게 구현이 가능한가요?

예스스팟 모두 실행후 실행창의 'X'와 같은 기능은 어떻게 구현이 가능한가요? 첨부파일을 보시면 'X'버튼에 해당하는 기능으로 예스팟 실행후 실행창에서 완전 지우고 싶습니다. pause 이것은 아니고 어떤 명령어가 있는지 문의 드립니다.
프로필 이미지
2ndbus
2018-09-20
2828
글번호 224604
답변완료

문의 드립니다.

안녕하세요...신호 좀 부탁드립니다. slow stochastic 지표에서 기본적으로 과열 80 침체 20으로 하고요 기간을 100 slow%k 10 slow% D10 를 기본으로 하면 이 두선이 크로스할때 모든 경우에 매수 신호와 매도 신호가 나오는데요. 신호가 너무 많아서 필요한 신호만 구분하고 쉽습니다. <<매수 조건은 이동평균선 120일선이 5도 이상의 각도로 우상향으로 올라가는 경우에 한해서만>> SLOW STOCHASTIC 20% 이하의 침체권에서 slow%k 10 slow% D10 가 골드크로스할때에 매수 화살표 신호와 함께 소리로 알림 소리가 딩동 등으로 나게 하고쉽습니다. 즉,이동 평균선이 하방으로 내려갈때에는 골드크로스 하더라도 매수 신호가 떠지 않아야합니다. <<매도 조건은 이동평균선 120일선이 5도 이하의 각도로 우하방으로 내려가는 경우에 한해서만.... SLOW STOCHASTIC 80% 이상의 과열권에서 slow%k 10 slow% D10가 데드크로스할때에 매도 화살표 신호와 함께 소리로 알림 소리가 딩동 등으로 나게 하고쉽습니다. 즉,이동 평균선이 상방으로 올라갈때에는 데드크로스 되더라도 매도 신호가 떠지 않아야합니다. 제 뜻이 잘 전달 되었는지 모르겠으나 위의 신호 꼭 좀 부탁드립니다. 감사합니다.
프로필 이미지
또미
2018-09-14
2907
글번호 224602
답변완료

과거봉 시그널을 가져오는 방법 없을까요?

안녕하세요. 시스템 정보가 있는 차트를 적용(ReqChartEx)하고 차트객체(ChartEx)를 통해 차트 정보를 가져오는 것으로 알고 있는데요. 차트객체에서 과거 봉에서 발생된 매수, 매도 시그널을 못 받는거 같아서요. 혹시 제가 못 찾은 거면 어디있는지 좀 알 수 있을까요? 시그널은 현재봉이나 바가 추가되었을 때만 정보를 가져올 수 있는건가요?
프로필 이미지
울리카
2018-09-13
2779
글번호 224599