커뮤니티

질문드립니다.

프로필 이미지
stockric
2019-01-18 10:53:36
3101
글번호 224698
답변완료
아래는 친절히 답해주셔서 잘 사용하고 있습니다. 감사합니다. 1. 종목검색을 9시에 시작하고 원하는시간을 설정하여 종목검색을 종료할 수 있었으면 좋겠습니다. 2. 관심종목에 넣은 종목을 매매하고싶습니다. 3. 아래 스톱셋 기능을 제거하고 싶습니다. 4. 2%수익시 종목의 80%를 시장가로 청산하는 청산식이 추가되었으면 좋겠습니다. 감사합니다.아래는 로직입니다. var reqItemList = []; //검색되서 차트요청한 종목에 대해 종목코드를 저장할 배열변수 var ItemList = []; //검색된 종목 중 reqItemList에 없는 종목에 대해 종목코드를 저장한 배열변수장 var Count; //요청할 종목갯수 var ReqCount; //종목검색 후 차트객체 요청한 종목갯수 function Main_OnStart() { Main.MessageList("스팟시작"); Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList("종목검색완료 : 검색된 종목수 : ",nCount); //ItemList 변수 초기화 ItemList = []; //검색종목수가 1개 이상일떄만 수행 if (nCount > 0) { //reqItemList에 저장된 종목코드가 한개도 없을때 if (reqItemList.length == 0) { //ItemList 배열변수에 aItemList를 차례대로 모두 옮김 Count = 0; for (var i = 0; i < nCount; i++) { ItemList.push(aItemList[i]); Count = Count+1; } } else//reqItemList에 저장된 종목코드가 한개이상일때 { //검색된 종목 중 reqItemList에 없는 종목만 ItemList에 담음 Count = 0; for (var i = 0; i < nCount; i++) { var add = true; for (var z = 0; z < reqItemList.length; z++) { if (aItemList[i] == reqItemList[z]) { add = false; Main.MessageList("이미 차트생성된 종목 : ",aItemList[i]); } } if (add == true) { ItemList.push(aItemList[i]); Count = Count+1; } } } //생성할 종목수가 1개 이상일떄 if (Count > 0) { Main.MessageList("차트객체 생성시작 : 생성할 종목수 : ",Count,ItemList); Main.SetTimer(1, 1000); ReqCount = 0; } } } function Main_OnTimer(nEventID) { if (nEventID == 2) { Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } if (nEventID == 1) { var StopSet = new SystemStopInfo( new StopLoss(5, CALCMETHOD_PERCENT, 0), new StopTrailing(5, 7, CALCMETHOD_PERCENT, 0), new StopProfitTarget(10, CALCMETHOD_PERCENT, 0), //new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93), new StopEndOfDay(230000)); var ChartSet = new ReqChartItem(ItemList[ReqCount],2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("##단타", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); //생성요청한 종목에 대해 reqItemList에 종목코드 추가 reqItemList.push(ItemList[ReqCount]); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageList("차트객체 생성완료 : 생성된 종목수 : ",ReqCount); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Main.MessageLog("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,ChartEx.GetClose(1,0),1); Main.MessageList("매도주문"); } //잔고수량만큼만 시장가매도 } }
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2019-01-22 15:22:22

안녕하세요 예스스탁입니다. 1,2,3번까지만 처리해 드립니다.주석 참고하셔서 수정보완하시기 바랍니다. 4번을 해당식에 추가하려면 작성해야할 내용이 많아 저희가 해드리기 어렵습니다. var SearchStartTime = 90000; var SearchEndTime = 100000; var reqItemList = []; //검색되서 차트요청한 종목에 대해 종목코드를 저장할 배열변수 var ItemList = []; //검색된 종목 중 reqItemList에 없는 종목에 대해 종목코드를 저장한 배열변수장 var Count; //요청할 종목갯수 var ReqCount; //종목검색 후 차트객체 요청한 종목갯수 var Interest = []; var aItemList1 = []; function Main_OnStart() { Main.MessageList("스팟시작"); //특정관심그룹의 종목코드들을 Interest변수에 옮김 var aa = Main.GetItemCountOfInterest("관심그룹명"); for (var i = 0; i < aa; i++) { Interest[i] = Main.GetItemCodeInInterest("관심그룹명",i) } Main.SetTimer(2, 180000);//2번 타이머(180초) } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList("종목검색완료 : 검색된 종목수 : ",nCount); //ItemList 변수 초기화 ItemList = []; //검색종목수가 1개 이상이고 관심종목수도 1개 이상일떄만 수행 if (aItemList.length > 0 && Interest.length > 0) { //검색된 종목과 관심그룹의 종목을 비교해 동일한 종목만 aItemList1에 저장 aItemList1 = []; for (var i = 0; i < aItemList1.length; i++) { for (var z = 0; z < Interest.length; z++) { if (aItemList1[i] == Interest[z]) { aItemList1.push(aItemList[i]); } } } //동일 종목이 있을 때만 if (aItemList1.length > 0) { //reqItemList에 저장된 종목코드가 한개도 없을때 if (reqItemList.length == 0) { //ItemList 배열변수에 aItemList를 차례대로 모두 옮김 Count = 0; for (var i = 0; i < aItemList1.length; i++) { ItemList.push(aItemList1[i]); Count = Count+1; } } else//reqItemList에 저장된 종목코드가 한개이상일때 { //검색된 종목 중 reqItemList에 없는 종목만 ItemList에 담음 Count = 0; for (var i = 0; i < aItemList1.length; i++) { var add = true; for (var z = 0; z < reqItemList.length; z++) { if (aItemList1[i] == reqItemList[z]) { add = false; Main.MessageList("이미 차트생성된 종목 : ",aItemList1[i]); } } if (add == true) { ItemList.push(aItemList1[i]); Count = Count+1; } } } } //생성할 종목수가 1개 이상일떄 if (Count > 0) { Main.MessageList("차트객체 생성시작 : 생성할 종목수 : ",Count,ItemList); Main.SetTimer(1, 1000); ReqCount = 0; } } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 2) { if (HHMMDD >= SearchStartTime && HHMMDD < SearchEndTime) { Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } } if (nEventID == 1) { var ChartSet = new ReqChartItem(ItemList[ReqCount],2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false); var SystemSet = new SystemInfo("##단타", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); //생성요청한 종목에 대해 reqItemList에 종목코드 추가 reqItemList.push(ItemList[ReqCount]); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageList("차트객체 생성완료 : 생성된 종목수 : ",ReqCount); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Main.MessageList("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,ChartEx.GetClose(1,0),1); Main.MessageList("매도주문"); } //잔고수량만큼만 시장가매도 } } } 즐거운 하루되세요 > stockric 님이 쓴 글입니다. > 제목 : 질문드립니다. > 아래는 친절히 답해주셔서 잘 사용하고 있습니다. 감사합니다. 1. 종목검색을 9시에 시작하고 원하는시간을 설정하여 종목검색을 종료할 수 있었으면 좋겠습니다. 2. 관심종목에 넣은 종목을 매매하고싶습니다. 3. 아래 스톱셋 기능을 제거하고 싶습니다. 4. 2%수익시 종목의 80%를 시장가로 청산하는 청산식이 추가되었으면 좋겠습니다. 감사합니다.아래는 로직입니다. var reqItemList = []; //검색되서 차트요청한 종목에 대해 종목코드를 저장할 배열변수 var ItemList = []; //검색된 종목 중 reqItemList에 없는 종목에 대해 종목코드를 저장한 배열변수장 var Count; //요청할 종목갯수 var ReqCount; //종목검색 후 차트객체 요청한 종목갯수 function Main_OnStart() { Main.MessageList("스팟시작"); Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList("종목검색완료 : 검색된 종목수 : ",nCount); //ItemList 변수 초기화 ItemList = []; //검색종목수가 1개 이상일떄만 수행 if (nCount > 0) { //reqItemList에 저장된 종목코드가 한개도 없을때 if (reqItemList.length == 0) { //ItemList 배열변수에 aItemList를 차례대로 모두 옮김 Count = 0; for (var i = 0; i < nCount; i++) { ItemList.push(aItemList[i]); Count = Count+1; } } else//reqItemList에 저장된 종목코드가 한개이상일때 { //검색된 종목 중 reqItemList에 없는 종목만 ItemList에 담음 Count = 0; for (var i = 0; i < nCount; i++) { var add = true; for (var z = 0; z < reqItemList.length; z++) { if (aItemList[i] == reqItemList[z]) { add = false; Main.MessageList("이미 차트생성된 종목 : ",aItemList[i]); } } if (add == true) { ItemList.push(aItemList[i]); Count = Count+1; } } } //생성할 종목수가 1개 이상일떄 if (Count > 0) { Main.MessageList("차트객체 생성시작 : 생성할 종목수 : ",Count,ItemList); Main.SetTimer(1, 1000); ReqCount = 0; } } } function Main_OnTimer(nEventID) { if (nEventID == 2) { Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } if (nEventID == 1) { var StopSet = new SystemStopInfo( new StopLoss(5, CALCMETHOD_PERCENT, 0), new StopTrailing(5, 7, CALCMETHOD_PERCENT, 0), new StopProfitTarget(10, CALCMETHOD_PERCENT, 0), //new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93), new StopEndOfDay(230000)); var ChartSet = new ReqChartItem(ItemList[ReqCount],2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("##단타", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); //생성요청한 종목에 대해 reqItemList에 종목코드 추가 reqItemList.push(ItemList[ReqCount]); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageList("차트객체 생성완료 : 생성된 종목수 : ",ReqCount); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Main.MessageLog("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,ChartEx.GetClose(1,0),1); Main.MessageList("매도주문"); } //잔고수량만큼만 시장가매도 } }
프로필 이미지

stockric

2019-01-22 15:45:23

답변 감사합니다. 진입한 한개의 종목에서 2% 수익이면 해당종목의 80%청산입니다. 식이 많이 어렵나요? 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 질문드립니다. > 안녕하세요 예스스탁입니다. 1,2,3번까지만 처리해 드립니다.주석 참고하셔서 수정보완하시기 바랍니다. 4번을 해당식에 추가하려면 작성해야할 내용이 많아 저희가 해드리기 어렵습니다. var SearchStartTime = 90000; var SearchEndTime = 100000; var reqItemList = []; //검색되서 차트요청한 종목에 대해 종목코드를 저장할 배열변수 var ItemList = []; //검색된 종목 중 reqItemList에 없는 종목에 대해 종목코드를 저장한 배열변수장 var Count; //요청할 종목갯수 var ReqCount; //종목검색 후 차트객체 요청한 종목갯수 var Interest = []; var aItemList1 = []; function Main_OnStart() { Main.MessageList("스팟시작"); //특정관심그룹의 종목코드들을 Interest변수에 옮김 var aa = Main.GetItemCountOfInterest("관심그룹명"); for (var i = 0; i < aa; i++) { Interest[i] = Main.GetItemCodeInInterest("관심그룹명",i) } Main.SetTimer(2, 180000);//2번 타이머(180초) } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList("종목검색완료 : 검색된 종목수 : ",nCount); //ItemList 변수 초기화 ItemList = []; //검색종목수가 1개 이상이고 관심종목수도 1개 이상일떄만 수행 if (aItemList.length > 0 && Interest.length > 0) { //검색된 종목과 관심그룹의 종목을 비교해 동일한 종목만 aItemList1에 저장 aItemList1 = []; for (var i = 0; i < aItemList1.length; i++) { for (var z = 0; z < Interest.length; z++) { if (aItemList1[i] == Interest[z]) { aItemList1.push(aItemList[i]); } } } //동일 종목이 있을 때만 if (aItemList1.length > 0) { //reqItemList에 저장된 종목코드가 한개도 없을때 if (reqItemList.length == 0) { //ItemList 배열변수에 aItemList를 차례대로 모두 옮김 Count = 0; for (var i = 0; i < aItemList1.length; i++) { ItemList.push(aItemList1[i]); Count = Count+1; } } else//reqItemList에 저장된 종목코드가 한개이상일때 { //검색된 종목 중 reqItemList에 없는 종목만 ItemList에 담음 Count = 0; for (var i = 0; i < aItemList1.length; i++) { var add = true; for (var z = 0; z < reqItemList.length; z++) { if (aItemList1[i] == reqItemList[z]) { add = false; Main.MessageList("이미 차트생성된 종목 : ",aItemList1[i]); } } if (add == true) { ItemList.push(aItemList1[i]); Count = Count+1; } } } } //생성할 종목수가 1개 이상일떄 if (Count > 0) { Main.MessageList("차트객체 생성시작 : 생성할 종목수 : ",Count,ItemList); Main.SetTimer(1, 1000); ReqCount = 0; } } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 2) { if (HHMMDD >= SearchStartTime && HHMMDD < SearchEndTime) { Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } } if (nEventID == 1) { var ChartSet = new ReqChartItem(ItemList[ReqCount],2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false); var SystemSet = new SystemInfo("##단타", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); //생성요청한 종목에 대해 reqItemList에 종목코드 추가 reqItemList.push(ItemList[ReqCount]); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageList("차트객체 생성완료 : 생성된 종목수 : ",ReqCount); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Main.MessageList("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,ChartEx.GetClose(1,0),1); Main.MessageList("매도주문"); } //잔고수량만큼만 시장가매도 } } } 즐거운 하루되세요 > stockric 님이 쓴 글입니다. > 제목 : 질문드립니다. > 아래는 친절히 답해주셔서 잘 사용하고 있습니다. 감사합니다. 1. 종목검색을 9시에 시작하고 원하는시간을 설정하여 종목검색을 종료할 수 있었으면 좋겠습니다. 2. 관심종목에 넣은 종목을 매매하고싶습니다. 3. 아래 스톱셋 기능을 제거하고 싶습니다. 4. 2%수익시 종목의 80%를 시장가로 청산하는 청산식이 추가되었으면 좋겠습니다. 감사합니다.아래는 로직입니다. var reqItemList = []; //검색되서 차트요청한 종목에 대해 종목코드를 저장할 배열변수 var ItemList = []; //검색된 종목 중 reqItemList에 없는 종목에 대해 종목코드를 저장한 배열변수장 var Count; //요청할 종목갯수 var ReqCount; //종목검색 후 차트객체 요청한 종목갯수 function Main_OnStart() { Main.MessageList("스팟시작"); Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList("종목검색완료 : 검색된 종목수 : ",nCount); //ItemList 변수 초기화 ItemList = []; //검색종목수가 1개 이상일떄만 수행 if (nCount > 0) { //reqItemList에 저장된 종목코드가 한개도 없을때 if (reqItemList.length == 0) { //ItemList 배열변수에 aItemList를 차례대로 모두 옮김 Count = 0; for (var i = 0; i < nCount; i++) { ItemList.push(aItemList[i]); Count = Count+1; } } else//reqItemList에 저장된 종목코드가 한개이상일때 { //검색된 종목 중 reqItemList에 없는 종목만 ItemList에 담음 Count = 0; for (var i = 0; i < nCount; i++) { var add = true; for (var z = 0; z < reqItemList.length; z++) { if (aItemList[i] == reqItemList[z]) { add = false; Main.MessageList("이미 차트생성된 종목 : ",aItemList[i]); } } if (add == true) { ItemList.push(aItemList[i]); Count = Count+1; } } } //생성할 종목수가 1개 이상일떄 if (Count > 0) { Main.MessageList("차트객체 생성시작 : 생성할 종목수 : ",Count,ItemList); Main.SetTimer(1, 1000); ReqCount = 0; } } } function Main_OnTimer(nEventID) { if (nEventID == 2) { Main.MessageList("종목검색시작"); Main.ReqPowerSearch("급등주검색"); Main.SetTimer(2, 180000);//2번 타이머(180초) } if (nEventID == 1) { var StopSet = new SystemStopInfo( new StopLoss(5, CALCMETHOD_PERCENT, 0), new StopTrailing(5, 7, CALCMETHOD_PERCENT, 0), new StopProfitTarget(10, CALCMETHOD_PERCENT, 0), //new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93), new StopEndOfDay(230000)); var ChartSet = new ReqChartItem(ItemList[ReqCount],2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("##단타", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); //생성요청한 종목에 대해 reqItemList에 종목코드 추가 reqItemList.push(ItemList[ReqCount]); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageList("차트객체 생성완료 : 생성된 종목수 : ",ReqCount); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1); Main.MessageLog("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,ChartEx.GetClose(1,0),1); Main.MessageList("매도주문"); } //잔고수량만큼만 시장가매도 } }