커뮤니티

예스스팟 Q&A

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

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

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

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

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

프로필 이미지
영원한자유
2019-10-06
4
글번호 225030
답변완료

스팟 수식문의드립니다.

var JCODE; var Highest = 0; var Lowest = 0; function Main_OnStart() { Highest = 0;//highest는 0 Lowest = 0;//lowest는 0 JCODE = Main.GetOrderCode(Chart1.GetCode(1)); Account1.SetBalance(Main.GetOrderCode(Chart1.GetCode(1)), 0); } //계좌에 종목이 추가되면 function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) { Account1.SetBalanceItem(Main.GetOrderCode(Chart1.GetCode(1)), 0); //선물종목의 잔고객체 생성 if (Account1.Balance.count > 0) //잔고객체가 생성되면 { Highest = Account1.Balance.avgUnitCost; //Highest는 초기값으로 해당 종목의 평균가 저장 Lowest = Account1.Balance.avgUnitCost; //lowest는 초기값으로 해당 종목의 평균가 저장 JCODE = Main.GetOrderCode(Chart1.GetCode(1)); Account1.SetBalance(Main.GetOrderCode(Chart1.GetCode(1)), 0); Account1.Refresh() Main.MessageLog("계좌변동발생"+"최고가"+Highest+"최저가"+Lowest+"현재가"+Account1.Balance.current+"코드"+JCODE); } } //============================================================================================================== //종목의 시세가 업데이터 되면 function Main_OnUp*dateMarket(sItemCode, lUp*dateID) { //Start가 1이 된 상태(선물이 계좌에 신규편입되고 잔고객체생성 완료)에서 선물종목 가격이 변경되면 if (sItemCode == JCODE && lUp*dateID == 20001 && Highest != 0 && Lowest != 0) { //현재 시세가 highest보다 크면 highest에 현재 시세 저장(잔고편입이후의 최고가 계산) if (Account1.Balance.current > Highest) { Highest = Account1.Balance.current; Main.MessageLog("진입이후 최고가 갱신"+Highest); } //현재 시세가 lowest보다 작으면 lowest에 현재 시세 저장(잔고편입이후의 최저가 계산) if (Account1.Balance.current < Lowest) { Lowest = Account1.Balance.current; Main.MessageLog("진입이후 최저가 갱신"+Lowest); } } } 위의 수식 온업데이트 마켓에서 종목객체 Marketdata1을 추가없이 sItemCode == JCODE 라고 넣으면 작동을 안합니다. 종목객체 Marketdata1을 추가하고 sItemCode == Main.GetOrderCode(Chart1.GetCode(1))를 넣으면 실행이 됩니다. 종목객체 Marketdata1를 추가하는거랑 sItemCode == Main.GetOrderCode(Chart1.GetCode(1))는 관계가 없는거 아닌가요? 저는 종목객체 Marketdata1를 추가하지 않고 chart1의 종목을 바꿀때마다 자동으로 바뀌게 사용하고 싶은데 어떻게 표현해야하나요?
프로필 이미지
수다리
2019-10-05
3406
글번호 225029
답변완료

개별종목 분봉 데이터 몇년치 수집할 수 있는지요?

1개의 종목에 대해서 5년치 분봉 수집가능한지요?
프로필 이미지
나이스맨
2019-10-03
3326
글번호 225028
답변완료

종목검색 범위

안녕하세요. 종목검색 범위를 지정할 수 있나요? 종목검색시 시간이 좀 많이 걸리고 서버과부하 염려 메시지로 실패하는 경우가 있습니다. 패킷양을 줄이고자 1차로 걸러내어 관심종목에 넣어두고 2차로 검색시 관심종목 안에 종목중에서만 검색 되도록 하는 기능이 있는지요? 예스랭귀지, 예스스팟 둘중 해당 기능이 있으면 방법을 알려주세요. 수동으로 하는 방법은 게시판 에 답글로 확인하여 익혔습니다. 감사합니다.
프로필 이미지
순두부남
2019-10-01
3439
글번호 225017
답변완료

다중 종목검색

안녕하세요. 스팟으로 실전매매 경험이 없고 공부하고 있습니다. 종목검색 하나 실행하면 5~10초(그때그때 다름) 걸리는데 스팟식으로 종목검색식 여러개를 순서대로 검색할 수 있는지요? 만약 가능하다면 다음과 같은 동작을 구현하고 싶습니다. 가이드 수식 부탁드립니다. 감사합니다. ■ 동작순서 1. 타이머지정(9시부터 1시간 간격) 2. 타이머 동작(9시) ☞ 사용자종목검색1~3 검색 ☞ 검색된 종목 모두 차트객체생성(중복제거) ☞ 전체 차트객체 매수신호 대기 ☞ 매수신호 발생시 주문 3. 타이머 동작(10시) ☞ 사용자종목검색1~3 재검색 ☞ 검색된 종목 다음과 같이 판단하여 차트객체생성 - 이미 생성된 차트객체와 동일한 종목은 차트객체 유지 - 기존에 없던 종목은 차트객체 생성 - 9시에 검색된 종목이 10시에 검색된 종목에 없으면 차트객체 삭제 - 새로 검색된 종목에 없어졌더라도 이미 주문이 들어간 종목은 차트객체 유지 (계좌확인으로 해야하는지??) ☞ 전체 차트객체 매수신호 대기 ☞ 매수신호 발생시 주문
프로필 이미지
순두부남
2019-09-30
3590
글번호 225016
답변완료

수식부탁드립니다.

예스랭귀지에서 종목 선정 로직과 매매방법 로직을 만들었는데 예스스팟에서 종목선정로직의 이름이 123 이라고하면 123을 사용해서 검색을하고 매순간 검색된 조건의 종목이 나타나면 매매방법(456)을 사용해서 매매가 이뤄지도록 할수있는지 궁금합니다. 가능하다면 수식부탁드려도 될까요?
프로필 이미지
하얀귤
2019-09-28
3499
글번호 225015
답변완료

1928 답글에 대한 추가 질문

답변으로 작성해 주신 코드 감사드립니다. 1928번의 내용은 검색된 종목으로 하는 방식인 것 같습니다. 종목검색 대신 관심종목에 있는 종목을 이용하는 방식으로 변형 부탁드리겠습니다. 감사합니다.
프로필 이미지
cs아빠
2019-09-27
3642
글번호 225014