커뮤니티

수식 검토 부탁드립니다. (주문변경, 일부미체결, 다중 챠트)

프로필 이미지
songjs12
2020-12-05 09:58:34
2870
글번호 225383
답변완료
안녕하세요? 코스닥선물을 거래하고 있습니다. (하이투자) 챠트는 KQ20과 KQ100이름으로 두개의 챠트객체가 있고 (둘다 코스닥150연결선물) 종목객체는 코스닥150연결선물입니다. (Marketdata1) 각 챠트에서 5개의 진입수를 가지고 거래를 하고 있는데 진입 및 가격을 현재가로 하다보니 대부분 거래가 잘 되기는 하나 시장이 빨리 움직일 때는 진입이나 청산을 일부 못하는 경우가 발생하고 있습니다. 그래서 상대3~5호가로 진입및 청산주문을 하고 있는데 아무래도 수익률이 떨어지고 있습니다. 그래서 나름 예스스팟으로 수식을 작성하여 보았는데 하이투자는 모의거래가 없어 시험하기가 어려운 상황입니다. 우선 아래의 수식을 보시고 문제가 될 만한 부분이 있는지 검토를 부탁드리겠습니다. *아래의 수식에서 청산신호가 아닌 스위칭신호(BUY신호인데 그전에 그 챠트에서 주문한 매도포지션이 있는 경우)가 발생했을 때도 잘 작동할 수 있을지 궁금합니다. 감사합니다. ----------------------------------------------------------------------- KQ20챠트에서 5개의 매수/매도 신호발생(현재가 주문) - 5초 후 일부 미체결 가격 조정 - 10초후 일부 미체결 가격 조정 - 15초 후 미체결주문 모두 취소 청산 시 현재가 주문 - 5초후 가격조정 - 10초후 가격조정 KQ100챠트에서도 위와 동일한 방식으로 주문함 KQ20챠트와 KQ100챠트는 서로의 진입과 청산에 영향없이 각각 독립적으로 운영 (서로 영향없이)함. --------------------------------------------------------------------------- var Position; var BuyID; var BuyOrderNum; var SellID; var SellOrderNum; var Position100; var BuyID100; var BuyOrderNum100; var SellID100; var SellOrderNum100; var KQ20num; var IniKQ20num; var KQ100num; var IniKQ100num; function Main_OnStart() { Position = 0; IniKQ20num =0; Position100 = 0; IniKQ100num =0; } function KQ20_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Position = 1; Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 2); IniKQ20num = Account1.Balance.count; BuyID = Account1.OrderBuy(Main.GetOrderCode(KQ20.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(1, 5000); Main.SetTimer(2, 10000); Main.SetTimer(3, 15000); Main.SetTimer(4, 30000); } if (Signal.signalKind == 3) { Position = -1; Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 1); IniKQ20num = Account1.Balance.count; SellID = Account1.OrderSell(Main.GetOrderCode(KQ20.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(1, 5000); Main.SetTimer(2, 10000); Main.SetTimer(3, 15000); Main.SetTimer(4, 30000); } if (Signal.signalKind == 2) { Main.SetTimer(5, 5000); Main.SetTimer(6, 10000); ELID = Account1.OrderSell(Main.GetOrderCode(KQ20.GetCode(1)),KQ20num,MarketData1.current,0) } if (Signal.signalKind == 4) { Main.SetTimer(5, 5000); Main.SetTimer(6, 10000); ESID = Account1.OrderBuy(Main.GetOrderCode(KQ20.GetCode(1)),KQ20num,MarketData1.current,0) } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } if (OrderResponse.orderID == SellID) { SellOrderNum = OrderResponse.orderNum; } if (OrderResponse.orderID == ELID) { ELOrderNum = OrderResponse.orderNum; } if (OrderResponse.orderID == ESID) { ESOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1 && Position == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } if (nEventID == 1 && Position == -1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(SellOrderNum); if (Account1.Unfill.count > 0) { SellID = Account1.OrderReplacePrice(SellOrderNum, MarketData1.Bid(1)); } } if (nEventID == 2 && Position == 1) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(3)); } } if (nEventID == 2 && Position == -1) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(SellOrderNum); if (Account1.Unfill.count > 0) { SellID = Account1.OrderReplacePrice(SellOrderNum, MarketData1.Bid(3)); } } if (nEventID == 3 && Position == 1) { Main.KillTimer(3); EnterN = 0; Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyOrderNum); } } if (nEventID == 3 && Position == -1) { Main.KillTimer(3); EnterN = 0; Account1.SetUnfillOrderNumber(SellOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellOrderNum); } } if (nEventID == 4 && Position == 1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 2); KQ20num = Account1.Balance.count - IniKQ20num ; Main.KillTimer(4); Main.MessageList("매수진입수:", KQ20num); } if (nEventID == 4 && Position == -1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 1); KQ20num = Account1.Balance.count - IniKQ20num; Main.KillTimer(4); Main.MessageList("매도진입수:", KQ20num); } if (nEventID == 5 && Position == 1) { Main.KillTimer(5); Account1.SetUnfillOrderNumber(ELOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum, MarketData1.Bid(3)); } } if (nEventID == 5 && Position == -1) { Main.KillTimer(5); Account1.SetUnfillOrderNumber(ESOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum, MarketData1.Ask(3)); } } if (nEventID == 6 && Position == 1) { Main.KillTimer(6); Account1.SetUnfillOrderNumber(ELOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum, MarketData1.Bid(5)); } } if (nEventID == 6 && Position == -1) { Main.KillTimer(6); Account1.SetUnfillOrderNumber(ESOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum, MarketData1.Ask(5)); } } } function KQ100_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Position100 = 1; Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 2); IniKQ100num = Account1.Balance.count; BuyID100 = Account1.OrderBuy(Main.GetOrderCode(KQ100.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(7, 5000); Main.SetTimer(8, 10000); Main.SetTimer(9, 15000); Main.SetTimer(10, 30000); } if (Signal.signalKind == 3) { Position100 = -1; Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 1); IniKQ100num = Account1.Balance.count; SellID100 = Account1.OrderSell(Main.GetOrderCode(KQ100.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(7, 5000); Main.SetTimer(8, 10000); Main.SetTimer(9, 15000); Main.SetTimer(10, 30000); } if (Signal.signalKind == 2) { Main.SetTimer(11, 5000); Main.SetTimer(12, 10000); ELID100 = Account1.OrderSell(Main.GetOrderCode(KQ100.GetCode(1)),KQ100num,MarketData1.current,0) } if (Signal.signalKind == 4) { Main.SetTimer(5, 5000); Main.SetTimer(6, 10000); ESID100 = Account1.OrderBuy(Main.GetOrderCode(KQ100.GetCode(1)),KQ100num,MarketData1.current,0) } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID100) { BuyOrderNum100 = OrderResponse.orderNum; } if (OrderResponse.orderID == SellID100) { SellOrderNum100 = OrderResponse.orderNum; } if (OrderResponse.orderID == ELID100) { ELOrderNum100 = OrderResponse.orderNum; } if (OrderResponse.orderID == ESID100) { ESOrderNum100 = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 7&& Position100 == 1 ) { Main.KillTimer(7); Account1.SetUnfillOrderNumber(BuyOrderNum100); if (Account1.Unfill.count > 0) { BuyID100 = Account1.OrderReplacePrice(BuyOrderNum100, MarketData1.Ask(1)); } } if (nEventID == 7 && Position100 == -1) { Main.KillTimer(7); Account1.SetUnfillOrderNumber(SellOrderNum100); if (Account1.Unfill.count > 0) { SellID100 = Account1.OrderReplacePrice(SellOrderNum100, MarketData1.Bid(1)); } } if (nEventID == 8 && Position100 == 1) { Main.KillTimer(8); Account1.SetUnfillOrderNumber(BuyOrderNum100); if (Account1.Unfill.count > 0) { BuyID100 = Account1.OrderReplacePrice(BuyOrderNum100, MarketData1.Ask(3)); } } if (nEventID == 8 && Position100 == -1) { Main.KillTimer(8); Account1.SetUnfillOrderNumber(SellOrderNum100); if (Account1.Unfill.count > 0) { SellID100 = Account1.OrderReplacePrice(SellOrderNum100, MarketData1.Bid(3)); } } if (nEventID == 9 && Position100 == 1) { Main.KillTimer(9); EnterN = 0; Account1.SetUnfillOrderNumber(BuyOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyOrderNum100); } } if (nEventID == 9 && Position100 == -1) { Main.KillTimer(9); EnterN = 0; Account1.SetUnfillOrderNumber(SellOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellOrderNum100); } } if (nEventID == 10 && Position100 == 1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 2); KQ20num = Account1.Balance.count - IniKQ100num ; Main.KillTimer(10); Main.MessageList("매수진입수:", KQ100num); } if (nEventID == 10 && Position100 == -1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 1); KQ20num = Account1.Balance.count - IniKQ100num; Main.KillTimer(10); Main.MessageList("매도진입수:", KQ100num); } if (nEventID == 11 && Position100 == 1) { Main.KillTimer(11); Account1.SetUnfillOrderNumber(ELOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum100, MarketData1.Bid(3)); } } if (nEventID == 11 && Position100 == -1) { Main.KillTimer(11); Account1.SetUnfillOrderNumber(ESOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum100, MarketData1.Ask(3)); } } if (nEventID == 12 && Position100 == 1) { Main.KillTimer(12); Account1.SetUnfillOrderNumber(ELOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum100, MarketData1.Bid(5)); } } if (nEventID == 12 && Position100 == -1) { Main.KillTimer(12); Account1.SetUnfillOrderNumber(ESOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum100, MarketData1.Ask(5)); } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-01-21 17:46:22

안녕하세요 예스스탁입니다. 죄송하지만 문의하신 내용은 사용자분께서 모의투자를 통해 테스트 해보시면서 수식을 수정보완해 주셔야 합니다. 저희가 업무상 스팟은 가이드정도만 해드리고 테스트를 수행해 드리기는 어렵습니다. 하이투자증권 예스트레이더 로그인하실 떄 접속설정에서 모의투자로 접속하시면 KQ150선물도 모의투자가 가능합니다. 테스트 중 문제 있으시거나 수정보완이 원활하지 않으시면 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > songjs12 님이 쓴 글입니다. > 제목 : 수식 검토 부탁드립니다. (주문변경, 일부미체결, 다중 챠트) > 안녕하세요? 코스닥선물을 거래하고 있습니다. (하이투자) 챠트는 KQ20과 KQ100이름으로 두개의 챠트객체가 있고 (둘다 코스닥150연결선물) 종목객체는 코스닥150연결선물입니다. (Marketdata1) 각 챠트에서 5개의 진입수를 가지고 거래를 하고 있는데 진입 및 가격을 현재가로 하다보니 대부분 거래가 잘 되기는 하나 시장이 빨리 움직일 때는 진입이나 청산을 일부 못하는 경우가 발생하고 있습니다. 그래서 상대3~5호가로 진입및 청산주문을 하고 있는데 아무래도 수익률이 떨어지고 있습니다. 그래서 나름 예스스팟으로 수식을 작성하여 보았는데 하이투자는 모의거래가 없어 시험하기가 어려운 상황입니다. 우선 아래의 수식을 보시고 문제가 될 만한 부분이 있는지 검토를 부탁드리겠습니다. *아래의 수식에서 청산신호가 아닌 스위칭신호(BUY신호인데 그전에 그 챠트에서 주문한 매도포지션이 있는 경우)가 발생했을 때도 잘 작동할 수 있을지 궁금합니다. 감사합니다. ----------------------------------------------------------------------- KQ20챠트에서 5개의 매수/매도 신호발생(현재가 주문) - 5초 후 일부 미체결 가격 조정 - 10초후 일부 미체결 가격 조정 - 15초 후 미체결주문 모두 취소 청산 시 현재가 주문 - 5초후 가격조정 - 10초후 가격조정 KQ100챠트에서도 위와 동일한 방식으로 주문함 KQ20챠트와 KQ100챠트는 서로의 진입과 청산에 영향없이 각각 독립적으로 운영 (서로 영향없이)함. --------------------------------------------------------------------------- var Position; var BuyID; var BuyOrderNum; var SellID; var SellOrderNum; var Position100; var BuyID100; var BuyOrderNum100; var SellID100; var SellOrderNum100; var KQ20num; var IniKQ20num; var KQ100num; var IniKQ100num; function Main_OnStart() { Position = 0; IniKQ20num =0; Position100 = 0; IniKQ100num =0; } function KQ20_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Position = 1; Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 2); IniKQ20num = Account1.Balance.count; BuyID = Account1.OrderBuy(Main.GetOrderCode(KQ20.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(1, 5000); Main.SetTimer(2, 10000); Main.SetTimer(3, 15000); Main.SetTimer(4, 30000); } if (Signal.signalKind == 3) { Position = -1; Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 1); IniKQ20num = Account1.Balance.count; SellID = Account1.OrderSell(Main.GetOrderCode(KQ20.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(1, 5000); Main.SetTimer(2, 10000); Main.SetTimer(3, 15000); Main.SetTimer(4, 30000); } if (Signal.signalKind == 2) { Main.SetTimer(5, 5000); Main.SetTimer(6, 10000); ELID = Account1.OrderSell(Main.GetOrderCode(KQ20.GetCode(1)),KQ20num,MarketData1.current,0) } if (Signal.signalKind == 4) { Main.SetTimer(5, 5000); Main.SetTimer(6, 10000); ESID = Account1.OrderBuy(Main.GetOrderCode(KQ20.GetCode(1)),KQ20num,MarketData1.current,0) } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) { BuyOrderNum = OrderResponse.orderNum; } if (OrderResponse.orderID == SellID) { SellOrderNum = OrderResponse.orderNum; } if (OrderResponse.orderID == ELID) { ELOrderNum = OrderResponse.orderNum; } if (OrderResponse.orderID == ESID) { ESOrderNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1 && Position == 1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(1)); } } if (nEventID == 1 && Position == -1) { Main.KillTimer(1); Account1.SetUnfillOrderNumber(SellOrderNum); if (Account1.Unfill.count > 0) { SellID = Account1.OrderReplacePrice(SellOrderNum, MarketData1.Bid(1)); } } if (nEventID == 2 && Position == 1) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { BuyID = Account1.OrderReplacePrice(BuyOrderNum, MarketData1.Ask(3)); } } if (nEventID == 2 && Position == -1) { Main.KillTimer(2); Account1.SetUnfillOrderNumber(SellOrderNum); if (Account1.Unfill.count > 0) { SellID = Account1.OrderReplacePrice(SellOrderNum, MarketData1.Bid(3)); } } if (nEventID == 3 && Position == 1) { Main.KillTimer(3); EnterN = 0; Account1.SetUnfillOrderNumber(BuyOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyOrderNum); } } if (nEventID == 3 && Position == -1) { Main.KillTimer(3); EnterN = 0; Account1.SetUnfillOrderNumber(SellOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellOrderNum); } } if (nEventID == 4 && Position == 1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 2); KQ20num = Account1.Balance.count - IniKQ20num ; Main.KillTimer(4); Main.MessageList("매수진입수:", KQ20num); } if (nEventID == 4 && Position == -1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ20.GetCode(1)), 1); KQ20num = Account1.Balance.count - IniKQ20num; Main.KillTimer(4); Main.MessageList("매도진입수:", KQ20num); } if (nEventID == 5 && Position == 1) { Main.KillTimer(5); Account1.SetUnfillOrderNumber(ELOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum, MarketData1.Bid(3)); } } if (nEventID == 5 && Position == -1) { Main.KillTimer(5); Account1.SetUnfillOrderNumber(ESOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum, MarketData1.Ask(3)); } } if (nEventID == 6 && Position == 1) { Main.KillTimer(6); Account1.SetUnfillOrderNumber(ELOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum, MarketData1.Bid(5)); } } if (nEventID == 6 && Position == -1) { Main.KillTimer(6); Account1.SetUnfillOrderNumber(ESOrderNum); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum, MarketData1.Ask(5)); } } } function KQ100_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { Position100 = 1; Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 2); IniKQ100num = Account1.Balance.count; BuyID100 = Account1.OrderBuy(Main.GetOrderCode(KQ100.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(7, 5000); Main.SetTimer(8, 10000); Main.SetTimer(9, 15000); Main.SetTimer(10, 30000); } if (Signal.signalKind == 3) { Position100 = -1; Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 1); IniKQ100num = Account1.Balance.count; SellID100 = Account1.OrderSell(Main.GetOrderCode(KQ100.GetCode(1)),Signal.count,MarketData1.current,0); Main.SetTimer(7, 5000); Main.SetTimer(8, 10000); Main.SetTimer(9, 15000); Main.SetTimer(10, 30000); } if (Signal.signalKind == 2) { Main.SetTimer(11, 5000); Main.SetTimer(12, 10000); ELID100 = Account1.OrderSell(Main.GetOrderCode(KQ100.GetCode(1)),KQ100num,MarketData1.current,0) } if (Signal.signalKind == 4) { Main.SetTimer(5, 5000); Main.SetTimer(6, 10000); ESID100 = Account1.OrderBuy(Main.GetOrderCode(KQ100.GetCode(1)),KQ100num,MarketData1.current,0) } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID100) { BuyOrderNum100 = OrderResponse.orderNum; } if (OrderResponse.orderID == SellID100) { SellOrderNum100 = OrderResponse.orderNum; } if (OrderResponse.orderID == ELID100) { ELOrderNum100 = OrderResponse.orderNum; } if (OrderResponse.orderID == ESID100) { ESOrderNum100 = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 7&& Position100 == 1 ) { Main.KillTimer(7); Account1.SetUnfillOrderNumber(BuyOrderNum100); if (Account1.Unfill.count > 0) { BuyID100 = Account1.OrderReplacePrice(BuyOrderNum100, MarketData1.Ask(1)); } } if (nEventID == 7 && Position100 == -1) { Main.KillTimer(7); Account1.SetUnfillOrderNumber(SellOrderNum100); if (Account1.Unfill.count > 0) { SellID100 = Account1.OrderReplacePrice(SellOrderNum100, MarketData1.Bid(1)); } } if (nEventID == 8 && Position100 == 1) { Main.KillTimer(8); Account1.SetUnfillOrderNumber(BuyOrderNum100); if (Account1.Unfill.count > 0) { BuyID100 = Account1.OrderReplacePrice(BuyOrderNum100, MarketData1.Ask(3)); } } if (nEventID == 8 && Position100 == -1) { Main.KillTimer(8); Account1.SetUnfillOrderNumber(SellOrderNum100); if (Account1.Unfill.count > 0) { SellID100 = Account1.OrderReplacePrice(SellOrderNum100, MarketData1.Bid(3)); } } if (nEventID == 9 && Position100 == 1) { Main.KillTimer(9); EnterN = 0; Account1.SetUnfillOrderNumber(BuyOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyOrderNum100); } } if (nEventID == 9 && Position100 == -1) { Main.KillTimer(9); EnterN = 0; Account1.SetUnfillOrderNumber(SellOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellOrderNum100); } } if (nEventID == 10 && Position100 == 1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 2); KQ20num = Account1.Balance.count - IniKQ100num ; Main.KillTimer(10); Main.MessageList("매수진입수:", KQ100num); } if (nEventID == 10 && Position100 == -1) { Account1.SetBalanceItem(Main.GetOrderCode(KQ100.GetCode(1)), 1); KQ20num = Account1.Balance.count - IniKQ100num; Main.KillTimer(10); Main.MessageList("매도진입수:", KQ100num); } if (nEventID == 11 && Position100 == 1) { Main.KillTimer(11); Account1.SetUnfillOrderNumber(ELOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum100, MarketData1.Bid(3)); } } if (nEventID == 11 && Position100 == -1) { Main.KillTimer(11); Account1.SetUnfillOrderNumber(ESOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum100, MarketData1.Ask(3)); } } if (nEventID == 12 && Position100 == 1) { Main.KillTimer(12); Account1.SetUnfillOrderNumber(ELOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ELOrderNum100, MarketData1.Bid(5)); } } if (nEventID == 12 && Position100 == -1) { Main.KillTimer(12); Account1.SetUnfillOrderNumber(ESOrderNum100); if (Account1.Unfill.count > 0) { Account1.OrderReplacePrice(ESOrderNum100, MarketData1.Ask(5)); } } }