커뮤니티

예스스팟 Q&A

답변완료

종목 검색 후 매매 시스템 문의

안녕하세요 종목 검색 후 검색된 매매 종목에 대한 시스템 구현 문의입니다. 종목 검색식은 YL 을 통해 일봉 기준으로 검색하고, 추출된 종목으로 YS 에서 분봉 차트로 전략을 적용할 수 있는지 궁금합니다. 답변 부탁드립니다.
프로필 이미지
isaac
2015-09-23
2249
글번호 223664

유기농옵션 님에 의해서 삭제되었습니다.

프로필 이미지
유기농옵션
2015-09-23
0
글번호 223663
답변완료

호가잔량을 체크하여 옵션 매매 하는 수식 부탁드립니다.

수고많으십니다~ 매매 주문시 호가잔량 체크하는 수식 좀 부탁드립니다. 예를들어... 옵션 매수시, 매도 호가1의 잔량이 5개 이상일때 매수주문 하고 옵션 매도시, 매수 호가1의 잔량이 5개 이상일때 매도주문 하려고 합니다. 옵션객체로 호가잔량을 받아오려고 했는데 생각처럼 잘 안되네요 ^^:; 부탁드립니다~
프로필 이미지
유기농옵션
2015-09-23
2125
글번호 223662
답변완료

장 종료 동시호가 청산 문의

안녕하세요. 예전에 스팟에서 3시 5분 이후 Main_OnTimer(nEventID) 함수를 이용해서 옵션 잔고가 남았을 경우 3시 15분에 동시호가 청산이 가능해서 사용했었는데요, 오늘 오랜만에 해당 스팟을 돌렸는데, 잔고가 남아있음에도 동시호가 청산이 안되었습니다. 혹시 어떤 변화가 있는 것인지 문의 드립니다.
프로필 이미지
lucky93
2015-09-23
2112
글번호 223661
답변완료

호가로 주문후 체결신호를 리턴받으면 다음 종목을 매수하는식과 간단한 오류 수정 부탁드립니다

안녕하세요 예스 랭기지를 사용하다가 이번에 스팟을 배우게 되었습니다. 그런데 객체 지향 언어에 익숙 하지 않아서 그런지 좀 많이 어렵 습니다. 아래와 같이 간단히 두종목을 비교하여 매수 매도 하는 수식을 짰는데 돌아가지 않습니다. 먼저 제가 작성한 수식을 설명 드리면 Market_L과 Market_S의 값을 가져와 두값을 뺀 Spread_net_C가 현제의 값이 두값을 뺀값으로 20봉의 평균한 Spread_Avr값보다 작으면 커지는 쪽으로 두종목이 서로 반대 방향으로 진입을 한후 두 포지션을 입력하고 청산은 두값의 합이 입력해놓은 원하는 이익값 이상이 되었을&#46468; 일괄로 청산을 하는 프로그램 입니다. 제 질문을 알아보시기 편하게 아래와 같이 순번을 달아 설명 했습니다. Q1. 어느 부분이 문제인지 수정 부탁 드립니다. Q2. 진입과 청산 식에 호가가 상대적으로 작아 체결이 어려운 Market_L 을 현제 호가로 주문하고 진입이 되었다는 신호가 확인되면 Market_S을 시장가로 진입 시켜 두종목을 동시에 보유하고 청산시에도 Market_L을 호가로 청산하고 청산이 확인되면 Market_S를 청산 하는식을 만들고싶은데 어떻게 해야할지 모르 겠습니다. 어떻게 하면 가능할지 도와 주세요~ Q3. Market_L과 Market_S를 뺀값에 평균값을 구하는 Spread_Avr 함수에 예스랭기지로 작성한 plot 값을 받아와 구동하게 하였는데 이러한 방법말고 예스스팟에서 바로 작성하여 구동하고 싶습니다. 방법을 알려주세요? (랭귀지에서는 Spread_Avr = ma(Market_S-Market_L , 20) 이렇게 만들었었습니다.) Q4. 위 질문 Q3과 같이 구동할 경우 예스 랭기지로 작성된 수식은 봉의 완료시에만 작동 하는 것으로 알고 있는데 제가 알고있는 것이 맞다면 빠르게 실시간으로 수식을 처리 하는 예스 스팟의 시스템과 맞지 않아 문제가 있을수 있을것 같습니다. 이런경우 주의해야 하는 부분이 있다면 알려주세요. ======================================================================================== var Spread_Avr, return_N,Spread_net_C,SP_MEMO ; /* Spread_Avr: 두값을 뺀값의 평균값을 넣는 변수 return_N: 이동평균을 구할때 몇봉의 이동평균을 구할지를 결정하는 변수로 사용하려했으나 지표 이름"J007_이동평균 값"에 plot2를 받아 사용하도록 아래 식을 구현 하였기 때문에 아래에서는 사용하지 않는 함수 Spread_net_C: 현제 두값을 뺀 값을 넣는 변수 SP_MEMO : 진입 당시 두값의 차를 기역하고 있다가 현제가와 비교하여 이익을 낼수있는 청산 시점인지를 비교하는 변수 */ function Main_OnStart() // 수식을 시작합니다. { Main.MessageLog("시작"); // 시작 이라고 출력 Start=0; //스타트 0 을 입력하여 진입신호없이 청산신호가 나가는것을 방지 } function C1_OnRiseSignal(Signal) { /* Market_S & Market_L 현제 두 값을 뺀값 측정 */ Spread_net_C= Market_S.current - Market_L.current; /* Market_S & Market_L의 두 값을 뺀값의 평균값 결정 */ Spread_Avr = C1.GetIndicatorData("J007_이동평균 값", 2,0); } //여기서 부터 진입식 function Main_OnRiseSignal(ChartEx, Signal) { If (A1.GetTheNumberOfBalances ==0) // 한주문만 들어가도록 A1 계좌에 주문이 없을때는 진입식만 주문이 있을때는 청산 식만 지켜봄 { if (spread_net_C>0) // Market_L 이 Market_S 보다 작으면 { SP_MEMO = spread_net_C ; // 두값의 차를 청산때 비교하기 위해 저장해둠 if (spread_net_C < spread_Avr - (PriceScale*Profit_N) //지금두 값의 차가 "평균치 - 기대수익" 보다 낮을경우 평균치 가까이 갈것으로 //예상하고 커지는 방향으로 진입 "Profit_N"은 외부변수로 설정 /* 아래 진입식은 단순 동시 진입 식이지만 Market_L의경우 물량이 많지않아 지정가로 진입하고 진입되었다는 확인 신호를 받으면 Market_S를 시장가로 진입하여 두종목을 모두 보유하도록(Q2) 수정하고 싶습니다. 도와주세요 */ { A1.OrderBuy(Market_S.code, Market_S_lot,Market_S.Bid(2),1); A1.OrderSell(Market_L.code, Market_L_lot, Market_L.Ask(2),1); } } // 여기서 부터 청산식 else if (A1.GetTheNumberOfBalances != 0)// 포지션이 있는경우 청산식 진입 { if (spread_net_C >= SP_MEMO - (PriceScale*Profit_N)) // 스프레드 증가방향 진입이고 수익만큼 충분히 증가 되었다면 /* 아래 청산식은 단순 동시 진입 식이지만 Market_L의경우 물량이 많지않아 지정가로 진입하고 진입되었다는 확인 신호를 받으면 Market_S를 시장가로 진입하여 두종목을 모두 보유하도록(Q2) 수정하고 싶습니다. 도와주세요 */ { A1.OrderSell (Market_S.code, Market_S_lot,Market_S.Ask(2),1); A1.OrderBuy(Market_L.code, Market_L_lot, Market_L.Bid(2),1); } } 바쁘신 중에도 이렇게 도와주셔서 감사합니다.
프로필 이미지
자유를찾아
2015-09-23
2074
글번호 223660

자유를찾아 님에 의해서 삭제되었습니다.

프로필 이미지
자유를찾아
2015-09-22
0
글번호 223659

산개대형 님에 의해서 삭제되었습니다.

프로필 이미지
산개대형
2015-09-17
0
글번호 223656
답변완료

시험적용시 체결가가 0으로 뜨며 예비신호시 주문방법

이제 갓 배운 초보로 간단한 수식을 만들어서 테스트 중입니다. 1. 예스스팟으로 간단한 전략을 작성해서 시험적용을 해봤는데. 신호를 받아서 주문이 나가긴 하는데 체결가가 0으로 뜨는 이유는 뭘까요? 원래 그런건지 제가 뭘 잘못한건지요^^ 2. 예스랭귀지로 시스템을 만들어서 매매신호가 뜨면 예스스팟으로 매매주문이 나가게 했는데 제가 알기로 예스랭귀지는 봉이 완성되야 주문이 나가지만 예스스팟은 예비 신호만 떠도 주문이 나가는 걸로 알고 있는데 테스트 해보니 똑같이 봉이 완성되니까 주문이 나가더라고요. 아래 수식으로 만들었는데 예스스팟도 봉이 완성되야 주문이 나가는 건가요? if (Signal.signalKind == 3 ) //Sell신호를 받은 경우 { Start = 1; A1.OrderSell(Code2, Vol, 0, 1); A1.OrderBuy(Code1, Vol, 0, 1); Main.MessageLog("1매수,2매도"); } 이렇게 만들었습니다~
프로필 이미지
산개대형
2015-09-17
2066
글번호 223655
답변완료

미체결정정 복수개의 차트 적용방법 문의

안녕하세요 매번도움 감사드립니다. 아래와 같은 미체결발생시 주문정정 하는 코드를 검색하였습니다 아래코드를 3개의차트에 적용하는 코드 부탁 드립니다. (각 차트에서 매수매도 신호발생시 각 차트종목의 주문 미체결에 따른 정정주문) -------------------------아래----------------------- var&#160;Onum; var&#160;OCode; var&#160;OKind; //주문응답&#160;수신 function&#160;Main_OnOrderResponse(OrderResponse) { &#160;&#160;&#160;&#160;&#160;&#160;//주문번호&#160;저장 &#160;&#160;&#160;&#160;ONum&#160;=&#160;OrderResponse.orderNum; &#160;&#160;&#160;&#160;&#160;&#160;OCode&#160;=&#160;OrderResponse.code; &#160;&#160;&#160;&#160;&#160;&#160;OKind&#160;=&#160;OrderResponse.orderKind; &#160;&#160;&#160;&#160;&#160;&#160;//타이머&#160;실행 &#160;&#160;&#160;&#160;&#160;&#160;Main.SetTimer(1,&#160;5000);//5초&#160;타이머 } //타이머&#160;동작 function&#160;Main_OnTimer(nEventID) { &#160;&#160;&#160;&#160;if&#160;(nEventID&#160;==&#160;1) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//타이머&#160;중지 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.KillTimer(1); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//Onum주문번호&#160;미체결&#160;셋팅 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetUnfillOrderNumber(ONum); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//미체결로&#160;남아&#160;있으면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Unfill.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//종목객체&#160;요청 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.ReqMarketData(OCode,0,0);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} } //종목객체&#160;수신 function&#160;Main_OnRcvMarketData(MarketData) { &#160;&#160;&#160;&#160;&#160;&#160;var&#160;Object&#160;=&#160;MarketData; &#160;&#160;&#160;&#160;&#160;&#160;//수신받은&#160;종목객체가&#160;Onum과&#160;같으면 &#160;&#160;&#160;&#160;if&#160;(MarketData.code&#160;==&#160;ONum) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.SetUnfillOrderNumber(ONum); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//수량이&#160;남아&#160;있고&#160;매도주문이면&#160;매수2호가로&#160;정정 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Unfill.count&#160;>&#160;0&#160;&&&#160;Account1.Unfill.position&#160;==&#160;1) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderReplacePrice(ONum,&#160;MarketData.Bid(2)); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//수량이&#160;남아&#160;있고&#160;매수주문이면&#160;매도2호가로&#160;정정 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Account1.Unfill.count&#160;>&#160;0&#160;&&&#160;Account1.Unfill.position&#160;==&#160;2) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Account1.OrderReplacePrice(ONum,&#160;MarketData.Ask(2)); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//사용이&#160;끝났으므로&#160;수신받은&#160;종목객체는&#160;삭제 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.RemoveMarketData(Object); &#160;&#160;&#160;&#160;&#160;&#160;} }
프로필 이미지
adino30
2015-09-16
2149
글번호 223654

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

프로필 이미지
ujm
2015-09-10
0
글번호 223650