커뮤니티

KODEX200 , KODEX인버스

프로필 이미지
새로운세상
2019-11-04 11:14:12
3340
글번호 225058
답변완료
안녕하세요 다음 수식 부탁드립니다. KODEX200 , KODEX인버스 두종목 모두 일봉을 사용하여 당일 장개시전 08:45 ~ 08:55 에 '전일종가 +- 5tick' 기준으로 주문하는 방식으로, 주문후 당일 미체결되어도 상관없습니다. 두종목 모두 다음 기준에 의해 매매되며, YT 및 차트 등은 사용하지 않고 예스스팟 수식만으로 거래하고 싶습니다. ---> 매뉴얼에 종목객체 일봉의 경우 최대 300개로 한정이 되어 있는데 만약 500 봉이 불가하다면, 차트 불러오는 방법으로 부탁드립니다. (어느 경우든 YT 수식은 사용하지 않음) < 매수주문 기준 > 1) D+2 기준으로 계좌의 예수금잔고가 총평가순자산액의 20% 이상이고 2) 종목당 총투자금액이 5천만원 이하일 때 <--- 5천만원 이하인 종목은 매수조건 만족시 계속 주문 3) 일봉기준 최근 500 봉 종가기준 최고가로 부터 10% 이상 전일종가가 하락하고 4) '전일종가 < 전전일종가' 일 경우 100 만원이하 금액으로 08:45 ~ 08:55 '전일종가 - 5tick'으로 매수 주문 < 매도주문 기준 > 종목의 평균매입가 대비 15%이상 수익시 잔고 전량을 08:45 ~ 08:55 '전일종가 + 5tick'으로 매도 주문 < 기타 사항 > 객체 및 변수 등 설정해야 할 부분이 있다면 부탁드립니다. 이상입니다 감사합니다 !!
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-11-08 17:01:07

안녕하세요 예스스탁입니다. 아래 수식을 참고하셔서 수정보완해 사용하시기 바랍니다. 500봉이 필요하므로 차트객체를 이용해야 합니다. 수식안에서 차트와 종목객체를 생성하므로 스크립트 객채화면에는 계좌객체(Account1)만 추가하시면 됩니다. var C1 = "069500"; var C2 = "114800"; function Main_OnStart() { var CTSet = new ReqChartItem(C1,0,CHART_PERIOD_DAILY,600,CHART_REQCOUNT_BAR,false,false); Main.ReqChartEx(CTSet); } function Main_OnRcvChartEx(ChartEx) { if (ChartEx.GetCode(1) == C1) { CT1 = ChartEx; Main.MessageList("차트객체생성 : ",CT1.GetCode(1)); var CTSet = new ReqChartItem(C2,0,CHART_PERIOD_DAILY,600,CHART_REQCOUNT_BAR,false,false); Main.ReqChartEx(CTSet); } if (ChartEx.GetCode(1) == C2) { CT2 = ChartEx; Main.MessageList("차트객체생성 : ",CT2.GetCode(1)); Main.ReqMarketData(C1); } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == C1) { MK1 = MarketData; Main.MessageList("종목객체생성 : ",MK1.code); Main.ReqMarketData(C2); } if (MarketData.code == C2) { MK2 = MarketData; Main.MessageList("종목객체생성 : ",MK2.code); Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 084500 && HHMMSS < 085000) { Main.KillTimer(1); var H1 = 0; var H2 = 0; for (i = 0; i < 500;i++) { if (CT1.GetClose(1,i) > H1) { H1 = CT1.GetClose(1,i); } if (CT2.GetClose(1,i) > H2) { H2 = CT2.GetClose(1,i); } } Main.MessageList(H1,H2); Main.MessageList("D+2 추정예수금 : ",Account1.GetBalanceETCinfo(39));//NH는 20 Main.MessageList("총평가순자산액 : ",Account1.GetBalanceETCinfo(100)); //NH는 (Account1.GetBalanceETCinfo(20) >= Account1.GetBalanceETCinfo(100)*0.2) if (Account1.GetBalanceETCinfo(39) >= Account1.GetBalanceETCinfo(100)*0.2) { Account1.SetBalance(C1,0); if (Account1.Balance.count == 0 ||(Account1.Balance.count > 0 && Account1.Balance.current <= Account1.Balance.avgUnitCost*1.15 && Account1.Balance.count * Account1.Balance.avgUnitCost < 50000000 )) { if (CT1.GetClose(1,0) < H1*0.90 && CT1.GetClose(1,0) < CT1.GetClose(1,1)) { var P1 = CT1.GetClose(1,0); for (var i = 1; i <= 5; i++) { t1 = MK1.GetTickSize(P1); t2 = MK1.GetTickSize(P1-t1); if (t1 == t2) P1 = P1-t1; else P1 = P1-t2; } Account1.OrderBuy(C1,Math.floor(1000000/P1),P1,0); } } if (Account1.Balance.count > 0 && Account1.Balance.current >= Account1.Balance.avgUnitCost*1.15) { var X1 = CT1.GetClose(1,0); for (var i = 1; i <= 5; i++) { X1 = X1 + MK1.GetTickSize(X1); } Account1.OrderSell(C1,Account1.Balance.count,X1,0); } Account1.SetBalance(C2,0); if (Account1.Balance.count == 0 ||(Account1.Balance.count > 0 && Account1.Balance.current <= Account1.Balance.avgUnitCost*1.15 && Account1.Balance.count * Account1.Balance.avgUnitCost < 50000000 )) { if (CT2.GetClose(1,0) < H2*0.90 && CT2.GetClose(1,0) < CT2.GetClose(1,1)) { var P2 = CT2.GetClose(1,0); for (var i = 1; i <= 5; i++) { t1 = MK2.GetTickSize(P2); t2 = MK2.GetTickSize(P2-t1); if (t1 == t2) P2 = P2-t1; else P2 = P2-t2; } Account1.OrderBuy(C1,Math.floor(1000000/P2),P2,0); } } if (Account1.Balance.count > 0 && Account1.Balance.current >= Account1.Balance.avgUnitCost*1.15) { var X2 = CT2.GetClose(1,0); for (var i = 1; i <= 5; i++) { X2 = X2+MK2.GetTickSize(X2); } Account1.OrderSell(C2,Account1.Balance.count,X2,0); } } } } 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : KODEX200 , KODEX인버스 > 안녕하세요 다음 수식 부탁드립니다. KODEX200 , KODEX인버스 두종목 모두 일봉을 사용하여 당일 장개시전 08:45 ~ 08:55 에 '전일종가 +- 5tick' 기준으로 주문하는 방식으로, 주문후 당일 미체결되어도 상관없습니다. 두종목 모두 다음 기준에 의해 매매되며, YT 및 차트 등은 사용하지 않고 예스스팟 수식만으로 거래하고 싶습니다. ---> 매뉴얼에 종목객체 일봉의 경우 최대 300개로 한정이 되어 있는데 만약 500 봉이 불가하다면, 차트 불러오는 방법으로 부탁드립니다. (어느 경우든 YT 수식은 사용하지 않음) < 매수주문 기준 > 1) D+2 기준으로 계좌의 예수금잔고가 총평가순자산액의 20% 이상이고 2) 종목당 총투자금액이 5천만원 이하일 때 <--- 5천만원 이하인 종목은 매수조건 만족시 계속 주문 3) 일봉기준 최근 500 봉 종가기준 최고가로 부터 10% 이상 전일종가가 하락하고 4) '전일종가 < 전전일종가' 일 경우 100 만원이하 금액으로 08:45 ~ 08:55 '전일종가 - 5tick'으로 매수 주문 < 매도주문 기준 > 종목의 평균매입가 대비 15%이상 수익시 잔고 전량을 08:45 ~ 08:55 '전일종가 + 5tick'으로 매도 주문 < 기타 사항 > 객체 및 변수 등 설정해야 할 부분이 있다면 부탁드립니다. 이상입니다 감사합니다 !!