커뮤니티

예스스팟 Q&A

답변완료

수식관련해서 질문 드립니다

주문이 일부 체결된 경우 나머지 미체결주문만 취소하고자 수식을 짰는데 뭐가 문젠지 전략실행차트에서 실행했을때 "시작"만 뜨고 그이후로 주문은 계속 나가는데 아무 메세지가 뜨질 않습니다...뭐가 잘못된건지 모르겠네요... 밑에식은 수식입니다. 감사합니다 var Position; var OrdCode; var BID; var ASK; var BuyFill; var SellFill; var BNum; var SNum; var CumOrdFill; var PreOrdPrcA, PreOrdPrcB; var Time; function Main_OnStart() { Main.MessageList("시작"); Position = 0; OrdCode = Main.GetOrderCode(F1.code); } function C1_OnRiseSignal(Signal) { Main.MessageList("신호발생" + Signal.signalKind); Main.MessageList(Signal); if(Signal.signalKind == 1) //매수신호 { Position = 1; BuyFill = 0; Time = getHHMMSS(); BID = A1.OrderBuy(OrdCode, Vol, F1.current, 0); Main.MessageList(Time , "매수주문진입" , "종목코드명:" + F1.code, "매수주문식별번호:"+ BID); } if(Position == 1 && Signal.signalKind == 2) //매수청산신호 { if(BuyFill == 1) { Time = getHHMMSS(); A1.OrderSell(OrdCode, Vol, F1.Bid(2), 0); Main.MessageList(Time, "매수청산실행"); } else if(BuyFill == 0) { PreOrdPrcB = NotifyFill.fillCount Main.SetTimer(1,10000); } } if(Signal.signalKind == 3) //매도신호 { Position = -1; SellFill = 0; Time = getHHMMSS(); ASK = A1.OrderSell(OrdCode, Vol, F1.current, 0); Main.MessageList(Time , "매도주문진입" , "종목코드명:" + F1.code, "매수주문식별번호:"+ ASK); } if(Position = -1 && Signal.signalKind == 4) //매도청산신호 { if(SellFill == 1) { Time = getHHMMSS(); A1.OrderBuy(OrdCode, Vol, F1.Ask(2), 0); Main.MessageList(Time, "매도청산실행"); } else if(SellFill == 0) { PreOrdPrcA = NotifyFill.fillCount Main.SetTimer(2,10000); } } } function Main_OnOrderResponse(OrderResponse) //주문응답신호 { if(Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; Time = getHHMMSS(); Main.MessageList(Time,"OrderResponse","종목코드명:"+F1.code , "주문번호:"+ BNum); } else if(Position == -1 && OrderResponse.orderID == ASK) { SNum = OrderResponse.orderNum; Time = getHHMMSS(); Main.MessageList(Time,"OrderResponse","종목코드명:"+F1.code , "주문번호:"+ SNum); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { if(PreOrdPrcB != Vol) { A1.SetUnfillOrderNumber(BNum); if (A1.Unfill.count > 0) { Time = getHHMMSS(); A1.OrderCancel(A1.Unfill.orderNum); Main.MessageList(Time,"매수취소주문" + "매수취소주문수량"+A1.Unfill.count); } } } if (nEventID == 2) { if(PreOrdPrcA != Vol) { A1.SetUnfillOrderNumber(SNum); if (A1.Unfill.count > 0) { Time = getHHMMSS(); A1.OrderCancel(A1.Unfill.orderNum); Main.MessageList( Time ,"매도취소주문" +"매도취소주문수량"+A1.Unfill.count); } } } } function Main_OnNotifyFill(NotifyFill) { if(Position == 1 && NotifyFill.orderNum == BNum) { BuyFill = 1; Main.KillTimer(1); } else if(Position == -1 && NotifyFill.orderNum == SNum) { SellFill = 1; Main.KillTimer(2); } }
프로필 이미지
ts윤
2016-09-28
1779
글번호 224001
답변완료

YesTrader 메모리 오류인지

스팟에서 확장 차트를 최대 얼마까지 띄울 수 있을지 테스트 하고 있던 중 YesTrader가 다운되는 현상이 발생합니다. 확장차트 288번째 생성 중 다운되면 첨부와 같은 오류가 발생합니다. 메모리 문제인 것 같습니다만, 시스템 메모리가 부족해서 그런건 아니므로 Yes에서 관리하는 메모리 쪽에 확인 부탁드립니다. 메모리 관리가 안되서 더 이상 실행할 수 없다면 다운시키지 않고 경고 메시지를 줄 수는 없을까요?
프로필 이미지
곰탈
2016-09-23
1876
글번호 223998
답변완료

시가 진입 종가 청산

여러모로 검색해보니, 예스랭귀지에서는 시가 진입과 종가 청산이 안된다고 하네요. 이 게시판에서도 종가의 경우 예스 스팟을 써야 된다고 나오고요~ 근데, 예스 스팟 이용하면, 시가 진입도 가능하게 할 수 있나요? 일단, 이게 되는지 알아야 더 분석을 할지 말지 결정할 수 잇을 것 같아서요. 답변 부탁드립니다. 감사합니다. 아 그리고 제가 참고한 글은 아래의 글입니다. ------------------------------------------ 안녕하세요? 예스스탁입니다. 기존 YesLanguage를 이용한 방법으로는 3시 15분 종가 청산은 가능하지 않습니다. 새로 제공되는 기능은 스팟트레이딩(YesSpot)기능을 이용하시면 동시호가 시간에 잔고를 체크하여 청산 주문을 내는 것이 가능하지만, 자바스크립트를 별도로 배우셔야 사용 가능합니다. 감사합니다.
프로필 이미지
중박주식
2016-09-09
1916
글번호 223995
답변완료

스팟수식과 모의테스트방법 문의

예스랭위지로 시스템식을 "시험"으로 작동시키고 해당 차트에 아이디를 부여하여 스팟 차트객체에 연결시켜 놓은 상태입니다. [1]예스랭위지로 단순히 신호조건이 되면 buy(), sell(), exitlong(), exitshort()만 하도록 수식을 썼는데요. 스팟수식 "Account1.OrderBuy(MarketData1.code, Signal.count, MarketData1.Ask(1), 2);"에서 [1-1]MarketData1.code는 종목객체 속성창에 보니 종목명, 종목코드, 단축코드가 등록이 되어 있어서 참조가 될것같고, [1-2]Signal.count는 랭위지수식에서 주문수량을 달리 정하지 않았기 때문에 그냥 1개로 되는지 아니면 예스랭위지 주문함수에서 주문수량을 설정하거나 Signal.count를 지우고 1로 써야하는지요? [1-3]MarketData1.Ask(1)는 모든 매매를 시장가로 하려고 하니 0 또는 공백 으로 쓰는지요? [1-4]시장가로 할려고 하므로 2 를 1 로 써야 하는지요? [2]실제 실행하기 앞서 테스트를 할려면 어떻게 테스트를 해야하는지 모의테스트하는 방법 설명 부탁드립니다.
프로필 이미지
kwon0718
2016-09-09
2047
글번호 223990
답변완료

수식문의드립니다.

예스스팟으로 주문하고 있는데 예스스팟은 예트에서 신호받은 그 가격으로 주문이 나가는 것이 맞는지요? 현재는 현재가에서 주문이 나가고 있습니다. 그리고 현재 매도 +-5호가로 주문이 세팅 되어서 슬리피지가 너무 많아서 슬리피지를 없이 주문하려고 문의를 드립니다. 그래서 신호가대로 주문을 하고 싶은데 리버스 신호의 경우에는 증거금 문제로 이전 주문이 청산이 되었을때까지 기다렸다가 청산이 되고 난 후에 주문을 하고 싶습니다. 그리고 주문은 1계약씩 나눠서 나가게 해서 증거금을 풀로 차게 주문하고 싶습니다. 예를 들어서 하나 수식을 만들어 주시면 감사하겠습니다. 예) 예트에서 5-20 이평선 매도 매수전략이라고 가정할때 1. 주문은 예트에서 발생한 신호가로 청산도 신호가(리버스진입가)로- 미체결 리스크가 있어도 슬리피지 없게 하려구요. 2. 리버스 신호가 나왔을때, 청산을 지정가(예트 신호가)로 하기때문에 만약 지연될 경우, 청산이 되고 난후에 신호가로 진입할수 있는 수식 4. 모든 주문은 1계약씩 반복해서 증거금이 다 찰때까지 주문이 되도록, 다만 청산주문은 보유잔고 일괄 청산 5. 동시호가에 보유잔고가 있으면 시장가로 청산 부탁드립니다. 감사합니다.
프로필 이미지
궁금궁금123
2016-09-19
1996
글번호 223989
답변완료

문의 드립니다.

수고 하십니다. 계좌잔고를 청산하기 위하여 다음과 같은 프로그램을 사용하고 있습니다. 이상없이 사용하고 있었는데 오류가 발생할 때가 있습니다. 잔고 일부가 청산이 안될때가 있습니다. 이런 오류가 발생했을때는 반복해서 본 프로그램을 가동해도 남은 잔고가 청산되지 않습니다. 조치방법 부탁드립니다. function Main_OnStart() { Account1.Refresh(); var num = Account1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.position == 1) Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); else if (Account1.Balance.position == 2) Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } Account1.Refresh(); }
프로필 이미지
고가행진
2016-09-08
1919
글번호 223988
답변완료

문의 드립니다.

수고하십니다. SOPT가동 중 SPOT폴더에 *.ysdb 확장자명의 파일이 많이 생성되는데 피할수 있는 방법은 없을까요?
프로필 이미지
고가행진
2016-09-08
1884
글번호 223987
답변완료

스팟 수식문의

KODEX레버리지와 KODEX인버스를 보유하고 있고, 두 종목에서의 수익률 차이가 + 1% 일 때 모두 매도하는 수식을 알고싶습니다...
프로필 이미지
상현
2016-09-07
2007
글번호 223986

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

프로필 이미지
kwon0718
2016-09-05
21
글번호 223984
답변완료

데이터베이스 질문드립니다

항상수고 많으십니다. MS SQL 데이터 베이스를 배열로 가져오는 방법을 알고 싶습니다. 금칙어 셀렉트 는 Selec*t로 표시했습니다. 예스스팟 데이터베이스 객체 항목의 Selec*t를 보면 Selec*t(sQuery, sTabTitle) 이렇게 나와있고 sTabTitle 에 대해 " sTabTitle &#8211; 문자열, YesSpot Studio의 실행결과창에서 추가/수정할 탭의 이름을 입력합니다. " 라고 나와 있는 데 잘 이해가 되지 않습니다. 실례로 MS SQL 데이터베이스를 스팟과 ODBC로 올바르게 연동하고, 다음의 스팟 구문을 실행해 보면 var sTabTitle = new Array(6); function Main_OnStart() { Table = DB.Selec*t(" * FROM [dbo].[ENTRY] ", sTabTitle ); } 실행결과 창에 아래와 같이 사전에 만들어 놓았던, MS SQL "ENTRY" 테이블이 출력되 있는 걸 볼수 있습니다. " 그림1 " Main.MessageList(sTabTitle); 로 확인해보면 결과가 쉼표 다섯개로 , , , , , 나오는 걸로 보아 제대로 선언된거 같지 않습니다. 8월 5일 진입한 코드를 보고자 var sTabTitle = new Array(6); function Main_OnStart() { Table = DB.Selec*t(" code FROM [dbo].[ENTRY] WHERE EntryDay = 20160805 ", sTabTitle ); } 로 하면 실행결과창이 "그림2" 로 되고 8월 7일 진입한 코드를 보고자 var sTabTitle = new Array(6); function Main_OnStart() { Table = DB.Selec*t(" code FROM [dbo].[ENTRY] WHERE EntryDay = 20160807 ", sTabTitle ); } 로 하면 데이터베이스에 자료가 없는지 스팟에러가 발생합니다. 에러 메세지는 "TypeError : 데이터의 끝 또는 시작 부분을 지나서 스크롤하려고 했습니다." 그래서 제가 하고자 하는 것은 SQL 데이터를 가져오는 것인데요, 1. sTabTitle 혹은 Table 을 올바르게 선언하는 법을 알고 싶습니다. 2. 원하는 날짜에 진입된 종목코드를 배열로 가져오는 방법을 알고 싶습니다. 3. 데이터가 없는 부분을 지정하였을 때 스팟 에러가 발생하지 않게 하는 방법을 알고 싶습니다.
프로필 이미지
재령
2016-09-04
2384
글번호 223983