커뮤니티

문의드립니다

프로필 이미지
doilzul
2018-07-29 18:43:53
2447
글번호 224542
답변완료
안녕하세요, 매수가 대비 -1% 시 현재가로 손절 주문내는 식과 12시 정각의 60 분봉 5일선 가격으로 주문내는법을 알고 싶습니다 감사합니다
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-08-13 15:57:32

안녕하세요 예스스탁입니다. 예스스팟의 수식답변은 식작성의 흐름을 알려드리는 가이드입니다. 스팟은 실시간에서 테스트 하면서 식을 만들어 가야 하므로 저희쪽에서 완성식을 만들어 드리지는 않습니다. 단순한 가이드로 보시고 아래 내용 참고하셔서 이후내용은 수정보완해 완성해 가셔야 합니다. 1 일정시간(10초)마다 잔고를 체크해 1%이상 손실발생했으면 전량 매도하는 식입니다. 타이머를 너무 짧게 셋팅하면 로드가 많이 걸리게 되므로 적당한 시간(초)으로 지정하셔서 사용하시면 됩니다. 스크립트 객체 설정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정 var List = []; var req; function Main_OnStart() { Main.SetTimer(1, 10000)//1번타이머 10초 셋팅 } //타이머 동작 function Main_OnTimer(nEventID) { //1번 타이머동작 if (nEventID == 1) { //계좌전체 종목수 var num = Account1.GetTheNumberOfBalances(); //인덱스를 1씩 증가 for (var i = 0; i < num; i++) { //리스타 첫종목 부터 한종목씩 잔고셋팅 Account1.SetBalance(Account1.Balance.code,0); //매수 수량이 있고 현재가가 평단가-1%이면 if (Account1.Balance.count > 0 && Account1.Balance.position == 2 && Account1.Balance.current <= Account1.Balance.avgUnitCost*0.99) { //시장가로 전량 매도 Account1.OrderSell(Account1.Balance.code, Balance.count, 0,1); } } } } 2 어떤 종목에 대해 주문을 내는 수식인지 불분명 합니다. 또한 스팟은 예약주문의 기능이 없습니다. 60분봉의 5이평 가격으로 지정가 주문을 내게 되면 매수주문일경우 5이평가격이 너무 높은 가격이거나 매도일경우 낮은 가격이면 현재가로 체결되는 것과 같습니다. 지정한 시간에 지정한 종목(잔고의 종목)에 대해 각 60분봉의 5이평을 확인하는 내용까지만 작성해 드립니다. 이후 내용은 사용자분이 수정보완하셔서 완성하시기 바랍니다. 12시가 되면 보유종목 종목코드를 CodeList에 차례대로 저장하고 CodeList의 각 종목에 대해 5이평을 적용된 60분봉의 차트를 열고 차트객체는 ChartObjeect에 순서대로 저장, 5이평값은 IndValue에 순서대로 저장합니다. 즉 CodeList,ChartObjeect,IndValue의 각 배열방은 동일종목에 대한 내용입니다. var HHMMSS,HHMMSS1,reqChartCount; var CodeList = []; var ChartObjeect = []; var IndValue = []; function Main_OnStart() { Main.SetTimer(1, 10000)//1번타이머 10초 셋팅 } //타이머 동작 function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS1 = HHMMSS; HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //1번 타이머동작하고 12시이면 if (nEventID == 1 && HHMMSS >= 120000 /*&& HHMMSS1 < 120000*/ ) { //1번타이머 종료 Main.KillTimer(1); //계좌전체 종목수 var num = Account1.GetTheNumberOfBalances(); //순서대로 list배열변수에 종목코드 저장 for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.count > 0) { CodeList.push(Account1.Balance.code); } } //1종목이상이면 if (CodeList.length >= 1) { reqChartCount = 0; //차트설정 60분봉 100개 var SetChart = new ReqChartItem(CodeList[reqChartCount], 60, CHART_PERIOD_MINUTE, 100,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 지표지정(기본으로 제공하는 지표중 단순이동평균1이 5이평 한개를 그리는 지표입니다.) var SetInd = new IndicatorInfo("단순이동평균1"); //차트생성 Main.ReqChartEx(SetChart,null,new Array(SetInd)); } } if (nEventID == 2) { //차트설정 60분봉 100개 var SetChart = new ReqChartItem(CodeList[reqChartCount], 60, CHART_PERIOD_MINUTE, 100,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 지표지정(기본으로 제공하는 지표중 단순이동평균1이 5이평 한개를 그리는 지표입니다.) var SetInd = new IndicatorInfo("단순이동평균1"); //차트생성 Main.ReqChartEx(SetChart,null,new Array(SetInd)); } } //차트객체 수신 function Main_OnRcvChartEx(ChartEx) { //수신된 차트객체의 종목코드와 요청한 종목코드 비교해 같음을 확인 if (ChartEx.GetCode(1) == CodeList[reqChartCount]) { //차트객체 저장 ChartObjeect[reqChartCount] = ChartEx; //생성된 차트에 적용된 지표의 차트 마지막봉 값을 저장 IndValue[reqChartCount] = ChartObjeect[reqChartCount].GetIndicatorData("단순이동평균1",1,0); //요청카운트 1증가 reqChartCount = reqChartCount +1; //요청카운트가 종목수보다 작으면 다음종목 요청 if (reqChartCount < CodeList.length) { //차트설정 5분봉 5백개 var SetChart = new ReqChartItem(CodeList[reqChartCount], 5, CHART_PERIOD_MINUTE, 500,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 지표지정 var SetInd = new IndicatorInfo("예스랭귀지 지표명"); //차트생성 var S = Main.ReqChartEx(SetChart,null,new Array(SetInd)); //객체생성 제한시간에 걸리면 20초 쉬고 다시 요청 if (S == -1) { Main.SetTimer(2, 20000); } } else//카운트가 종목수와 같으면 종료 { Main.MessageList("차트객체 생성 및 5이평 저장완료"); } } } 즐거운 하루되세요 > doilzul 님이 쓴 글입니다. > 제목 : 문의드립니다 > 안녕하세요, 매수가 대비 -1% 시 현재가로 손절 주문내는 식과 12시 정각의 60 분봉 5일선 가격으로 주문내는법을 알고 싶습니다 감사합니다