커뮤니티

예스스팟 Q&A

답변완료

예스스팟으로 외국인 매수내역 볼수 있나요?

전일 외국인이나 투신 매수금액을 알수 있는 함수가 있나요?
프로필 이미지
미수맨
2018-11-11
2906
글번호 224659

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

프로필 이미지
goodmami
2018-11-08
15
글번호 224658

너무조아 님에 의해서 삭제되었습니다.

프로필 이미지
너무조아
2018-11-07
9
글번호 224653
답변완료

DataBase 관련 질문 드립니다

안녕하세요!! 제가 mssql DB를 Q&A게시판을 보고 연결을 했습니다. 그런데 문제가 한가지 생겨서요. s*lect문을 날리면 DB에서 나오는 결과물이 하나라도 있으면 상관이 없는데 s*lect문을 날려서 결과(레코드)값이 0이면 "TypeError: 데이터의 끝 또는 시작부분을 지나서 스크롤하려고 했습니다" 라는 에러 문구가 뜨면서 에러가 나서 더이상 진행을 할 수가 없습니다ㅠ 예를 들어 var query = "buyPrice FROM LogData WHERE stockCode = 'A" + codeNum + "'; Main.MessageList("S*LECT query : ", query); var s*lectFlag = D1.S*lect(query, "s*lectQuery"); 금지어가 있어서 *처리했습니다. 이렇게 실행하면 레코드 값이 하나라도 있으면 에러가 안나고 결과값을 잘 가져오는데 레코드 값이 없으면 3번째 줄에서 위에 에러 메시지가 뜹니다ㅠ s*lectFlag 값이 true를 반환하면 상관없는데 false를 반환할 경우 이 반환값을 아예 받을 수 없는것 같아요. 해결 방법좀 알려주세요. 그리고 ysdb파일을 생성하지 않으려면 s*lect구문에서 탭 이름을 지정해주지 않으면 생성이 안된다고 게시판에서 답변해 주신 글을 보았습니다. var s*lectFlag = D1.S*lect(query, ""); var s*lectFlag = D1.S*lect(query); 이런 방식으로 해봤는데 레코드 값이 존재하더라도 s*lectFlag 값이 false를 반환해더라구요. ysdb파일을 생성하지 않으려면 어떻게 해야 하는지도 알려주세요!! 그리고 한가지 더 질문이 있는데요. 예수금 관련 질문입니다. 당일 주식을 팔았을 경우 당일 판 금액까지 포함해서 토탈 금앨을 불러 올 수 있는지요? A1.GetBalanceETCinfo(18); 이렇게 불러오면 당일 판 주식의 금액을 뺀 나머지 예수금을 불러오더라구요. 당일 주식을 판 금액도 당일 주식을 살 수 있잖아요. 예수금 + 당일 주식 판 금액 까지 불러와 현금으로 최대한 주식을 살수 있는 금액을 불러오는 방법을 알고 싶습니다!! 감사합니다~
프로필 이미지
도도당
2018-11-20
2933
글번호 224652
답변완료

수식질문드립니다.

유선상으로 질문드린내용인데 구체적으로 써보면 예스스탁에서 배열변수를 이용해서 이동평균을 구하는 식입니다. 선물 시세가 수신될때마다 시세가 직전시세보다 높으면 변수 a1에 그 거래량을 저장하고 1. 이 거래량의 30, 100, 이동평균과 2. 시스템 시작후 수집된 a1데이터의 전체평균을 구하는 겁니다. (수만건이 될수도 있습니다.) 변수를 배열변수로 지정하고 for문을 쓰면 된다고 하셨는데 우둔한 머리로 힘드네요. 수식을 부탁드리겠습니다.
프로필 이미지
뚱띵
2018-11-02
2730
글번호 224651

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

프로필 이미지
dean
2018-10-31
1
글번호 224650
답변완료

종목관계 없이 몇일 후 잔고 청산

1.앞에 주신 1797번 답변은 매수는 되나 청산이 안되어 2.종목 선택하여 저장했다 청산 되는 수식이나 또는 청산 신호시 종목 관계없이 잔고 있으면 5계약식 5초 간격으로 청산되는 수식 원합니다. var CallOrderCode, PutOrderCode; var&nbsp;Direction,Code,BEcnt,BXcnt,SEcnt,SXcnt; var&nbsp;MaxEntryVol&nbsp;=&nbsp;5; var&nbsp;MaxExitVol; function&nbsp;Main_OnStart() { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("시작"); } function&nbsp;C1_OnRiseSignal(Signal) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Signal.signalKind&nbsp;==&nbsp;1&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("매수진입신호발생"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//내부파일에서&nbsp;DD와&nbsp;CC라는&nbsp;이름으로&nbsp;저장된&nbsp;값을&nbsp;가져와&nbsp;Direction,Code변수에&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;Main.GetUserValue("DD"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code&nbsp;=&nbsp;Main.GetUserValue("CC"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Direction이&nbsp;1이나&nbsp;-1이&nbsp;아닐때&nbsp;수행 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Direction&nbsp;!=&nbsp;1&nbsp;||&nbsp;Direction&nbsp;!=&nbsp;-1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code&nbsp;=&nbsp;Option.GetATMCallRecent(0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//방향과&nbsp;종목코드를&nbsp;내부파일에&nbsp;DD,CC라는&nbsp;이름으로&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("DD",&nbsp;Direction); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("CC",&nbsp;Code); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//매수주문 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var UNum = Option.uppersATM; var LNum = Option.lowersATM; //콜옵션중 1.0에 가장 가까운 종목 //콜옵션 모든 종목을 현재가-1.0을 해서 절대값을 취해 저장 var CallCode = new Array(UNum+LNum+1); var CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var AA = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < AA) { AA = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } A1.OrderBuy(CallOrderCode,&nbsp;1,&nbsp;Option.GetAskByCode(Code,2),&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEcnt&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1번&nbsp;타이머&nbsp;5초&nbsp;셋팅 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetTimer(1,5000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Signal.signalKind&nbsp;==&nbsp;2&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("매수청산신호발생"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//내부파일에서&nbsp;DD와&nbsp;CC라는&nbsp;이름으로&nbsp;저장된&nbsp;값을&nbsp;가져와&nbsp;Direction,Code변수에&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;Main.GetUserValue("DD"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code&nbsp;=&nbsp;Main.GetUserValue("CC"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Direction이&nbsp;1이면 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Direction&nbsp;==&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Direction을&nbsp;0으로&nbsp;초기화 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//내부파일에&nbsp;DD와&nbsp;CC에&nbsp;저장값도&nbsp;초기화 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("DD",&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("CC",&nbsp;"&nbsp;"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//잔고를&nbsp;세팅 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A1.SetBalance(Code,&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//잔고수량이&nbsp;있으면 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(A1.Balance.count&nbsp;>&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//보유수량&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MaxExitVol&nbsp;=&nbsp;A1.Balance.count; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1계약&nbsp;매도주문 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A1.OrderSell(Code,1,Option.GetBidByCode(Code,&nbsp;2),&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BXcnt&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//보유수량이&nbsp;2계약&nbsp;이상이면 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(MaxExitVol&nbsp;>=&nbsp;2) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//2번&nbsp;타이머&nbsp;5초&nbsp;셋팅 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetTimer(2,5000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;중략
프로필 이미지
팡팡
2018-11-12
2701
글번호 224647

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

프로필 이미지
dean
2018-10-23
13
글번호 224642
답변완료

질문드립니다.

질문> 함수객체를 만들어 쓰고 싶습니다. OrderFunction(시그널, 코드, 수량, 호가) 이렇게 만들고 싶은데.. 수량에 따라서 주문이 다르게 들어가는 함수를 만들고 싶습니다. JHoga를 Ask와 Bid의 주문호가로 지정하고 싶습니다. 가이드 식이나 비슷한 수식이 있을런지요? 아래는 만들다가 못만든 수식입니다. function OrderFunction(JSignal, JCode, JCount, JHoga) { var S; var OrderCode; function Main_OnStart() { OrderCode = Main.GetOrderCode(JCode); Main.ReqMarketData(Main.GetOrderCode(JCode)); } function C1_OnRiseSignal(Signal) { S = new OrderFunction(Signal.signalKind,OrderCode,Signal.count); if (Signal.count == 1) { if (Signal.signalKind == 1) { A1.OrderBuy(OrderCode, 2, NextData.Ask(JHoga), 0); Main.MessageList("코드 : ",OrderCode); Main.MessageList("호가 : ",JHoga); } if (Signal.signalKind == 2) { A1.OrderSell(OrderCode, 4, NextData.Bid(JHoga), 0); Main.MessageList("코드 : ",OrderCode); Main.MessageList("호가 : ",JHoga); } } /* if (S.JumunCount == 3) { if (S.JumunSignal == 1) } else { }*/ } function Main_OnRcvMarketData(MarketData) { NextData = MarketData; } } 만들다가 못 만들었는데요. 가이드 식 좀 도와주실수 있는지요?
프로필 이미지
절제9단
2018-11-12
2709
글번호 224636
답변완료

지표수식

1. 선물의 "총매수잔량 - 총매도잔량" 을 bar 차트형태로 나타낼 수 있을까요 2. 프로그램매매의 "차익거래"와 "비차익거래"를 bar 차트형태로 부탁드립니다. 3. 선물의 "체결강도"를 bar차트 형태로 부탁드립니다. 4. 예스스팟에서 dde 연동시키는 방법을 부탁드립니다.
프로필 이미지
마추피추
2018-10-22
2801
글번호 224635