커뮤니티

문의 드립니다.

프로필 이미지
왼손잡이
2015-07-27 15:13:15
1808
글번호 223586
답변완료
수고하십니다. 서로 다른 컴퓨터에서 발생한 신호를 동일하게 유지 하고 싶습니다. 1. 갑 이라는 컴퓨터 A계좌(account 1 or account2) 에서 발생한 신호 또는 잔고 확인후 2. 을 이라는 컴퓨터 B계좌(account 3) 에서 동일하게 잔고 또는 동일하게 매매하고 싶습니다. 답변을 찾아보니 이래저래 찾아보니 ..아래와 같이 구현하면 가능할런지요? 그럼 좋은 답변 부탁드리겠습니다. ============================================================================================ //각 주문을 매수/매도 5호가로 주문내게 수정했습니다. //Account1 (시스템 거래) //Account2 (손매매) //Account3 (앞의 두계좌 연동), //아래는 1분 단위로 Account1계좌를 원장과 동기화하는 내용입니다 function Main_OnStart() { Main.SetTimer(1, 100) } function Main_OnTimer(nEventID) { if(nEventID == 1) { //Main.MessageList("타이머 발생"); Main.RefreshAccount(Account1.number); } } //체결이벤트 발생 function Main_OnNotifyFill(NotifyFill) { // Account1이나 Account2에서 체결이 발생하면 if (NotifyFill.accountNum == Account1.number || NotifyFill.accountNum == Account2.number) { //매도 체결일 경우 if (NotifyFill.orderKind == 1) { //선물인 경우 if (NotifyFill.code == Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매수5호가로 매도주문 Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,MarketData1.Bid(5),0); } //선물이 아닐경우(선옵계좌이므로 이경우 옵션종목) if (NotifyFill.code != Main.GetOrderCode(MarketData1.code)) { //체겨수량만큼 매수5호가로 매도주문 Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,Option.GetBidByCode(NotifyFill.code,5),1); } } //매수 체결일 경우 if (NotifyFill.orderKind == 1) { //선물인 경우 if (NotifyFill.code == Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매도5호가로 매수주문 Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,MarketData1.Ask(5),0); } //선물이 아닐경우(선옵계좌이므로 이경우 옵션종목) if (NotifyFill.code != Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매도5호가로 매수주문 Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,Option.GetAskByCode(NotifyFill.code,5),1); } } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-07-28 16:27:23

안녕하세요 예스스탁입니다. 2가지만 수정하시면 됩니다. 1. 타이머에서 1초는 1000입니다. 타이머가 1분간격으로 동작하시면 60000으로 지정하시면 됩니다. 2 매수체결에 매도로 지정이 되어 있습니다. //매수 체결일 경우 if (NotifyFill.orderKind == 2) 2로 변경하시면 됩니다. 3. 수정한 식입니다. //각 주문을 매수/매도 5호가로 주문내게 수정했습니다. //Account1 (시스템 거래) //Account2 (손매매) //Account3 (앞의 두계좌 연동), //아래는 1분 단위로 Account1계좌를 원장과 동기화하는 내용입니다 function Main_OnStart() { Main.SetTimer(1, 60000); } function Main_OnTimer(nEventID) { if(nEventID == 1) { //Main.MessageList("타이머 발생"); Main.RefreshAccount(Account1.number); } } //체결이벤트 발생 function Main_OnNotifyFill(NotifyFill) { // Account1이나 Account2에서 체결이 발생하면 if (NotifyFill.accountNum == Account1.number || NotifyFill.accountNum == Account2.number) { //매도 체결일 경우 if (NotifyFill.orderKind == 1) { //선물인 경우 if (NotifyFill.code == Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매수5호가로 매도주문 Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,MarketData1.Bid(5),0); } //선물이 아닐경우(선옵계좌이므로 이경우 옵션종목) if (NotifyFill.code != Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매수5호가로 매도주문 Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,Option.GetBidByCode(NotifyFill.code,5),1); } } //매수 체결일 경우 if (NotifyFill.orderKind == 2) { //선물인 경우 if (NotifyFill.code == Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매도5호가로 매수주문 Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,MarketData1.Ask(5),0); } //선물이 아닐경우(선옵계좌이므로 이경우 옵션종목) if (NotifyFill.code != Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매도5호가로 매수주문 Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,Option.GetAskByCode(NotifyFill.code,5),1); } } } } 즐거운 하루되세요 > 왼손잡이 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 수고하십니다. 서로 다른 컴퓨터에서 발생한 신호를 동일하게 유지 하고 싶습니다. 1. 갑 이라는 컴퓨터 A계좌(account 1 or account2) 에서 발생한 신호 또는 잔고 확인후 2. 을 이라는 컴퓨터 B계좌(account 3) 에서 동일하게 잔고 또는 동일하게 매매하고 싶습니다. 답변을 찾아보니 이래저래 찾아보니 ..아래와 같이 구현하면 가능할런지요? 그럼 좋은 답변 부탁드리겠습니다. ============================================================================================ //각 주문을 매수/매도 5호가로 주문내게 수정했습니다. //Account1 (시스템 거래) //Account2 (손매매) //Account3 (앞의 두계좌 연동), //아래는 1분 단위로 Account1계좌를 원장과 동기화하는 내용입니다 function Main_OnStart() { Main.SetTimer(1, 100) } function Main_OnTimer(nEventID) { if(nEventID == 1) { //Main.MessageList("타이머 발생"); Main.RefreshAccount(Account1.number); } } //체결이벤트 발생 function Main_OnNotifyFill(NotifyFill) { // Account1이나 Account2에서 체결이 발생하면 if (NotifyFill.accountNum == Account1.number || NotifyFill.accountNum == Account2.number) { //매도 체결일 경우 if (NotifyFill.orderKind == 1) { //선물인 경우 if (NotifyFill.code == Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매수5호가로 매도주문 Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,MarketData1.Bid(5),0); } //선물이 아닐경우(선옵계좌이므로 이경우 옵션종목) if (NotifyFill.code != Main.GetOrderCode(MarketData1.code)) { //체겨수량만큼 매수5호가로 매도주문 Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,Option.GetBidByCode(NotifyFill.code,5),1); } } //매수 체결일 경우 if (NotifyFill.orderKind == 1) { //선물인 경우 if (NotifyFill.code == Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매도5호가로 매수주문 Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,MarketData1.Ask(5),0); } //선물이 아닐경우(선옵계좌이므로 이경우 옵션종목) if (NotifyFill.code != Main.GetOrderCode(MarketData1.code)) { //체결수량만큼 매도5호가로 매수주문 Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,Option.GetAskByCode(NotifyFill.code,5),1); } } } }