커뮤니티

정정,취소 주문

프로필 이미지
새로운세상
2012-12-24 10:37:16
2455
글번호 221879
답변완료
안녕하세요.. 다음 수식 수정 부탁드립니다. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(2),0); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(1)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } < 제가 원하는 수식 내용 > - 연결선물 분봉 차트 신호를 기준으로하고, 연결선물을 종목객체로 선택 - 매수신호 발생시 매수2호가 주문 - 신호 발생으로부터 10초후 미체결시 매수1호가로 1차정정 - 1차정정으로부터 15초후 1차정정 미체결시 매도1호가로 2차정정 (원주문에서 25초 경과) - 2차정정으로부터 5초후 미체결시 해당 주문 취소 (원주문에서 30초 경과) < 궁금한 점 > 1) 위의 내용상 2차정정을 위하여 1차정정에 대한 'orderID'와 'orderNum'가 별도로 설정되어야 할 것 같은데 어떻게 연결시켜야 할지 모르겠습니다. (제 개인적인 생각에 위의 수식 내용은 원주문 번호에 대하여 1차정정과 2차정정을 하라는 것으로 판단됨) 2) 위의 수식을 시험적용하면 정정주문으로 넘어가지 않습니다. 또한 정정주문에서 'BuyID ='을 추가하면 시험적용시 체결사항이 없기 때문에, KillTimer 함수를 사용하여도 SetTimer가 반복적으로 수행됩니다. 시험적용시에도 1,2차 정정 등이 아예 1회만 실행되도록 수식을 작성하고 싶습니다. (예를들면 YT에서 거래횟수 제한과 같이, 원주문,1차정정주문,2차정정주문,취소주문 모두 1회 주문 발생) 단, 새로운 매수신호가 발생하면 당연히 동일한 과정이 수행됩니다. 3) 위의 수식에 2차정정으로 부터 5초후 미체결시 해당주문을 취소하고 싶습니다. 즉, 원주문 번호 --> 원주문 번호에 대한 1차정정 번호 --> 1차정정 번호에 대한 2차정정 번호 --> 2차정정 번호에 대한 취소주문 시험적용에서도 정정주문이 반복되지 않고 각 주문이 1회만 발생하도록 제어하고, 새로운 매수신호 발생시 제가 원하는 위의 과정을 반복 수행하는 수식이 되도록 수정 부탁드리겠습니다. 이상입니다. 그럼 즐거운 크리스마스 되세요~ 감사합니다 !!!
답변 4
프로필 이미지

예스스탁 예스스탁 답변

2012-12-27 10:26:09

안녕하세요 예스스탁입니다. 1. 해당식의 경우 타이머의 셋팅을 주문응답시에 하면 주문응답이 들어올때마다 각 타이머가 동작하므로 주문발생시로 하셔야 합니다. 2. 주문ID는 동일한 변수를 이용하시면 됩니다 3. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(5),0); Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(4)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } 새해에는 좋은 일만 가득하기를 바랍니다. 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : 정정,취소 주문 > 안녕하세요.. 다음 수식 수정 부탁드립니다. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(2),0); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(1)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } < 제가 원하는 수식 내용 > - 연결선물 분봉 차트 신호를 기준으로하고, 연결선물을 종목객체로 선택 - 매수신호 발생시 매수2호가 주문 - 신호 발생으로부터 10초후 미체결시 매수1호가로 1차정정 - 1차정정으로부터 15초후 1차정정 미체결시 매도1호가로 2차정정 (원주문에서 25초 경과) - 2차정정으로부터 5초후 미체결시 해당 주문 취소 (원주문에서 30초 경과) < 궁금한 점 > 1) 위의 내용상 2차정정을 위하여 1차정정에 대한 'orderID'와 'orderNum'가 별도로 설정되어야 할 것 같은데 어떻게 연결시켜야 할지 모르겠습니다. (제 개인적인 생각에 위의 수식 내용은 원주문 번호에 대하여 1차정정과 2차정정을 하라는 것으로 판단됨) 2) 위의 수식을 시험적용하면 정정주문으로 넘어가지 않습니다. 또한 정정주문에서 'BuyID ='을 추가하면 시험적용시 체결사항이 없기 때문에, KillTimer 함수를 사용하여도 SetTimer가 반복적으로 수행됩니다. 시험적용시에도 1,2차 정정 등이 아예 1회만 실행되도록 수식을 작성하고 싶습니다. (예를들면 YT에서 거래횟수 제한과 같이, 원주문,1차정정주문,2차정정주문,취소주문 모두 1회 주문 발생) 단, 새로운 매수신호가 발생하면 당연히 동일한 과정이 수행됩니다. 3) 위의 수식에 2차정정으로 부터 5초후 미체결시 해당주문을 취소하고 싶습니다. 즉, 원주문 번호 --> 원주문 번호에 대한 1차정정 번호 --> 1차정정 번호에 대한 2차정정 번호 --> 2차정정 번호에 대한 취소주문 시험적용에서도 정정주문이 반복되지 않고 각 주문이 1회만 발생하도록 제어하고, 새로운 매수신호 발생시 제가 원하는 위의 과정을 반복 수행하는 수식이 되도록 수정 부탁드리겠습니다. 이상입니다. 그럼 즐거운 크리스마스 되세요~ 감사합니다 !!!
프로필 이미지

새로운세상

2012-12-27 10:41:03

안녕하세요~ 답변 감사히 잘 받았습니다. 그런데 시험적용을 해보니, 1~2차 정정주문이 발생하지 않네요? 시험적용이라서 그런 것인지 원인을 잘 모르겠습니다. 그리고 2차정정 5초후 취소주문에 대한 내용이 빠져있네요. 번거로우시겠지만 해당 내용 추가 부탁드리겠습니다. 올 한해도 항상 많은 도움주셔서 감사합니다. 그럼 남은 2012년 잘 마무리 하시고, 새해 복 많이 받으세요~~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 정정,취소 주문 > 안녕하세요 예스스탁입니다. 1. 해당식의 경우 타이머의 셋팅을 주문응답시에 하면 주문응답이 들어올때마다 각 타이머가 동작하므로 주문발생시로 하셔야 합니다. 2. 주문ID는 동일한 변수를 이용하시면 됩니다 3. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(5),0); Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(4)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } 새해에는 좋은 일만 가득하기를 바랍니다. 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : 정정,취소 주문 > 안녕하세요.. 다음 수식 수정 부탁드립니다. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(2),0); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(1)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } < 제가 원하는 수식 내용 > - 연결선물 분봉 차트 신호를 기준으로하고, 연결선물을 종목객체로 선택 - 매수신호 발생시 매수2호가 주문 - 신호 발생으로부터 10초후 미체결시 매수1호가로 1차정정 - 1차정정으로부터 15초후 1차정정 미체결시 매도1호가로 2차정정 (원주문에서 25초 경과) - 2차정정으로부터 5초후 미체결시 해당 주문 취소 (원주문에서 30초 경과) < 궁금한 점 > 1) 위의 내용상 2차정정을 위하여 1차정정에 대한 'orderID'와 'orderNum'가 별도로 설정되어야 할 것 같은데 어떻게 연결시켜야 할지 모르겠습니다. (제 개인적인 생각에 위의 수식 내용은 원주문 번호에 대하여 1차정정과 2차정정을 하라는 것으로 판단됨) 2) 위의 수식을 시험적용하면 정정주문으로 넘어가지 않습니다. 또한 정정주문에서 'BuyID ='을 추가하면 시험적용시 체결사항이 없기 때문에, KillTimer 함수를 사용하여도 SetTimer가 반복적으로 수행됩니다. 시험적용시에도 1,2차 정정 등이 아예 1회만 실행되도록 수식을 작성하고 싶습니다. (예를들면 YT에서 거래횟수 제한과 같이, 원주문,1차정정주문,2차정정주문,취소주문 모두 1회 주문 발생) 단, 새로운 매수신호가 발생하면 당연히 동일한 과정이 수행됩니다. 3) 위의 수식에 2차정정으로 부터 5초후 미체결시 해당주문을 취소하고 싶습니다. 즉, 원주문 번호 --> 원주문 번호에 대한 1차정정 번호 --> 1차정정 번호에 대한 2차정정 번호 --> 2차정정 번호에 대한 취소주문 시험적용에서도 정정주문이 반복되지 않고 각 주문이 1회만 발생하도록 제어하고, 새로운 매수신호 발생시 제가 원하는 위의 과정을 반복 수행하는 수식이 되도록 수정 부탁드리겠습니다. 이상입니다. 그럼 즐거운 크리스마스 되세요~ 감사합니다 !!!
프로필 이미지

예스스탁 예스스탁 답변

2012-12-27 11:52:21

안녕하세요 예스스탁입니다. 시험적용이면 실제 주문이 들어가지 않으므로 응답이 없어 정정주문 보실수 없습니다. 첫진입주문이후에 30초 후에 취소하는 내용을 추가했습니다. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(5),0); Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); Main.SetTimer(3, 30000); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(4)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(2)); } } if (nEventID == 3) { Main.KillTimer(3); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyOrderNum); } } } 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : Re : Re : 정정,취소 주문 > 안녕하세요~ 답변 감사히 잘 받았습니다. 그런데 시험적용을 해보니, 1~2차 정정주문이 발생하지 않네요? 시험적용이라서 그런 것인지 원인을 잘 모르겠습니다. 그리고 2차정정 5초후 취소주문에 대한 내용이 빠져있네요. 번거로우시겠지만 해당 내용 추가 부탁드리겠습니다. 올 한해도 항상 많은 도움주셔서 감사합니다. 그럼 남은 2012년 잘 마무리 하시고, 새해 복 많이 받으세요~~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 정정,취소 주문 > 안녕하세요 예스스탁입니다. 1. 해당식의 경우 타이머의 셋팅을 주문응답시에 하면 주문응답이 들어올때마다 각 타이머가 동작하므로 주문발생시로 하셔야 합니다. 2. 주문ID는 동일한 변수를 이용하시면 됩니다 3. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(5),0); Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(4)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } 새해에는 좋은 일만 가득하기를 바랍니다. 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : 정정,취소 주문 > 안녕하세요.. 다음 수식 수정 부탁드립니다. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(2),0); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(1)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } < 제가 원하는 수식 내용 > - 연결선물 분봉 차트 신호를 기준으로하고, 연결선물을 종목객체로 선택 - 매수신호 발생시 매수2호가 주문 - 신호 발생으로부터 10초후 미체결시 매수1호가로 1차정정 - 1차정정으로부터 15초후 1차정정 미체결시 매도1호가로 2차정정 (원주문에서 25초 경과) - 2차정정으로부터 5초후 미체결시 해당 주문 취소 (원주문에서 30초 경과) < 궁금한 점 > 1) 위의 내용상 2차정정을 위하여 1차정정에 대한 'orderID'와 'orderNum'가 별도로 설정되어야 할 것 같은데 어떻게 연결시켜야 할지 모르겠습니다. (제 개인적인 생각에 위의 수식 내용은 원주문 번호에 대하여 1차정정과 2차정정을 하라는 것으로 판단됨) 2) 위의 수식을 시험적용하면 정정주문으로 넘어가지 않습니다. 또한 정정주문에서 'BuyID ='을 추가하면 시험적용시 체결사항이 없기 때문에, KillTimer 함수를 사용하여도 SetTimer가 반복적으로 수행됩니다. 시험적용시에도 1,2차 정정 등이 아예 1회만 실행되도록 수식을 작성하고 싶습니다. (예를들면 YT에서 거래횟수 제한과 같이, 원주문,1차정정주문,2차정정주문,취소주문 모두 1회 주문 발생) 단, 새로운 매수신호가 발생하면 당연히 동일한 과정이 수행됩니다. 3) 위의 수식에 2차정정으로 부터 5초후 미체결시 해당주문을 취소하고 싶습니다. 즉, 원주문 번호 --> 원주문 번호에 대한 1차정정 번호 --> 1차정정 번호에 대한 2차정정 번호 --> 2차정정 번호에 대한 취소주문 시험적용에서도 정정주문이 반복되지 않고 각 주문이 1회만 발생하도록 제어하고, 새로운 매수신호 발생시 제가 원하는 위의 과정을 반복 수행하는 수식이 되도록 수정 부탁드리겠습니다. 이상입니다. 그럼 즐거운 크리스마스 되세요~ 감사합니다 !!!
프로필 이미지

새로운세상

2012-12-27 11:52:26

대단히 감사합니다~ 다시 한번 새해 복 많이 받으세요 !!! > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : 정정,취소 주문 > 안녕하세요 예스스탁입니다. 시험적용이면 실제 주문이 들어가지 않으므로 응답이 없어 정정주문 보실수 없습니다. 첫진입주문이후에 30초 후에 취소하는 내용을 추가했습니다. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(5),0); Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); Main.SetTimer(3, 30000); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(4)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(2)); } } if (nEventID == 3) { Main.KillTimer(3); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyOrderNum); } } } 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : Re : Re : 정정,취소 주문 > 안녕하세요~ 답변 감사히 잘 받았습니다. 그런데 시험적용을 해보니, 1~2차 정정주문이 발생하지 않네요? 시험적용이라서 그런 것인지 원인을 잘 모르겠습니다. 그리고 2차정정 5초후 취소주문에 대한 내용이 빠져있네요. 번거로우시겠지만 해당 내용 추가 부탁드리겠습니다. 올 한해도 항상 많은 도움주셔서 감사합니다. 그럼 남은 2012년 잘 마무리 하시고, 새해 복 많이 받으세요~~ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 정정,취소 주문 > 안녕하세요 예스스탁입니다. 1. 해당식의 경우 타이머의 셋팅을 주문응답시에 하면 주문응답이 들어올때마다 각 타이머가 동작하므로 주문발생시로 하셔야 합니다. 2. 주문ID는 동일한 변수를 이용하시면 됩니다 3. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(5),0); Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(4)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } 새해에는 좋은 일만 가득하기를 바랍니다. 즐거운 하루되세요 > 새로운세상 님이 쓴 글입니다. > 제목 : 정정,취소 주문 > 안녕하세요.. 다음 수식 수정 부탁드립니다. var Start; var BuyID; var BuyOrderNum; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Start = 1; BuyID = Account1.OrderBuy(MarketData1.code,Vol,MarketData1.Bid(2),0); } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; Main.SetTimer(1, 10000); Main.SetTimer(2, 25000); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Bid(1)); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } } < 제가 원하는 수식 내용 > - 연결선물 분봉 차트 신호를 기준으로하고, 연결선물을 종목객체로 선택 - 매수신호 발생시 매수2호가 주문 - 신호 발생으로부터 10초후 미체결시 매수1호가로 1차정정 - 1차정정으로부터 15초후 1차정정 미체결시 매도1호가로 2차정정 (원주문에서 25초 경과) - 2차정정으로부터 5초후 미체결시 해당 주문 취소 (원주문에서 30초 경과) < 궁금한 점 > 1) 위의 내용상 2차정정을 위하여 1차정정에 대한 'orderID'와 'orderNum'가 별도로 설정되어야 할 것 같은데 어떻게 연결시켜야 할지 모르겠습니다. (제 개인적인 생각에 위의 수식 내용은 원주문 번호에 대하여 1차정정과 2차정정을 하라는 것으로 판단됨) 2) 위의 수식을 시험적용하면 정정주문으로 넘어가지 않습니다. 또한 정정주문에서 'BuyID ='을 추가하면 시험적용시 체결사항이 없기 때문에, KillTimer 함수를 사용하여도 SetTimer가 반복적으로 수행됩니다. 시험적용시에도 1,2차 정정 등이 아예 1회만 실행되도록 수식을 작성하고 싶습니다. (예를들면 YT에서 거래횟수 제한과 같이, 원주문,1차정정주문,2차정정주문,취소주문 모두 1회 주문 발생) 단, 새로운 매수신호가 발생하면 당연히 동일한 과정이 수행됩니다. 3) 위의 수식에 2차정정으로 부터 5초후 미체결시 해당주문을 취소하고 싶습니다. 즉, 원주문 번호 --> 원주문 번호에 대한 1차정정 번호 --> 1차정정 번호에 대한 2차정정 번호 --> 2차정정 번호에 대한 취소주문 시험적용에서도 정정주문이 반복되지 않고 각 주문이 1회만 발생하도록 제어하고, 새로운 매수신호 발생시 제가 원하는 위의 과정을 반복 수행하는 수식이 되도록 수정 부탁드리겠습니다. 이상입니다. 그럼 즐거운 크리스마스 되세요~ 감사합니다 !!!