커뮤니티

파워종목검색후 자동매수 그리고 몇가지

프로필 이미지
달군
2019-08-26 23:58:47
3426
글번호 224968
답변완료
제가 하고 싶은것 1. 파워종목 검색(1분단위) 2. 검색된 종목들을 단주, 시장가로 매수 -단, 기존에 보유종목인 경우에는 매수하지 않음 사실 언어 이런것도 모르고 샘플을 보면서 살짝 살짝 수정하고자 하고 있습니다. 메뉴얼 보면서 공부는 병행하고 있습니다. 아래는 게시판 답변에서 찾은 샘플인데 이 샘플에 위 두가지 조건을 적용한 전략을 부탁드립니다. 감사합니다. var List; var ListCnt; var RcvCount; var ItemCode = new Array(200); var ItemPrice = new Array(200); var ItemUnits = new Array(200); var RcvCount = 0; var Ymoney; //스팟 첫 실행시 function Main_OnStart() { // 파워종목검색의 사용자검색조건 검색 요청 Main.ReqPowerSearch("Winning") //예수금 저장 Ymoney = Account1.GetBalanceETCinfo(0); } //종목검색 완료되어 리스트(검색된 종목코드) 수신 function Main_OnRcvItemList(aItemList, nCount) { //검색된 종목코드를 저장 List = aItemList; //검색된 종목수 저장 ListCnt = nCount; //종목코드 디버깅창에 출력 Main.MessageList("전체종목코드",List); //검색된 종목에 대해 종목객체 요청 for (var i = 0; i < nCount; i++) { Main.ReqMarketData(List[i], 0, 0); } } //요청한 종목객체가 생성되면 function Main_OnRcvMarketData(MarketData) { //생성 횟수 카운트 RcvCount = RcvCount+1; //생성된 순서로 1번방부터 종목코드 저장 ItemCode[RcvCount] = MarketData.code; //생성된 순서로 1번방부터 현재가 저장 ItemPrice[RcvCount] = MarketData.current; ItemUnits[RcvCount] = MarketData.tradeUnit; //값저장 후 해당 종목객체는 삭제 Main.RemoveMarketData(ItemCode[RcvCount]); //생성횟수와 해당 종목의 코드와 현재가, 매매단위를 디버깅창에 출력 Main.MessageList("생성순번",RcvCount,"종목코드",ItemCode[RcvCount],"현재가",ItemPrice[RcvCount],"주문수량단위",ItemUnits[RcvCount]); //검색된 종목에 대해 모두 종목객체가 생성되었다면 if (RcvCount == ListCnt) { //현재가가 큰 종목순으로 상위 5개 주문 for (var ii = 1; ii <= 5; ii++) { var HH = -1; var Hi = -1; //각 종목이 현재가를 비교해 가장 큰 종목 선택 for (var iii = 1; iii <= RcvCount; iii++) { if (ItemPrice[iii] > HH) { HH = ItemPrice[iii]; Hi = iii; } } //매수주문 if (Hi > -1) { //수량 계산 var vol; if (ItemUnits[Hi] == 1) //1주단위이면 vol = Math.floor((Ymoney/5)/ItemPrice[Hi]); if (ItemUnits[Hi] == 10)//10주 단위이면 vol = Math.floor(((Ymoney/5)/ItemPrice[Hi])/10)*10; //시장가로 매수주문 Main.MessageList("순번",ii,"매수주문종목",ItemCode[Hi],"현재가",ItemPrice[Hi],"주문수량단위",ItemUnits[Hi]); //디버깅창에 매수 종목의 코드와 현재가,주문수량 표시 Account1.OrderBuy(ItemCode[Hi], vol, 0,1); //해당 종목의 종목코드와 현재가는 다음순위를 찾기위해 -1로 지정 ItemCode[Hi] = -1; ItemPrice[Hi] = -1; } } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-09-10 11:48:40

안녕하세요 예스스탁입니다. 아래 가이드 참고하시기 바랍니다. 스크립트 객체설정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문계좌지정 //스팟 첫 실행시 function Main_OnStart() { //1번 타이머, 60초 Main.SetTimer(1, 60000); } function Main_OnTimer(nEventID) { //1번 타이머 동작 if (nEventID == 1) { //종목검색 수행 Main.ReqPowerSearch("Winning") } } //종목검색 완료 function Main_OnRcvItemList(aItemList, nCount) { //1종목 이상 검색되면 if (nCount >= 1) { //리스트 첫종목부터 마지막종목까지 순차적으로 for (var i = 0; i < nCount; i++) { //잔고를 셋팅 Account1.SetBalance(aItemList[i],0); //보유수량이 없으면 if (Account1.Balance.count == 0) { //매수주문 Account1.OrderBuy(aItemList[i], 1,0,1); } } } } 즐거운 명절되시길 바랍니다. > 달군 님이 쓴 글입니다. > 제목 : 파워종목검색후 자동매수 그리고 몇가지 > 제가 하고 싶은것 1. 파워종목 검색(1분단위) 2. 검색된 종목들을 단주, 시장가로 매수 -단, 기존에 보유종목인 경우에는 매수하지 않음 사실 언어 이런것도 모르고 샘플을 보면서 살짝 살짝 수정하고자 하고 있습니다. 메뉴얼 보면서 공부는 병행하고 있습니다. 아래는 게시판 답변에서 찾은 샘플인데 이 샘플에 위 두가지 조건을 적용한 전략을 부탁드립니다. 감사합니다. var List; var ListCnt; var RcvCount; var ItemCode = new Array(200); var ItemPrice = new Array(200); var ItemUnits = new Array(200); var RcvCount = 0; var Ymoney; //스팟 첫 실행시 function Main_OnStart() { // 파워종목검색의 사용자검색조건 검색 요청 Main.ReqPowerSearch("Winning") //예수금 저장 Ymoney = Account1.GetBalanceETCinfo(0); } //종목검색 완료되어 리스트(검색된 종목코드) 수신 function Main_OnRcvItemList(aItemList, nCount) { //검색된 종목코드를 저장 List = aItemList; //검색된 종목수 저장 ListCnt = nCount; //종목코드 디버깅창에 출력 Main.MessageList("전체종목코드",List); //검색된 종목에 대해 종목객체 요청 for (var i = 0; i < nCount; i++) { Main.ReqMarketData(List[i], 0, 0); } } //요청한 종목객체가 생성되면 function Main_OnRcvMarketData(MarketData) { //생성 횟수 카운트 RcvCount = RcvCount+1; //생성된 순서로 1번방부터 종목코드 저장 ItemCode[RcvCount] = MarketData.code; //생성된 순서로 1번방부터 현재가 저장 ItemPrice[RcvCount] = MarketData.current; ItemUnits[RcvCount] = MarketData.tradeUnit; //값저장 후 해당 종목객체는 삭제 Main.RemoveMarketData(ItemCode[RcvCount]); //생성횟수와 해당 종목의 코드와 현재가, 매매단위를 디버깅창에 출력 Main.MessageList("생성순번",RcvCount,"종목코드",ItemCode[RcvCount],"현재가",ItemPrice[RcvCount],"주문수량단위",ItemUnits[RcvCount]); //검색된 종목에 대해 모두 종목객체가 생성되었다면 if (RcvCount == ListCnt) { //현재가가 큰 종목순으로 상위 5개 주문 for (var ii = 1; ii <= 5; ii++) { var HH = -1; var Hi = -1; //각 종목이 현재가를 비교해 가장 큰 종목 선택 for (var iii = 1; iii <= RcvCount; iii++) { if (ItemPrice[iii] > HH) { HH = ItemPrice[iii]; Hi = iii; } } //매수주문 if (Hi > -1) { //수량 계산 var vol; if (ItemUnits[Hi] == 1) //1주단위이면 vol = Math.floor((Ymoney/5)/ItemPrice[Hi]); if (ItemUnits[Hi] == 10)//10주 단위이면 vol = Math.floor(((Ymoney/5)/ItemPrice[Hi])/10)*10; //시장가로 매수주문 Main.MessageList("순번",ii,"매수주문종목",ItemCode[Hi],"현재가",ItemPrice[Hi],"주문수량단위",ItemUnits[Hi]); //디버깅창에 매수 종목의 코드와 현재가,주문수량 표시 Account1.OrderBuy(ItemCode[Hi], vol, 0,1); //해당 종목의 종목코드와 현재가는 다음순위를 찾기위해 -1로 지정 ItemCode[Hi] = -1; ItemPrice[Hi] = -1; } } } }