커뮤니티

현재가가 매도 1호가 일때 주문

프로필 이미지
adino30
2018-04-16 14:44:26
3038
글번호 224382
답변완료
안녕하세요? elw 종목적용시,슬리피지를 줄이려고 아래와 같이 스팟 적용코자 합니다. 도움 부탁드립니다. 1.예스트레이더 차트에서 매수신호발생 1) 현재가가 매도 1호가이면 매수주문 2) 현재가가 매도1호가가 아니면 매수주문 취소 3) 매도1호가 잔량이 5만 이하면 매수주문 취소 2. 차트에서 매도신호 발생시에는, 1) 현재가에 매도주문 2) 미체결시 1호가 올려서 매도정정 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-05-03 16:51:48

안녕하세요 예스스탁입니다. 스팟 답변은 가이드 입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 수식내에 게시판 금칙어가 있습니다. 영문 업데이트가 Up*date로 중간에 별이 들어가 있으므로 삭제하시기 바랍니다. 스크립트객체설정 차트객체 --> 객체명 Chart1 , 신호를 받을 차트와 아이디 연결 계좌객체 --> 객체명 Account1 , 계좌번호지정 종목객체 --> 객체명 MarketData1, 차트와 동일종목으로 지정 var BuyStep; var BID,Bnum,BxID,BxNum; //스팟시작 function Main_OnStart() { //BuyStep은 0 BuyStep = 0; } //차트신호발생 function Chart1_OnRiseSignal(Signal) { //매수신호발생 if (BuyStep == 0 && Signal.signalKind == 1) { //BuyStep은 1 BuyStep = 1; } //매수청산신호발생 if (Signal.signalKind == 2) { //잔고셋팅 Account1.SetBalance(MarketData1.code,0); //수량이 있으면 if (Account1.Balance.count > 0) { //보유수량만큼만 현재가로 매도 BxID = Account1.OrderSell(MarketData1.code, Account1.Balance.count, MarketData1.current , 0); } } } function Main_OnUp*dateMarket(sItemCode, lUp*dateID) { //BuyStep이 1이고 현재가가 매도1호가일때 if (BuyStep == 1 && MarketData1.current == MarketData1.Ask(1)) { //BuyStep을 2로 변경 BuyStep = 2; //현재가로 매수주문 BID = Account1.OrderBuy(MarketData1.code,10,MarketData1.current,0); } //BuyStep이 3일떄 if (BuyStep == 3) { //매수주문 미체결객체 설정 Account1.SetUnfill(BNum) //미체결이 있는 상태에서 현재가가 매도1호가가 아니면 if (Account1.Unfill.count > 0 && MarketData1.current != MarketData1.Ask(1)) { //매수주문취소 Account1.OrderCancel(BNum); //BuyStep은 0 BuyStep = 0; } //미체결이 있는 상태에서 매도1호가 잔량이 5만이하이면 if (Account1.Unfill.count > 0 && MarketData1.AskAmount(1) < 50000) { //매수주문 취소 Account1.OrderCancel(BNum); //BuyStep은 0 BuyStep = 0; } } } function Main_OnOrderResponse(OrderResponse) { //BuyStep이 2이고 매수주문 주문응답을 받으면 if (BuyStep == 2 && OrderResponse.orderID == BID) { //주문번호 저장 BNum = OrderResponse.orderNum; //스텝은 3으로 변경 BuyStep = 3; } //매도주문에 대한 응답이면 if (OrderResponse.orderID == BxID) { //주문번호 저장 BxNum = OrderResponse.orderNum; //5초 타이머 실행(타이머 아이디는 1) Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { //1번 타이머가 동작하면 if (nEventID == 1) { //매도주문에 대한 미체결 객체 셋팅 Account1.SetUnfill(BxNum); //미체결이 있으면 if (Account1.Unfill.count > 0) { //기본 주문가격에 1호가 올려 정정주문 Account1.OrderReplacePrice(BxNum, Account1.Unfill.price + MarketData1.GetTickSize(Account1.Unfill.price)); } } } 즐거운 하루되세요 > adino30 님이 쓴 글입니다. > 제목 : 현재가가 매도 1호가 일때 주문 > 안녕하세요? elw 종목적용시,슬리피지를 줄이려고 아래와 같이 스팟 적용코자 합니다. 도움 부탁드립니다. 1.예스트레이더 차트에서 매수신호발생 1) 현재가가 매도 1호가이면 매수주문 2) 현재가가 매도1호가가 아니면 매수주문 취소 3) 매도1호가 잔량이 5만 이하면 매수주문 취소 2. 차트에서 매도신호 발생시에는, 1) 현재가에 매도주문 2) 미체결시 1호가 올려서 매도정정 감사합니다.