커뮤니티

수식문의드립니다.

프로필 이미지
궁금궁금123
2016-09-19 12:09:26
1909
글번호 223989
답변완료
예스스팟으로 주문하고 있는데 예스스팟은 예트에서 신호받은 그 가격으로 주문이 나가는 것이 맞는지요? 현재는 현재가에서 주문이 나가고 있습니다. 그리고 현재 매도 +-5호가로 주문이 세팅 되어서 슬리피지가 너무 많아서 슬리피지를 없이 주문하려고 문의를 드립니다. 그래서 신호가대로 주문을 하고 싶은데 리버스 신호의 경우에는 증거금 문제로 이전 주문이 청산이 되었을때까지 기다렸다가 청산이 되고 난 후에 주문을 하고 싶습니다. 그리고 주문은 1계약씩 나눠서 나가게 해서 증거금을 풀로 차게 주문하고 싶습니다. 예를 들어서 하나 수식을 만들어 주시면 감사하겠습니다. 예) 예트에서 5-20 이평선 매도 매수전략이라고 가정할때 1. 주문은 예트에서 발생한 신호가로 청산도 신호가(리버스진입가)로- 미체결 리스크가 있어도 슬리피지 없게 하려구요. 2. 리버스 신호가 나왔을때, 청산을 지정가(예트 신호가)로 하기때문에 만약 지연될 경우, 청산이 되고 난후에 신호가로 진입할수 있는 수식 4. 모든 주문은 1계약씩 반복해서 증거금이 다 찰때까지 주문이 되도록, 다만 청산주문은 보유잔고 일괄 청산 5. 동시호가에 보유잔고가 있으면 시장가로 청산 부탁드립니다. 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-10-05 18:03:42

안녕하세요 예스스탁입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 신호발생하면 신호가격으로 주문내고 진입신호의 경우 리버스이면 일정시간후에 청산신호 미체결여부 확인해서 미체결이 없을때 주문이 집행되며 15시 40분에 잔고에 포지션있으면 청산주문을 하게 됩니다. 수식은 가이드 일뿐이므로 아래 흐름 확인하시고 수정보완해 사용하시기 바랍니다. 스크립트 객체설정 차트객체 : 객체명 Chart1, 차트와 아이디 연결 종목객체 : 객체명 MarketData1, 차트와 동일종목으로 지정 계좌겍체 : 객체명 Account1, 주문계좌번호 지정 var SK,Bt,Bxt,St,Sxt; var BP,BV,SP,SV; function Main_OnStart() { Main.MessageList("Start"); Main.SetTimer(99, 30000); } //차트에서 신호발생 function Chart1_OnRiseSignal(Signal) { SK = Signal.signalKind; Main.MessageList("신호발생 : 신호종류", SK,"신호가격",Signal.price,"신호수량",Signal.count); if (SK == 1) { Bt = Signal.time; BP = Signal.count; BV = Signal.price; //매도청산신호시간과 매수진입신호시간이 같으면(리버스) if (Sxt == Bt) { Main.SetTimer(1, 3000)//1번 타이머 셋팅, 3초타이머 } else { //같지 않으면 리버스가 아니므로 바로 주문 Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),BV,SP,0); } } if (SK == 2) { Bxt = Signal.time; BXID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Signal.count,Signal.price,0); } //매도진입신호발생 if (SK == 3) { St = Signal.time; SP = Signal.count; SV = Signal.price; //매수청산신호시간과 매도진입신호시간이 같으면(리버스) if (Bxt == St) { Main.SetTimer(2, 3000)//2번타이머 셋팅,3초타이머 } else{//같지 않으면 리버스가 아니므로 바로 주문 Account1.OrderSell(Main.GetOrderCode(MarketData1.code),SV,SP,0); } } if (SK == 4) { Sxt = Signal.time; SXID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Signal.count,Signal.price,0); } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { //매도청산신호 미체결확인해서 남은 잔량이 없으면 주문 Account1.SetUnfill(SXnum); if (Account1.Unfill.count == 0) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),BV,SP,0); Main.KillTimer(1); } } if (nEventID == 2) { //매수청산신호 미체결확인해서 남은 잔량이 없으면 주문 Account1.SetUnfill(SXnum); if (Account1.Unfill.count == 0) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code),SV,SP,0); Main.KillTimer(2); } } //15시40분에 계좌에 잔량있으면 청산 if (nEventID == 99 && HHMMSS >= 154000) { Main.KillTimer(99); Account1.SetBalance(Main.GetOrderCode(MarketData1.code),0); if (Account1.Balance.position == 1 && Account1.Balance.count > 0) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,MarketData1.Ask(1),0); } if (Account1.Balance.position == 2 && Account1.Balance.count > 0) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MarketData1.Bid(1),0); } } } //각 청산 주문후 주문번호 저장 function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BXID) { BXnum = OrderResponse.orderNum; } if (OrderResponse.orderID == SXID) { SXnum = OrderResponse.orderNum; } } 즐거운 하루되세요 > 궁금궁금123 님이 쓴 글입니다. > 제목 : 수식문의드립니다. > 예스스팟으로 주문하고 있는데 예스스팟은 예트에서 신호받은 그 가격으로 주문이 나가는 것이 맞는지요? 현재는 현재가에서 주문이 나가고 있습니다. 그리고 현재 매도 +-5호가로 주문이 세팅 되어서 슬리피지가 너무 많아서 슬리피지를 없이 주문하려고 문의를 드립니다. 그래서 신호가대로 주문을 하고 싶은데 리버스 신호의 경우에는 증거금 문제로 이전 주문이 청산이 되었을때까지 기다렸다가 청산이 되고 난 후에 주문을 하고 싶습니다. 그리고 주문은 1계약씩 나눠서 나가게 해서 증거금을 풀로 차게 주문하고 싶습니다. 예를 들어서 하나 수식을 만들어 주시면 감사하겠습니다. 예) 예트에서 5-20 이평선 매도 매수전략이라고 가정할때 1. 주문은 예트에서 발생한 신호가로 청산도 신호가(리버스진입가)로- 미체결 리스크가 있어도 슬리피지 없게 하려구요. 2. 리버스 신호가 나왔을때, 청산을 지정가(예트 신호가)로 하기때문에 만약 지연될 경우, 청산이 되고 난후에 신호가로 진입할수 있는 수식 4. 모든 주문은 1계약씩 반복해서 증거금이 다 찰때까지 주문이 되도록, 다만 청산주문은 보유잔고 일괄 청산 5. 동시호가에 보유잔고가 있으면 시장가로 청산 부탁드립니다. 감사합니다.