커뮤니티

예스스팟 Q&A

답변완료

예스스팟으로 종목을 매수하고 있습미다

종목매수를 자동으로 하고나서 파워종목에서 만든 다른 조건검색식으로 오늘 매수한 종목을 매도 하고 싶습미다 예스스팟 자동매수 수식은 다음과 같습미다.. var timer2 = 2; // 2초 var 매수금 = 17000000; var 손절 = 0.80; var 익절 = 1.20; var OrderList = []; var MKList = []; var req; var 종목수 = 1, BuyCount; function Main_OnStart() { //1번 타이머, 1초 Main.SetTimer(1, timer2*1000); // 오늘 매수한 종목 관리 배열 초기화 MKList = []; //스팟 시작시 잔고평가금액 V1 = Account1.GetBalanceETCinfo(100); BuyCount = 0; } function Main_OnTimer(nEventID) { var d = new Date(); YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 090005 && HHMMSS < 140010 && BuyCount < 종목수) { //종목검색 수행 Main.ReqPowerSearch("테스트") } if (nEventID == 1) { //계좌보유종수 var num = Account1.GetTheNumberOfBalances(); //9시~11시 15분 사이 if (HHMMSS >= 090006 && HHMMSS < 151900) { //보유종목이 1개 이상 if (num >= 1) { //계좌평가금액이 스팟시작시 평가금액대비 3% 이상이면 전종목 전량매도 if (Account1.GetBalanceETCinfo(100) >= V1*1.20) { //1번 타이머 종료 Main.KillTimer(1); //계좌리스트의 순서대로 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); //수량이 있고 3%수익이거나 5% 손실이면 시장가 매도 if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } else //아니면 개별종목 3%익절, -5%손절 체크 { //계좌리스트의 순서대로 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); //수량이 있고 3%수익이거나 -5% 손실이면 시장가 매도 if (Account1.Balance.count > 0 && (Account1.Balance.current >= Account1.Balance.avgUnitCost*익절 || Account1.Balance.current <= Account1.Balance.avgUnitCost*손절)) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } } } //오후10시 00분이후이면 모든 종목 전량 수익에 상관없이 매도 if (HHMMSS >= 152900) { //1번 타이머 종료 Main.KillTimer(1); //계좌리스트의 순서대로 for (var i = 0; i < num; i++) { //잔고를 셋팅 Account1.SetBalance(i); //수량이 있고 3%수익이거나 -5% 손실이면 시장가 매도 if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); OrderList = []; if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList; } else { for (var a = 0; a < nCount; a++) { var Add = true; for (var b = 0; b < MKList.length; b++) { if (aItemList[a] == MKList[b].code) { Add = false; } } if (Add == true && !IsStockInAccount(aItemList[a])) { OrderList.push(aItemList[a]); } } } } if (OrderList.length == 0) { Main.SetTimer(1, timer2*1000); } else { req = 0; Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == OrderList[req]) { MKList.push(MarketData); // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { if (BuyCount < 종목수) { // 계좌에 없는 경우에만 매수 //Account1.OrderBuy(MarketData.code,1,0,1); 밑에 한번에 17000000 시장가에 매수 Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1); //Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(4)),MarketData.Ask(1),0); //지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다. Main.MessageList(MarketData.code + " 주식을 매수합니다."); BuyCount = BuyCount+1; } } else { Main.MessageList( MarketData.code + " 주식은 이미 계좌에 있으므로 매수하지 않습니다."); } req = req+1; if (req < OrderList.length && BuyCount < 종목수) { var aa = Main.ReqMarketData(OrderList[req]); if (aa == -1) { Main.SetTimer(2, 15000); } } else { Main.SetTimer(1, timer2*1000); } } } function IsStockInAccount(stockCode) { // 계좌에 해당 종목이 있는지 확인하는 함수 var numberOfBalances = Account1.GetTheNumberOfBalances(); for (var i = 0; i < numberOfBalances; i++) { Account1.SetBalance(i); if (stockCode == Account1.Balance.code) { return true; // 계좌에 같은 종목이 있으면 true 반환 } } return false; // 계좌에 같은 종목이 없으면 false 반환 } 오늘 매수한 종목을 파워종목 조건검색식 만족할때 시장가로 매도할수 있게 예스스팟 자바 부탁드림미다.
프로필 이미지
뽀스뽀스
72
글번호 226399
답변완료

예스스팟 초보자의 수정요청

아래 수식을 - 매수금 10만원 매수---> 종가 천원이상 5만원 이하종목에 한해서 1주만 시장가로 매수로 변경 - 손절은 매수가의 -10%로 변경 - 익절은 매수가의 20%로 변경 - 09시~10시까지만 작동(매수,손절,익절) - 10시기준 자동매도(손절/익절)되지 않은 종목은 보유(수동매도 가능 ?) - 예스스팟에 잔존종목(익절/손절이나 수동매도 후 남은 종목수)은 10개까지로 제한하여 부족한 종목 수만큼만 매수. 등의 조건들, 기타 합리적인 사항으로 추가할만한 것이 있다면 그를 반영한 수식으로 수정 부탁드립니다. ========================================================================== var timer5 = 2; // 2초 var 매수금 = 100000; var 손절 = 0.9; var 익절 = 1.2; var OrderList = []; var MKList = []; var req; var 종목제한수 = 10; function Main_OnStart() { // 1번 타이머, 2초 Main.SetTimer(1, timer5 * 1000); // 오늘 매수한 종목 관리 배열 초기화 MKList = []; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds(); if (nEventID == 1 && HHMMSS >= 090000 && HHMMSS < 100000) { // 종목검색 수행 Main.ReqPowerSearch("변동성 돌파전략"); } else if (nEventID == 1 && HHMMSS >= 100000) { // 10:00 이후 모든 보유 종목 매도 for (var i = 0; i < MKList.length; i++) { Account1.OrderSell(MKList[i].code, MKList[i].quantity, 0, 1); Main.MessageList(MKList[i].code + " 시간 종료로 매도"); } MKList = []; Main.KillTimer(1); // 타이머 종료 } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } // 손절/익절 확인 (타이머 3번으로 주기적 실행) if (nEventID == 3) { CheckStopLossTakeProfit(); } } function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); OrderList = []; if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList.slice(0, Math.min(nCount, 종목제한수)); } else { for (var a = 0; a < nCount; a++) { var Add = true; for (var b = 0; b < MKList.length; b++) { if (aItemList[a] == MKList[b].code) { Add = false; } } if (Add && !IsStockInAccount(aItemList[a]) && OrderList.length < 종목제한수 - MKList.length) { OrderList.push(aItemList[a]); } } } Main.MessageList("OrderList: " + JSON.stringify(OrderList)); if (OrderList.length == 0) { Main.SetTimer(1, timer5 * 1000); } else { req = 0; Main.ReqMarketData(OrderList[req]); } } } function Main_OnRcvMarketData(MarketData) { var d = new Date(); var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds(); if (MarketData.code == OrderList[req]) { if (HHMMSS >= 100000) { Main.MessageList("매수 시간(09:00~10:00) 종료로 매수 중지"); Main.SetTimer(1, timer5 * 1000); return; } if (MKList.length >= 종목제한수) { Main.MessageList("종목 제한 수 초과로 매수 중지"); Main.SetTimer(1, timer5 * 1000); return; } if (!IsStockInAccount(MarketData.code)) { var quantity = Math.floor(매수금 / MarketData.Ask(1)); if (quantity > 0) { // 계좌에 없는 경우에만 매수 Account1.OrderBuy(MarketData.code, quantity, 0, 1); //Account1.OrderBuy(MarketData.code, 1, 0, 1); // 고정 1주 매수 //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), MarketData.Ask(1), 0); // 지정가 매수 // 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다. MKList.push({ code: MarketData.code, buyPrice: MarketData.Ask(1), quantity: quantity }); Main.MessageList(MarketData.code + " 주식을 " + quantity + "주 매수, 매수가: " + MarketData.Ask(1)); } else { Main.MessageList(MarketData.code + " 매수 수량 0, 매수 실패"); } } else { Main.MessageList(MarketData.code + " 주식은 이미 계좌에 있으므로 매수하지 않습니다."); } req = req + 1; if (req < OrderList.length) { var aa = Main.ReqMarketData(OrderList[req]); if (aa == -1) { Main.SetTimer(2, 15000); } } else { // 손절/익절 체크를 위한 타이머 시작 (10초마다 확인) Main.SetTimer(3, 10000); Main.SetTimer(1, timer5 * 1000); } } } function CheckStopLossTakeProfit() { for (var i = 0; i < MKList.length; i++) { var stock = MKList[i]; var marketData = Main.GetMarketData(stock.code); if (!marketData) continue; var currentPrice = marketData.currentPrice; if (currentPrice <= stock.buyPrice * 손절) { Account1.OrderSell(stock.code, stock.quantity, 0, 1); Main.MessageList(stock.code + " 손절(-5%)로 " + stock.quantity + "주 매도, 현재가: " + currentPrice); MKList.splice(i, 1); i--; } else if (currentPrice >= stock.buyPrice * 익절) { Account1.OrderSell(stock.code, stock.quantity, 0, 1); Main.MessageList(stock.code + " 익절(+5%)로 " + stock.quantity + "주 매도, 현재가: " + currentPrice); MKList.splice(i, 1); i--; } } } function IsStockInAccount(stockCode) { var numberOfBalances = Account1.GetTheNumberOfBalances(); for (var i = 0; i < numberOfBalances; i++) { Account1.SetBalance(i); if (stockCode == Account1.Balance.code) { return true; } } return false; }
프로필 이미지
ksks
70
글번호 226398

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

프로필 이미지
서울의봄
22
글번호 226393
답변완료

전략실행 차트 신호 관련

안녕하세요. 예스스팟에 차트를 추가하고 해당 차트에 특정 신호(예스랭귀지로 작성)를 적용시 해당 신호는 완성봉인 경우 예스스팟으로 신호를 발생해 주나요? 아니면 미완성 봉이더라도 신호가 발생하는 즉시 예스스팟으로 신호를 보내주나요? 가격의 움직임에 따라 신호가 차트 상에 보여 졌다 사라졌다를 반복할 수도있는데요. 어떤 방식으로 작동되는지 알고 싶습니다.
프로필 이미지
멍거
49
글번호 226392
답변완료

옵션객체 관련

안녕하세요. 현재 옵션종목이 월물옵션, 위클리 월요일, 위클리 목요일 이렇게 3개 거래가능한데요. 제 진입 및 청산 로직상 만기가 가장 근접한 옵션종목을 선택하여 거래하고자 합니다. 즉, 월물옵션 만기가 1주일 넘게 남은경우 - 화~목까지는 위클리 목요일 옵션을 진입 - 금~월까지는 위클리 월요일 옵션을 진입 - 월물옵션 만기가 1주일 이내인 경우 화요일부터 월물 옵션 진입 이렇게 옵션객체를 선택하여 거래 및 청산을 하고자 하는데, 간단하게 로직을 예시로 기재해주실수 있을까요? 매번 도움주셔서 진심으로 감사드립니다. 추가질문으로, 예스트레이더(im증권) 사용 중인데, 정상 로그인이 되면 문자 수신이 가능한가요? 그리고 장중에 비정상적으로 hts가 꺼졌을때 문자 수신이 가능한지도 여쭈어 봅니다. 감사합니다.
프로필 이미지
지나리
47
글번호 226391
답변완료

예스스팟 시스템 제약사항 문의

안녕하세요. 예스스팟을 사용할 때 시스템적인 다양한 제약 조건들을 알고 싶습니다. 매뉴얼 상에서는 ※ 종목객체 요청 - 15초당 최대 60회 ※ 주문 - 15초당 최대 90회 ※ 계좌 조회 - 15초당 최대 60회 처럼 나와 있는데요. 1. 종목 객체를 여러 개 사용할 경우 각 종목별로 15초당 최대 60회인건가요? 아니면 모든 종목 요청의 합이 60회인건가요? 2. 한 번에 추가(구독) 가능한 최대 종목 수는 어떻게 되나요? 3. 과거 봉 데이터는 최대 300개까지 가능하나요? 이것이 종목별 300개인가요, 아니면 전체 합산인가요? 4. 실시간 데이터 저장 건수가 최대 5000봉이 맞나요? 모든 종목의 합인가요, 아니면 종목별인가요? 5. 이러한 제약이 하나의 스크립트별 제약인가요? 아니면 실행되고 있는 모든 스크립트 전체에 대한 제약인가요? 6. 이 외에도 다른 제약사항들이 있나요?
프로필 이미지
멍거
50
글번호 226389
답변완료

자동종목검색 매수식에 매도식 추가 부탁드려요

스팟 입문자이오니 양해바랍니다. 스팟언어로 자동 종목검색, 매수하는 코드는 찾았고 정상작동했습니다. 스탑주문의 매도 외 필요한 사항이 있어 위 종목검색 및 매수식에 추가하고 싶은데 어제의 고가, 저가, 시가, 종가 본 커뮤니티 문답을 좀 찾았고 객체 언급하셔서 직접 좀 실습처럼 뒤적거리니 종목을 특정하는 듯 보였고 (오해일 듯 합니다만) 종목 특정 아니고 자동종목으로 매수된 종목에 대하여 어제의 저가 이탈시 매도식 등을 추가하고 싶습니다. 입문자 실력없어 부록은 스팟교육자료 발췌했습니다. 부록 코드에 1. 어제 저가 이탈시 매도 2. 15:15 당일청산 3. 익절 및 손절 청산 추가해 주시기를 정중히 꼭 부탁드립니다. 부록: var timerInterval = 5; // 5초 타이머 간격(매 5초마다 특정 작업을 수행하도록 설정) var 매수금 = 30000; // 추매수할 금액(추가 매수 금액) // 종목검색 후 종목객체 요청할 종목코드를 저장할 배열변수 var MKList = []; // 검색 결과로 나온 종목코드를 저장할 배열 // 종목객체가 만들어진 순서대로 종목객체를 저장할 변수 var MK = []; // 실제 종목객체(MarketData)들이 담길 배열 // 종목객체 요청 카운트 변수 var req; // MKList에서 몇 번째 종목을 요청 중인지 나타내는 인덱스 function Main_OnStart() { var d = new Date(); // 현재 시간 객체 생성 HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds(); // HHMMSS 형태로 시분초 계산 Main.MessageList(HHMMSS,"|Start"); // 예스스팟 디버깅창에 로그 출력 Main.SetTimer(1, timerInterval*1000); // 1번 타이머를 (5초 * 1000) = 5000ms 간격으로 설정 } function Main_OnTimer(nEventID) { var d = new Date(); // 타이머가 호출될 때마다 현재 시간 다시 계산 HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds(); // HHMMSS 형태로 시분초 계산 // nEventID가 1번이고, 현재 시각이 09시00분00초(=90000) 이후라면 종목검색 요청 if (nEventID == 1 && HHMMSS >= 90000) { Main.MessageList(HHMMSS,"|종목검색요청"); // 종목검색을 요청한다는 로그 출력 /********* -------------- *********/ Main.ReqPowerSearch("이평선크로스"); // "super search"라는 사용자 검색식으로 종목검색 요청 /********* -------------- *********/ } // nEventID가 2번이면, 종목객체 재요청 로직 수행 if (nEventID == 2) { Main.KillTimer(2); // 2번 타이머 중지 Main.MessageList(HHMMSS,"|종목객체재요청"); // 종목객체 재요청 로그 Main.ReqMarketData(MKList[req]); // req 인덱스에 해당하는 종목코드를 재요청 } } function Main_OnRcvItemList(aItemList, nCount) { var d = new Date(); // 현재 시간 객체 생성 HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds(); // HHMMSS 형태로 시분초 계산 Main.KillTimer(1); // 1번 타이머 중지(연속 검색 방지 등을 위해) Main.MessageList(HHMMSS,"|종목검색완료|검색된종목수:", nCount); // 검색 종목 수 로그 MKList = []; // MKList 초기화 // 검색 결과가 1개 이상이면 if (nCount > 0) { // 아직 매수된 종목객체(MK)가 전혀 없는 경우 if (MK.length == 0) { // 결과 전체를 MKList에 저장 MKList = aItemList; } else { // 이미 매수된 종목이 있을 경우에는 중복되지 않는 종목만 MKList에 추가 for (var a = 0; a < nCount; a++) { var Add = true; for (var b = 0; b < MK.length; b++) { // 이미 MK에 있는 종목이면 Add를 false로 if (aItemList[a] == MK[b].code) { Add = false; } } // 중복되지 않을 때만 MKList에 push if (Add == true) { MKList.push(aItemList[a]); } } } Main.MessageList(HHMMSS,"|요청할 종목객체수:",MKList.length); // 실제로 요청할 종목 수 로그 } // 새로 요청할 종목이 없다면(=MKList.length==0), 1번 타이머 재설정(다음 검색 대기) if (MKList.length == 0) { Main.SetTimer(1, timerInterval*1000); } else { // 새로 요청할 종목이 있으면 req=0부터 시작해서 MarketData 요청 req = 0; Main.MessageList(HHMMSS,"|종목객체요청",MKList[req]); // 첫 번째 종목 요청 로그 Main.ReqMarketData(MKList[req]); // 실제 종목객체 생성 요청 } } function Main_OnRcvMarketData(MarketData) { var d = new Date(); // 현재 시간 객체 HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds(); // HHMMSS 형태로 시분초 계산 // 수신된 MarketData 객체의 code가 현재 요청중인 MKList[req]와 같다면 if (MarketData.code == MKList[req]) { Main.MessageList(HHMMSS,"|종목객체생성",MarketData.code); // 종목객체 생성 로그 Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(2)), MarketData.Ask(2), 0); //Main.MessageList(HHMMSS,"|매수주문",MarketData.code,MarketData.Ask(3)); // 매수 주문 로그 Main.MessageList(HHMMSS,"|매수주문",MarketData.code,MarketData.Close); // 해당 종목의 종목객체를 MK 배열에 추가 MK.push(MarketData); // 다음 종목 요청 인덱스를 1 증가 req = req + 1; // 아직 요청할 종목이 남아 있다면 if (req < MKList.length) { Main.MessageList(HHMMSS,"|종목객체요청",MKList[req]); // 다음 종목 요청 로그 var S = Main.ReqMarketData(MKList[req]); // 다음 종목 요청 // 15초에 60번 이상 요청하면 시간제한(-1) 받을 수 있음 if (S == -1) { // 제한에 걸리면 2번 타이머를 15초 후로 설정하여 재시도 Main.MessageList(HHMMSS,"|종목객체생성 15초제한"); Main.SetTimer(2, 15000); } } else { // 모든 종목객체를 요청 끝냈을 때 Main.MessageList(HHMMSS,"|종목객체생성끝"); // 다시 1번 타이머(검색)를 5초 간격으로 재시작 Main.SetTimer(1, timerInterval*1000); } } }
프로필 이미지
dedoyes
71
글번호 226387

아침식사됩니다 님에 의해서 삭제되었습니다.

프로필 이미지
아침식사됩니다
3
글번호 226386
답변완료

오늘 스팟 동작 관련

혹시 오늘 스팟에 이슈는 없었죠? 여느때처럼 프로그램을 켜놨는데, 매도가 안나가서요. 제 로컬문제인지 혹시 이슈가있었는지 궁금해서 글남깁니다!
프로필 이미지
깅창
56
글번호 226385
답변완료

예스스팟 스크립트 질문 드립니다.

수고하십니다. 예스스팟 자동매도로 수익이 실현되고 나서 같은날 그 종목이 다시 자동매수되는 경우가 있습니다. 예스스팟 시작후 자동매도됐던 종목은 재매수 하지 않는 부분을 자바스크립트로 만들수 있을까요. 현재 쓰고 있는 자바스크립트에는 보유하고 있는 종목을 재매수 하지 않는 부분은 구현이 되어 있습니다. var timer5 = 3; // 3초 var 매수금 =100000 ; var 손절 = 0.95; var 익절 = 1.03; var OrderList = []; var MKList = []; var req; function Main_OnStart(){ Main.SetTimer(1, timer5*1000); // 1번 타이머 , 3초 MKList = []; //오늘 매수한 종목관리 배열 초기화 V1 =Account1.GetBalanceETCinfo(100); // 시작시 잔고 평가 금액 } function Main_OnTimer(nEventID) { var d = new Date(); YYYYMMDD = d.getFullYear()* 10000 + (d.getMonth() +1)*100 + d.getDate(); HHMMSS = d.getHours()* 10000+ d.getMinutes()*100 + d.getSeconds(); if (nEventID==1 && HHMMSS>090000 && HHMMSS<151500 ) { Main.ReqPowerSearch("필필필") // 종목검색수행 } if (nEventID==1) { var num = Account1.GetTheNumberOfBalances(); // 계좌보유종수 if (nEventID==1 && HHMMSS>090000 && HHMMSS<151500 ) { // 9시 ~ 15시 15분 사이 if(num >= 1) { // 보유종목이 1개 이상 if(Account1.GetBalanceETCinfo(100) >=V1*1.04) { //계좌평가금액이 스팟시작시 평가금액대비 Main.KillTimer(1); // 1번 타이머 종료 for (var i=0; i<num; i++) { //계좌리스트의 순서대로 Account1.SetBalance(i); //잔고를 세팅 if(Account1.Balance.count >0) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0, 1); } } } else { for (var i=0; i<num; i++) { Account1.SetBalance(i); if(Account1.Balance.current >= Account1.Balance.avgUnitCost*익절) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0, 1); } } } } } if (HHMMSS >= 151500) { Main.KillTimer(1); for(var i=0; i <num; i++) { Account1.SetBalance(i); if(Account1.Balance.count>0) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0,1);} } } } if(nEventID ==2){ Main.ReqMarketData(OrderList[req]);} } function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); OrderList = []; if (nCount >=1 ){ if(MKList.length == 0){ OrderList = aItemList} else{ for(var a =0; a<nCount; a++){ var Add = true; for (var b=0; b<MKList.length; b++){ if(aItemList[a]==MKList[b].code){ Add = false;} } if(Add==true && !IsStockInAccount(aItemList[a])){ OrderList.push(aItemList[a]);} } } } if(OrderList.length==0){ Main.SetTimer(1, timer5*1000);} else{ req = 0; Main.ReqMarketData(OrderList[req]);} } function Main_OnRcvMarketData(MarketData){ if( MarketData.code == OrderList[req]){ MKList.push(MarketData); //계좌에 같은 종목 있는지 확인하고 없는 경우만 매수 if(!IsStockInAccount(MarketData.code)){ // Account1.OrderBuy(MarketData.code,1,0,1); // 시장가 한주를 주문한다. // 지정가로 주문하고자 할때는 아래로 변경 Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1); //Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),MarketData.Ask(1),0); Main.MessageList(MarketData.code + "주식을 매수합니다");} else{ Main.MessageList(MarketData.code + "주식을 매수 안 합니다");} req = req+1; if(req<OrderList.length){ var aa = Main.ReqMarketData(OrderList[req]); if( aa = -1 ){Main.SetTimer(2, 15000);}} else{Main.SetTimer(1, timer5*1000);} } } //계좌에 같은 종목이 있는지 확인 function IsStockInAccount(stockCode){ var numberOfBalances = Account1.GetTheNumberOfBalances(); for (var i = 0; i <numberOfBalances; i++){ Account1.SetBalance(i); if(stockCode == Account1.Balance.code){return true;} // 계좌에 같은 종목이 있으면 트루 반환 } return false; // 계좌에 같은 종목이 없으면 폴스 반환 }
프로필 이미지
대봉코
64
글번호 226384