커뮤니티

수식 부탁드립니다.

프로필 이미지
폭포왕
2021-01-26 21:37:21
3028
글번호 225411
답변완료
안녕하세요. 예스스팟에 갓 입문한 왕초보입니다. 아래 조건으로 가이드만 잡아 주시면 추가 코드 작성에 많은 도음이 될것 같습니다. 수식 부탁드립니다. - 국내선물 차트는 2개(20틱봉 차트, 1분봉 차트)를 이용. - 지표이름을 지정해 각 차트에 적용. - 9시 장 시작했을 때 틱봉차트에서 첫번째 20틱 양봉 종가 > sar(0.02, 0.2) 이고 분봉차트에서 1분봉 종가 > ma(10) 일때 1분봉 매수 진입하고 1분봉 종가 < ma(10) 일때 매수 청산 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-03-02 13:36:11

안녕하세요 예스스탁입니다. 아래 가이드 수식 참고하셔서 수정보완해 사용하시기 바랍니다. 동일종목의 차트를 2개 열어야 하고 구분할 필요가 있어서 주기를 구분할 수 있는 지표를 하나더 추가하셔야 합니다. Plot1(DataCompress); DataCompress라는 이름으로 아래 내용을 지표식으로 작성해 추가하고 이용하셔야 합니다. 차트생성시 해당 지표도 같이 적용해서 틱봉인지 분봉이지 구분하는데 사용됩니다. 수식안에서 차트와 종목객체가 만들어 지므로 스크립트 객체화면에는 계좌객체만 있으면 됩니다. var 지표이름1 = "파라볼릭"; var 지표이름2 = "단순이동평균1"; var 지표이름3 = "Datacompress"; var Req,Tchart,Mchart,Bcond; //스팟시작 function Main_OnStart() { //차트설정(연결선물,20틱,봉수 5000개,갭보정안함,수정주가처리안함) var ChartSet = new ReqChartItem("00000000",20,CHART_PERIOD_TICK,5000,CHART_REQCOUNT_BAR,false,false); //차트에 적용할 지표 var IndiSet = new Array(new IndicatorInfo(지표이름1),new IndicatorInfo(지표이름2)); Main.ReqChartEx(ChartSet,null,IndiSet); Req = 0; Bcond = false; } function Main_OnRcvChartEx(ChartEx) { //최초 생성차트 if (Req == 0) { //TChart에 차트객체 저장 Tchart = ChartEx; //차트설정(연결선물,1분,봉수 5000개,갭보정안함,수정주가처리안함) var ChartSet = new ReqChartItem("00000000",1,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,false); //차트에 적용할 지표 var IndiSet = new Array(new IndicatorInfo(지표이름1),new IndicatorInfo(지표이름2)); Main.ReqChartEx(ChartSet,null,IndiSet); Req = 1; } //두분째 생성차트 if (Req == 1) { //MChart에 차트객체 저장 Mchart = ChartEx; Req = 2; //연결선물 종목객체 생성요청 Main.ReqMarketData("00000000"); } } function Main_OnRcvMarketData(MarketData) { //종목객체가 생성되면 MK에 저장 if (Req == 2 && MarketData.code == "00000000") { MK = MarketData; Req = 3; } } //차트 봉완성 function Main_OnBarAppended(ChartEx, nData) { //봉완성차트가 틱봉이고 당일 첫봉 완성이면 if (ChartEx.GetIndicatorData(지표이름3 ,1,0) == 0 && Tchart.GetSDate(1,1) != Tchart.GetSDate(1,2)) { //첫봉종가저장 C1 = Tchart.GetClose(1, 1); //첫봉 파라볼릭값저장 V1 = Tchart.GetIndicatorData(지표이름1, 1, 1); } //봉완성차트가 분봉이고 당일 첫봉 완성이면 if (ChartEx.GetIndicatorData(지표이름3 ,1,0) == 2 && Mchart.GetSDate(1,1) != Mchart.GetSDate(1,2)) { //틱봉 당일첫봉의 종가가 파라볼릭보다 크고 //분봉의 종가가 이동평규보다 크면 1계약 매수 if (C1 > 0 && V1 > 0 && C1 > V1 && Mchart.GetClose(1, 1) > Mchart.GetIndicatorData(지표이름2, 1, 1)) { BID = Account1.OrderBuy(Main.GetOrderCode(MK.code), 1, MK.Ask(3), 0); Bcond = true; } } //매수주문을 했고 //봉완성차트가 분봉이고 당일 두번쨰봉 이후에 if (Bcond == true && ChartEx.GetIndicatorData(지표이름3 ,1,0) == 2 && Mchart.GetSDate(1,1) == Mchart.GetSDate(1,2) ) { //진임주문이 미체결이면 취소 Account1.SetUnfill(Bnum); if (Account1.Unfill.count) { Account1.OrderCancel(Bnum) } Account1.SetBalance(Main.GetOrderCode(MK.code),0); //매수진고가 있고 //분봉의 종가가 이동평규보다 작으면 1계약 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 2 && Mchart.GetClose(1, 1) < Mchart.GetIndicatorData(지표이름2, 1, 1)) { Account1.OrderSell(Main.GetOrderCode(MK.code), 1, MK.Bid(3), 0); } } } function Main_OnOrderResponse(OrderResponse) { //매수진입주문 주문번호 저장 if (OrderResponse.orderID == BID) { Bnum = OrderResponse.orderNum; } } 즐거운 하루되세요 > 폭포왕 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > 안녕하세요. 예스스팟에 갓 입문한 왕초보입니다. 아래 조건으로 가이드만 잡아 주시면 추가 코드 작성에 많은 도음이 될것 같습니다. 수식 부탁드립니다. - 국내선물 차트는 2개(20틱봉 차트, 1분봉 차트)를 이용. - 지표이름을 지정해 각 차트에 적용. - 9시 장 시작했을 때 틱봉차트에서 첫번째 20틱 양봉 종가 > sar(0.02, 0.2) 이고 분봉차트에서 1분봉 종가 > ma(10) 일때 1분봉 매수 진입하고 1분봉 종가 < ma(10) 일때 매수 청산 감사합니다.