커뮤니티

문의드립니다

프로필 이미지
시고르시고르
2023-06-27 12:12:11
878
글번호 170128
답변완료
장 시초가에 청산하고자 할때 개장후가 아닌 장전 단일가에 청산하고 합니다. 스팟 게시판이 아니니까 스팟식은 안해주셔도 됩니다만 구성 흐름을 어떻게 짜야할지 모르겠습니다. 예를 들어 전날 종가즈음에 청산하는 걸로 하고 그 주문을 받아서 다음날 아침에 스팟으로 시간을 정하고 청산한다던지... 흐름만 알려주시면 매우 감사하겠습니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-06-27 13:55:13

안녕하세요 예스스탁입니다. 아래 가이드를 참고하시기 바랍니다. 1 SetStopEndofday(); 당일청산함수에 시간을 지정하지 않으면 과거봉에만 사용하는 마지막봉 청산입니다. 당일청산이 위와 같이 지정되어 있으면 다음날 시가가 수신될때 전일 포지션이 있으면 전일마지막봉에 당일청산 신호가 발생하게 되지만 시뮬레이션 신호이므로 실제 주문은 발생하지 않습니다. 위 청산설정을 사용하는 이유는 아침에 장개시전에 차트에 최종 포지션여부를 판단하기 위함입니다. 전일 강제로 청산을 발생시키면 다음날 전일 어떤 청산신호로 청산되었는지 알수가 없습니다. 2 스팟은 아래 흐름으로 작성하시면 됩니다. 1. 스팟시작시 타이머셋팅 2. 타이머동작하면 시간확인 3. 지정한 시간이되면 차트상 마지막봉의 포지션 상태확인 4. 매수나 매도포지션이 있고 잔고에 동일포지션이 있으면 청산 5. 선물옵션이면 지정가로 주문하시면 되지만 주식이면 장전 시간외종가로 주문은 주문구분이 다릅니다. 스팟 도움말에서 주문함수에서 주문구분 확인하시기 바랍니다. //스팟실행 function Main_OnStart() { //1번 타이머, 5초 셋팅 Main.SetTimer(1, 5000); OC = Main.GetOrderCode(Chart1.GetCode(1)); //종목객체요청 Main.ReqMarketData(OC); } //종목객체 수신 function Main_OnRcvMarketData(MarketData) { //종목객체 MK에 저장 if (MarketData.code == OC) { MK = MarketData; } } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //1번타이머 동작하고 8시 35분 이후이면 if (nEventID == 1 && HHMMSS >= 83500) { //1번 타이머 종료 Main.KillTimer(1); //차트에 마지막봉 포지션 상태가 0보타 크면(차트 매수포지션 상태) if (Chart1.GetOpenContracts() > 0) { Account1.OrderSell(OC, Math.abs(Chart1.GetOpenContracts()), MK.current,0); } //차트에 마지막봉 포지션 상태가 0보타 작으면(차트 매도포지션 상태) if (Chart1.GetOpenContracts() > 0) { Account1.OrderBuy(OC, Math.abs(Chart1.GetOpenContracts()), MK.current,0); } } } 즐거운 하루되세요 > 시고르시고르 님이 쓴 글입니다. > 제목 : 문의드립니다 > 장 시초가에 청산하고자 할때 개장후가 아닌 장전 단일가에 청산하고 합니다. 스팟 게시판이 아니니까 스팟식은 안해주셔도 됩니다만 구성 흐름을 어떻게 짜야할지 모르겠습니다. 예를 들어 전날 종가즈음에 청산하는 걸로 하고 그 주문을 받아서 다음날 아침에 스팟으로 시간을 정하고 청산한다던지... 흐름만 알려주시면 매우 감사하겠습니다.