커뮤니티

예스스팟 Q&A

답변완료

왕초보

스팟 왕초보 입니다 가이드좀 부탁 드립니다 국내 현물 만 거래 합니다 일단 수식 작성 순서좀 부탁 합니다 시작 계좌 검색 잔고 검색 전일 매매 미체결안된거 파악 종목검색 검색된 종목 매수 예약 매수 실행 ----------- 여기 까지가 매수 조건 매도 1 익절 2 분할매도 조건 1,2 참고 잔고 1 개 이상 이면 중복신호 무시 잔고 0 일경우만 매수예약 이렇게 간단 하게 하고 싶읍니다 예를 들어 시작은 << 어느 부분을 검색해 공부 해야 되는지 잔고 검색은 << 어느 부분을 검색해 공부 해야 되는지 위 순서중에 빠진게 있거나 보충 하면 좋은 부분 수식은 천천히 하나씩 공부 하겟읍니다 수식 짜는 순서 중 틀린 부분이나 빠진 부분 보충 해야 되는 부분 부탁 드립니다 보통 종목 검색 으로 하면 하루에 20 개 정도 나오는데 20 개 다 체결 될경우 시스템 상 문제가 있을 까요? 5분봉 기준 검색 주기 3 분 으로 하는데 문제점 이 혹시 있을 까요 보유 종목이 50 개 넘어가면 시스템이 빠트리는 부분이 있을 까요? 최적의 계좌 보유는 몇 종목이 좋을 까요
프로필 이미지
로빈의맥주
2019-10-13
3481
글번호 225041

영원한자유 님에 의해서 삭제되었습니다.

프로필 이미지
영원한자유
2019-10-22
32
글번호 225040
답변완료

주문응답객체 누락

안녕하세요? ID = 주문코드 식으로 넣고, OnOrderResponse에서 ID가 같을 경우 OrderNum어레이에 주문번호를 추가하고, 해당어레이에 있는 주문번호만 체결통보 오면 저장하는 식으로 주문관리를 하고 있습니다. 며칠 전에도 그랬고 오늘도 주문응답객체에서 누락되는 주문이 한건 씩 발생하네요. 이전 게시물에도 누락 관련된 내용이 보이는데, 여전히 누락 발생할 여지가 있는건가요? 누락이 생기는 이유와 최소화할 수 있는 방법이 있다면 안내 부탁드립니다.
프로필 이미지
다인아빠
2019-10-11
3473
글번호 225039
답변완료

주문취소 오류

아래와 같이 특정 조건에서 미체결된 매수와 매도 주문을 취소하기 위해서 수식을 작성했습니다. 참고로 BNum와 SNum은 접수 완료 후 리턴 받은 주문의 접수번호가 저장되어 있습니다. 그런데 미체결된 주문이 없는데 if문에 진입하여 orderCancel 주문에서 주문번호를 찾을 수 없다는 메시지가 표시되네요. 주문수량을 조회하는 방법이 잘 못 된 것인가요? A1.SetUnfill(BNum); if (A1.Unfill.count > 0) { Main.MessageLog(C1.GetSTime(1,0)+":"+"매수취소"); A1.OrderCancel(BNum); } A1.SetUnfill(SNum); if (A1.Unfill.count > 0) { Main.MessageLog(C1.GetSTime(1,0)+":"+"매도취소"); A1.OrderCancel(SNum); }
프로필 이미지
yes랭귀지
2019-10-11
3653
글번호 225038

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

프로필 이미지
idnotbe
2019-10-10
6
글번호 225037

뉴하트 님에 의해서 삭제되었습니다.

프로필 이미지
뉴하트
2019-10-09
9
글번호 225036
답변완료

콜, 풋 매수처리

예스스팟 예제 부탁드립니다. 당일 콜에서 매수신호후 진입후 청산신호가 나오면 콜청산 과 풋진입 또는 콜 매수 신호중 풋 진입 신호가 나오면 풋진입 과 콜청산. 반대로 풋에서도 동일하게 적용. 풋에서 매수 진입 이후 청산 신호가 나오면 콜진입 또는 콜신호가 뜨면 콜진입 과 풋청산. 감사합니다.
프로필 이미지
브라질산아나콘다
2019-10-09
3632
글번호 225035

cs아빠 님에 의해서 삭제되었습니다.

프로필 이미지
cs아빠
2019-10-07
4
글번호 225034
답변완료

한 계좌에서 원하는 종목만 잔고함수를 구하고 싶습니다.

GetTotalCount() 함수를 쓰면 원하지 않는 종목의 수량까지 나옵니다. 이것을 원하는 특정 종목의 수량만 구하고 싶은데 A1.SetBalanceItem(M1.code, 0)를 사용해도 여전히 총계좌의 잔고수가 나옵니다.
프로필 이미지
토그
2019-10-07
3394
글번호 225032
답변완료

수식부탁드립니다.

안녕하세요. 작성해주신 아래 수식을 연결선물 차트에서 당일 첫진입신호(매수 또는 매도)가 발생하면 옵션당일행사가 콜매수 1개, 옵션당일행사가 풋매수 2개 옵션당일행사가+3호가위 콜매도 3개, 진입하고 당일 청산신호(매수 또는 매도)가 발생하면 전량청산하고 당일 매매 종료하는 수식으로 변경 요청드립니다. 감사합니다. ----------------------------------------------------------------------------------- 안녕하세요 예스스탁입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 신호발생시 주문까지만 작성해 드립니다. 지정가 주문에 대해 미체결 해소는 방법을 모르겠습니다. 해당 부분은 사용자분이 구상하셔서 추가해 보셔야 합니다. 옵션 종류는 옵션객체 속성에서 지정하시면 됩니다. 스크립트 객체설정 차트객체추가 --> 객체명 Chart1, 차트아이디 연결 옵션객체추가 --> 객체명 Option1, 일반이나 미니옵션 중 선택 계좌객체추가 --> 객체명 Account1, 계좌번호지정 var T; var Put1,Put2,Put3,BEP1,BEP2,BEP3,BXP1,BXP2,BXP3; var Call1,Call,Call3,SEP1,SEP2,SEP3,SXP1,SXP2,SXP3; function Main_OnStart() { T = 0; } function Chart1_OnRiseSignal(Signal) { //매수진입신호 발생(T가 0일때만) if (T == 0 && Signal.signalKind == 1) { //T는 1 T = 1; //풋등가부터 아래 행사가 총 3개 지정 Put1 = Option1.GetATMPutRecent(0); Put2 = Option1.GetATMPutRecent(1); Put3 = Option1.GetATMPutRecent(2); //매수주문할 종목은 매도 1~5호가 중 잔량있는 가격에서 가장 높은 호가 //매도주문할 종목은 매수 1~5호가 중 잔량있는 가격에서 가장 낮은 호가 BEP1 = Option1.GetCurrent(Put1); BEP2 = Option1.GetCurrent(Put2); BEP3 = Option1.GetCurrent(Put3); for (var i = 1; i <= 5; i++) { if (Option1.GetBid(Put1,i) > 0) BEP1 = Option1.GetBid(Put1,i); if (Option1.GetAsk(Put2,i) > 0) BEP2 = Option1.GetAsk(Put2,i); if (Option1.GetBid(Put3,i) > 0) BEP3 = Option1.GetBid(Put3,i); } //각 가격이 0이상이면 주문 if (BEP1 > 0) Account1.OrderSell(Put1, 2,BEP1,0); if (BEP2 > 0) Account1.OrderBuy(Put2,3, BEP2, 0); if (BEP3 > 0) Account1.OrderSell(Put3,4, BEP3, 0); } //매수청산 신호 발생 if (T == 1 && Signal.signalKind == 2) { //T는 2 T = 2; //매수주문할 종목은 매도 1~5호가 중 잔량있는 가격에서 가장 높은 호가 //매도주문할 종목은 매수 1~5호가 중 잔량있는 가격에서 가장 낮은 호가 BXP1 = Option1.GetCurrent(Put1); BXP2 = Option1.GetCurrent(Put2); BXP3 = Option1.GetCurrent(Put3); for (var i = 1; i <= 5; i++) { if (Option1.GetAsk(Put1,i) > 0) { BXP1 = Option1.GetAsk(Put1,i); } if (Option1.GetBid(Put2,i) > 0) { BXP2 = Option1.GetBid(Put2,i); } if (Option1.GetAsk(Put3,i) > 0) { BXP3 = Option1.GetAsk(Put3,i); } } //각 가격이 0이상이면 주문 if (BXP1 > 0) Account1.OrderBuy(Put1, 2,BXP1,0); if (BXP2 > 0) Account1.OrderSell(Put2,3, BXP2, 0); if (BXP3 > 0) Account1.OrderBuy(Put3,4, BXP3, 0); } //매도진입신호 발생(T가 0일때만) if (T == 0 && Signal.signalKind == 3) { T = -1; //콜등가부터 위 행사가 총 3개 지정 Call1 = Option1.GetATMCallRecent(0); Call2 = Option1.GetATMCallRecent(1); Call3 = Option1.GetATMCallRecent(2); //매수주문할 종목은 매도 1~5호가 중 잔량있는 가격에서 가장 높은 호가 //매도주문할 종목은 매수 1~5호가 중 잔량있는 가격에서 가장 낮은 호가 SEP1 = Option1.GetCurrent(Call1); SEP2 = Option1.GetCurrent(Call2); SEP3 = Option1.GetCurrent(Call3); for (var i = 1; i <= 5; i++) { if (Option1.GetBid(Call1,i) > 0) SEP1 = Option1.GetBid(Call1,i); if (Option1.GetAsk(Call2,i) > 0) SEP2 = Option1.GetAsk(Call2,i); if (Option1.GetBid(Call3,i) > 0) SEP3 = Option1.GetBid(Call3,i); } //각 가격이 0이상이면 주문 if (SEP1 > 0) Account1.OrderSell(Call1, 2,SEP1,0); if (SEP2 > 0) Account1.OrderBuy(Call2,3, SEP2, 0); if (SEP3 > 0) Account1.OrderSell(Call3,4, SEP3, 0); } //매도청산 신호 발생 if (T == -1 && Signal.signalKind == 4) { //T는 -2 T = -2; //매수주문할 종목은 매도 1~5호가 중 잔량있는 가격에서 가장 높은 호가 //매도주문할 종목은 매수 1~5호가 중 잔량있는 가격에서 가장 낮은 호가 SXP1 = Option1.GetCurrent(Call1); SXP2 = Option1.GetCurrent(Call2); SXP3 = Option1.GetCurrent(Call3); for (var i = 1; i <= 5; i++) { if (Option1.GetAsk(Call1,i) > 0) { SXP1 = Option1.GetAsk(Call1,i); } if (Option1.GetBid(Call2,i) > 0) { SXP2 = Option1.GetBid(Call2,i); } if (Option1.GetAsk(Call3,i) > 0) { SXP3 = Option1.GetAsk(Call3,i); } } //각 가격이 0이상이면 주문 if (SXP1 > 0) Account1.OrderBuy(Call1, 2,SXP1,0); if (SXP2 > 0) Account1.OrderSell(Call2,3, SXP2, 0); if (SXP3 > 0) Account1.OrderBuy(Call3,4, SXP3, 0); } }
프로필 이미지
dandy
2019-10-08
3281
글번호 225031