커뮤니티

예스 스팟 매도식 추가 가능여부 문의 드립니다.

프로필 이미지
deeparc
2025-03-27 22:48:05
366
글번호 189663
답변완료
안녕하세요 왜인지 모르겠지만 자꾸 글이 업로드 에러가 나서 첨부파일로 질문을 대체했습니다. 죄송한데 첨부 파일 한번 확인 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-03-28 10:33:57

안녕하세요 예스스탁입니다. 해당 내용은 구현은 가능합니다. 다만 올리신 수식은 차트기반에서 계산을 해야한는 내용이므로 스팟식으로 해당 내용을 구현할 수는 없습니다. 매수와 마찬가지로 종목검색식으로 작성해서 일정주기로 검색을 해서 검색된 종목 중 보유종목이 있으면 매도하게 구현하셔야 합니다. 종목검색이 한번에 2개가 가능하지 않으므로 매수와 매도검색을 번갈아 가면서 수행하게 하고 처리되게 작성하시면 됩니다. 아래는 가이드입니다. 식작성에 참고하시기 바랍니다. 1. 종목검색식 INPUT : 기간1(10),기간2(21); VAR : ap(0),esa(0),d1(0),ci(0),wt1(0),wt2(0); ap = (HIGH+LOW+CLOSE)/3; esa = Ema(ap, 기간1); d1 = Ema(abs(ap - esa), 기간1); ci = (ap - esa) / (0.015 * d1); wt1 = Ema(ci,기간2); wt2 = ma(WT1,4); IF WT1[1]<=60 && (Crossdown(WT1,WT2) OR Crossdown(WT[1],53) TheN find(1); 2 var timer5 = 2; // 2초 var 매수금 = 100000; var OrderList = []; var MKList = []; var req; var 종목제한수 = 10; var Search; function Main_OnStart() { Main.SetTimer(1, timer5 * 1000); MKList = []; Search = 1; } 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 < 151800) { Main.MessageList(Search); if (Search == 1) { Main.ReqPowerSearch("매수조건"); } else { Main.ReqPowerSearch("매도조건"); } Main.KillTimer(1); } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); Main.KillTimer(2); } } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList(nCount); OrderList = []; if (Search == 1) { if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList.slice(0, 종목제한수); } 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 >= 종목제한수) { break; } } } } if (OrderList.length == 0) { Main.SetTimer(1, timer5 * 1000); } else { req = 0; Main.ReqMarketData(OrderList[req]); } } Search = -1; } else { if (nCount >= 1) { for (var a = 0; a < aItemList.Length; a++) { for (var b = 0; b < MKList.length; b++) { if (aItemList[a] == MKList[b].code) { Account1.SetBalance(aItemList[a], 0); if (Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.countc,0,1); } } } } } Main.SetTimer(1, timer5 * 1000); Search = 1; } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == OrderList[req]) { MKList.push(MarketData); if (!IsStockInAccount(MarketData.code)) { Account1.OrderBuy(MarketData.code, 1, 0, 1); 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; } 즐거운 하루되세요 > deeparc 님이 쓴 글입니다. > 제목 : 예스 스팟 매도식 추가 가능여부 문의 드립니다. > 안녕하세요 왜인지 모르겠지만 자꾸 글이 업로드 에러가 나서 첨부파일로 질문을 대체했습니다. 죄송한데 첨부 파일 한번 확인 부탁드립니다.