커뮤니티

예스스팟 Q&A

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

프로필 이미지
cs아빠
2019-08-10
3
글번호 224957
답변완료

시세조회 건주제한 오류가 뜨는데...

시장 상황에 따라서 종목수가 많아지는 경우가 있어서 위와 같은 에러가 뜹니다. 혹시 검색식이 A, B가 있을 때, 현재는 Main.ReqPowerSearch("A"); 이런식으로 종목을 검색하고 있는데 A의 종목수가 30종목을 넘을 시 B 검색식으로 종목을 검색하라는 함수를 짜주실수 있으실까요..?
프로필 이미지
오전만트레이딩
2019-08-09
3485
글번호 224956
답변완료

질문합니다.

[check_order_ok]가격 제한폭 초과[737.40000][865.600000][106P9000] : 20003 오류 관련해서 질문드립니다. 코스피건 코스닥이건 꼭 주문시간이 090000 정각에 에러가 이렇게 납니다. 위 오류는 찾아보니 지정가로 주문하여 그 호가에 가격이 없을때 나는 오류라고 하더라고요. 아래 식과 같이 고친다고 고쳐보았는데.. 그래도 에러가 나네요.ㅋ 장전에 현재가를 넣고 장전이 아닐때는 지정가를 넣긴 합니다만. 090100 이런식으로 시간으로 해결을 해야 하는것인지.. 아니면 유효한 객체등이 있는것인지 알려주시면 감사하겠습니다. if (MarketData1.open == 0) // 장전이라면 현재가 주문 { if (Jkind == 1) // { FID = A1.OrderBuy(Jcode, Jcount, 0, 1); }
프로필 이미지
절제9단
2019-08-07
3150
글번호 224952
답변완료

도움 부탁드립니다.

안녕하세요.153600시간에 시장가로 청산주문 넣는 예스스팟수식입니다. 코스닥선물150에서 어제 사이드카가 발동되어서인지, 마감동시호가에 아래의 시장가 주문이 접수가 안되는 경우가 발생되었습니다. (시장가 주문불가라는 메세지가 뜸) 근 1년간 아무런 문제없이 시장가 청산 잘 되었음. 그래서 시장가 대신에 현재가+50틱 지정가로 청산주문을 넣는 수식으로 변경하려 합니다. 염치없지만, 수정 부탁드립니다. function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 153600 ) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Option1.GetCurrent(Account1.Balance.code) > 0) { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,0,1); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1) } } else { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,0,1); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1) } } } } } }
프로필 이미지
ujm
2019-08-06
3145
글번호 224951
답변완료

주문 횟수 제한 문의드립니다.

1. 조회 횟수관련 질문드립니다. 시세 조회는 횟수 제한이 15초당 60회, 주문은 15초당 90회로 알고 있는데, 시세 조회(Main.ReqMarketData)는 spot 전량당 각각 조회 횟수를 카운트하는 것으로 알고 있습니다. 주문의 경우도 1) 각 spot 전략당 횟수를 카운트 하는지 2) 계좌당 횟수를 카운트 하는지 3) ID당 횟수를 카운트 하는지 문의 드립니다. 그리고 ID당 횟수를 카운트한다면 위탁계좌로 운영하는 타인의 계좌에서 주문나간 건도 카운트 합산에 포함되나요? 2. 주문 횟수 제한에 걸려 [6131] spot 메뉴 '전략' 창 부분 '종류' 부분에 '제한'이라는 빨간색 글이 나타나면 이후 spot 실행이 계속해서 정지되던데 정확히 어떤 경우에 발행하나요. 1) 단순히 주문 횟수 제한이 한 번이라도 걸리면 제한되는지 2) 반복된 주문 횟수 제한으로 걸린경우 제한되는지 궁금합니다. 이 경우 당일 주문이 제한되는지 spot을 다시 실행하면 되는지 궁금합니다. spot으로 주식 전략을 여러개 추가하다 보니 횟수 제한이 궁금하여 문의 드립니다.
프로필 이미지
nollae
2019-08-04
3102
글번호 224949

function Main_OnNotifyFill(NotifyFill) 질문

안녕하세요? 매번 도우심 감사드립니다. function Main_OnNotifyFill(NotifyFill)의 동작에 대해 질문있습니다. 만약 A라는 종목을 10,000주 주문을 했는데, 최초 체결 수량이 2,000주, 이어서 두번에 걸쳐 4,000주, 4,000주 가 체결이 된다면, function Main_OnNotifyFill(NotifyFill) 함수는 매번 체결 될때마다 호출이 되나요?? 아니면, 최초 2,000주 체결때에만 호출되고 나머지 두번의 4,000주 체결시에는 호출이 안되는지? 만약, 매번 체결시마다 호출이 된다면 (해당 예시에서는 3번) 각 호출때마다 NotifyFill.fillCount 는 2,000 / 4,000 / 4,000 으로 셋팅 되는지?? 바쁘시더라도 확인 부탁드립니다.
프로필 이미지
adino30
2019-08-02
3212
글번호 224948
답변완료

보유종목 수량 추가시 자동청산로직 추가부탁합니다.

안녕하세요? 하기의 로직은 신규 추가 종목에 대해서는 잘동작하지만, 기존 보유종목의 분할매수로 인해서 수량이 추가되는 변동이 있을때는 인식을 못하는 것 같습니다. 따라서, 보유종목의 수량 추가에 대해서도 자동으로 수량인식되어 올바르게 청산될수 있도록 수정부탁드립니다. 특히, 수량이 추가되었을때 평균매수가격에 오류가 납니다. ------------------------------------------------------------------- 4 var Nth = 0; var ItemCode = []; var ItemObject = []; var ItemHigh = []; var Bnum; function Main_OnStart() { Nth = 0; Bnum = Account1.GetTheNumberOfBalances() Main.MessageList("잔고종목수",Bnum); if (Bnum > 0) { //계좌의 잔고리스트에서 첫번째 잔고 셋팅 Account1.SetBalanceIndex(Nth);//잔고는 순번이 0부터 시작 //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { Main.MessageList("보유종목 종목객체요청시작-------"); //1번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } } //요청한 종목객체 수신되면 function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체수신",MarketData.code); //수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에 if (MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 ItemHigh[Nth] = 0; //ItemHigh의 [Nth]방의 값을 0으로 셋팅 (이후 최고값 계산해 저장할 변수) Main.MessageList(Nth,"번째","종목객체생성완료 : ",ItemObject[Nth].code); //순번은 1 증가 Nth = Nth+1; //종목객체 수신완료되면 다음 종목 종목객체 요청 if (Nth < Bnum) { //계좌의 잔고리스트에서 다음 순번 잔고 셋팅 Account1.SetBalanceIndex(Nth); //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //Nth번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } else { Main.MessageList("보유종목 종목객체요청완료------"); } } } //잔고에 종목이 추가된다면 function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) //*삭제 { if (sAccntNum == Account1.number && lUp*dateID == 30001) //*삭제 { Main.MessageList("신규편입종목 객체요청",sItemCode,Nth); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = sItemCode; //1번째 종목객체 생성요청 Main.ReqMarketData(ItemCode[Nth], 0,0); } } //종목객체 시세 업데이트 function Main_OnUp*dateMarket(sItemCode, lUp*dateID)// *제거 { //편입된 종목수 만킄만 수행 for (var i = 0; i < ItemObject.length; i++) { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)// *제거 { Main.MessageList("-----------------------------------------------"); Main.MessageList(ItemObject[i].code,"업데이트"); //잔고셋팅 Account1.SetBalanceItem(ItemObject[i].code,0); //종목편입 이후의 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i] = ItemObject[i].current; } //매수잔고 if (Account1.Balance.position == 2) { //현재가가 평균단가 대비 10%이상 상승하면 목표이익 매도 if (ItemObject[i].current >= Account1.Balance.avgUnitCost*1.10) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("수익청산 : ",ItemObject[i].code,"종목객체삭제"); } // 현재가가 평균단가 대비 3%이상 하락하면 손절매도 if (ItemObject[i].current <= Account1.Balance.avgUnitCost*0.97) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("손절청산 : ",ItemObject[i].code,"종목객체삭제"); } //현재가가 평균단가 대비 7% 이상 상승후 평균단가+5%까지 하락하면 매도주문 if (ItemHigh[i] >= Account1.Balance.avgUnitCost*1.07 && ItemObject[i].current <= Account1.Balance.avgUnitCost*1.05) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("TR청산 : ",ItemObject[i].code,"종목객체삭제"); } } Main.MessageList("-----------------------------------------------"); Main.MessageList("종 목 : ",ItemObject[i].code); Main.MessageList("평균단가 : ",Account1.Balance.avgUnitCost); Main.MessageList("현 재 가 : ",ItemObject[i].current); Main.MessageList("진입최고 : ",ItemHigh[i]); } } }
프로필 이미지
영원한자유
2019-08-08
3210
글번호 224947
답변완료

위클리 옵션 대응

위클리 옵션 상장일부터 즉시 기존 스팟 옵션 코드는 폐기해야 할 것 같은데요. 예를 들어 근월물이 바뀌고, 잔존일수도 바뀌고, 종목 코드는 어떻게 될지... 위클리 옵션 상장에 따른 예스스팟 업데이트 계획 및 스케쥴이 궁금합니다.
프로필 이미지
idnotbe
2019-07-30
3243
글번호 224946
답변완료

신호 문의

단순히 예스트레이더의 한 전략창의 신호(진입명,청산명)를 받아서 스팟으로 신호명을 이용하여 매매를 하고 싶습니다 예제를 하나주시면 공부하겠습니다 감사합니다
프로필 이미지
라떼처럼
2019-08-02
3491
글번호 224944
답변완료

주문거부시 재주문

안녕하세요. 예스트레이더로 해외선물 매매를 하고 있는데, 종종 호가범위 외 주문이나 매수/매도 동시주문 등으로 주문거부가 일어납니다. 이럴 경우 예스스팟으로 재주문을 내는 방법을 부탁드립니다. 정리하면 아래그림처럼 주문거부로 자동정정 정지 상태가 되면 스팟으로 재주문 내는 수식 부탁드립니다.
프로필 이미지
탄탄시스템
2019-07-26
3663
글번호 224943