커뮤니티

글번호 228046의 추가문의

프로필 이미지
산수유
2025-11-17 19:03:23
48
글번호 228128
답변완료

답변내용에 더해서 시장가주문을 냈으나 특별한 이벤트 발생해서 주문거부나 주문자체가 없어진 경우 30초 뒤에 2차 시장가 주문 하고 역시 미체결이면 30초뒤 다시 3차 시장가 주문 을 내는 식을 추가해서 부탁드립니다.(3차까지 나가면 거의 체결될듯 합니다.)

시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2025-11-18 14:51:28

안녕하세요 예스스탁입니다. 예스스팟 도움말과 수식 충분히 숙지하고 사용하셔야 합니다. 이후 수정이나 보완은 예스스팟 Q&A로 글 올려주시기 바랍니다. var 초 = 30; var 차수 = 3; var OC,pst; var BID, SID, BNUM, SNUM, BV, SV; var bcnt,scnt; function Main_OnStart() { Main.MessageList("Start"); //차트종목 종목코드 OC = Main.GetOrderCode(Chart1.GetCode(1)); pst = 0; } function Chart1_OnRiseSignal(Signal) { //매수진입신호 발생 if (Signal.signalKind == 1) { //포지션은 1 pst = 1; //신호수량 저장 BV = Signal.count; //매수주문 집행(신호수량, 시장가) BID = Account1.OrderBuy(OC,BV,0,1); Main.SetTimer(1, 1000*초); bcnt = 0; Main.MessageList("매수진입신호:",BV); } //스팟에서 매수진입 이후에 매수청산 신호 발생 if (pst == 1 && Signal.signalKind == 2) { //진입매수주문 미체결 객체 셋팅 Account1.SetUnfillOrderNumber(BNUM); //미체결이 있으면 if ( Account1.Unfill.count > 0 ) { Main.KillTimer(1); //진입수량에서 미체결수량 차감 BV = BV-Account1.Unfill.count; //미체결 주문 취소 Account1.OrderCancel(BNUM); } Main.MessageList("매수청산:",BV); //매수진입수량에서 미체결수량 차감후 0이 아니면(진입전량 체결이나 일부체결) if (BV > 0) { //청산을 위해 매도주문 집행(수량은 BV, 시장가) Account1.OrderSell(OC, BV,0,1); } } //매도진입신호 발생 if (Signal.signalKind == 3) { //포지션은 -1 pst = -1; //신호수량 저장 SV = Signal.count; //매도주문 집행(신호수량, 시장가) SID = Account1.OrderSell(OC, SV,0,1); Main.SetTimer(3, 1000*초); scnt = 0; Main.MessageList("매도진입신호:",SV); } //스팟에서 매도진입 이후에 매도청산 신호 발생 if (pst == -1 && Signal.signalKind == 4) { Main.KillTimer(3); //진입매도주문 미체결 객체 셋팅 Account1.SetUnfillOrderNumber(SNUM); //미체결이 있으면 if ( Account1.Unfill.count > 0 ) { //진입수량에서 미체결수량 차감 SV = SV-Account1.Unfill.count; //미체결 주문 취소 Account1.OrderCancel(SNUM); } Main.MessageList("매도청산:",SV); //매도진입수량에서 미체결수량 차감후 0이 아니면(진입전량 체결이나 일부체결) if (SV > 0) { //청산을 위해 매수주문 집행(수량은 SV,시장가) Account1.OrderBuy(OC, SV,0,1); } } } //주문응답 function Main_OnOrderResponse(OrderResponse) { //매수진입주문에 대한 응답 if (OrderResponse.orderID == BID) { //정상접수 if (OrderResponse.isNormal == true) { Main.KillTimer(1); pst = 1; //주문번호 저장 BNUM = OrderResponse.orderNum; } else //주문거부면 pst를 11로 변경하여 매수청산신호시 주문하지 않음 { pst = 11; } } //매도진입주문에 대한 응답이 오면 if (OrderResponse.orderID == SID) { //정상접수 if (OrderResponse.isNormal == true) { Main.KillTimer(3); pst = 1; //주문번호 저장 SNUM = OrderResponse.orderNum; } else //주문거부면 pst를 -11로 변경하여 매도청산신호시 주문하지 않음 pst = -11; } } function Main_OnTimer(nEventID) { if (nEventID == 1 && pst == 11) { BID = Account1.OrderBuy(OC,BV,0,1); bcnt = bcnt+1; if (bcnt == 차수) { Main.KillTimer(1); } } if (nEventID == 3 && pst == -11) { SID = Account1.OrderSell(OC,SV,0,1); scnt = scnt+1; if (scnt == 차수) { Main.KillTimer(3); } } } 즐거운 하루되세요
프로필 이미지

산수유

2025-11-18 15:32:37

감사드립니다. 앞으로는 예스스팟에 올리겠습니다.