커뮤니티

자동매도수식 검토 및 MessageList오류여부 검토 부탁드립니다.

프로필 이미지
멋진감자
2023-10-19 15:09:21
1083
글번호 173224
답변완료
수고많으십니다. Main.MessageList("na2=",Account7); Main.MessageList("na1=",woo,"계좌=",num); var num = Account7.Balance.number; 질문입니다. na2에서 Account7은 계좌번호가 표시가 되는데 na1에서 계좌번호를 변수로 저장한 num으로 넣으면 undefined 에러가 발생합니다. 수식검토 부탁드립니다. // 전역변수선언 var exit7; var Position7; var Snum7; var Bnum7; var BuyFill7; var SellFill7; var ID7,ID8,Num7,Num8; var Xcode7,Xpst7,Xvo7,XID7; var Xcode8,Xpst8,Xvo8,XID8; //스팟 시작 function Main_OnStart() { Main.SetTimer(1, 10000); exit7 = false; } function Main_OnTimer(nEventID) { if (nEventID == 1) { if (exit7 == false) { Account7.SetBalanceItem(MD7, 0); var vo7 = Account7.Balance.count; //수량 var po7 = Account7.Balance.position; //포지션방향(매도1, 매수2) var cu7 = Account7.Balance.current; //현재가 var num = Account7.Balance.number; var woo = C7.GetIndicatorData("진입1", 1, 0); Main.MessageList("na2=",Account7); Main.MessageList("na1=",woo,"계좌=",num); } } if ( po7 == 1 && Cu7 >=woo) //매도포지션이고 현재가격이 지표 "진입" 값과 같으면 { exit7 = true; //첫번째 SetTimer 시작 //전량 시장가로 매수주문(청산) 및 ID7에 주문아이디 저장 ID7 = Account7.OrderBuy(MD7,vo7, 0, 1); } if (po7 == 2 && Cu7 <= woo) //매수포지션이고 현재가격이 지표"진입" 값과 같거나 작으면 { //전량 시장가로 매도주문(청산) 및 ID7에 주문아이디 저장 ID7 = Account7.OrderSell(MD7,vo7, 0, 1); } //2번 타이머 if (nEventID == 2) //두번째 SetTimer 시작 { Main.KillTimer(2); //Num7주문번호의 미체결 객체 셋팅 Account7.SetUnfillOrderNumber(Num7); //미체결 수량이 있으면 if (Account7.Unfill.count > 0) { Xcode7 = Account7.Unfill.code; //종목코드 저장 Xpst7 = Account7.Unfill.orderKind; //주문구분 저장 Xvo7 = Account7.Unfill.count; //주문수량 저장 XID7 = Account7.OrderCancel(Num7); //취소주문, 주문아이디 XID7 저장 } } //3번 타이머 if (nEventID == 3) { Main.KillTimer(3); //Num8주문번호 미체결 객체 셋팅 Account7.SetUnfillOrderNumber(Num8); if (Account7.Unfill.count > 0) { Xcode8 = Account7.Unfill.code; Xpst8 = Account7.Unfill.orderKind; Xvo8 = Account7.Unfill.count; XID8 = Account7.OrderCancel(Num8); } } //주문응답 function Main_OnOrderResponse(OrderResponse) { //주문응답 아이디(orderID)가 ID7(최초주문아이디)과 같으면 if (OrderResponse.orderID == ID7) { //주문번호 저장 Num7 = OrderResponse.orderNum; Main.SetTimer(2, 5000); } //주문응답 아이디가 ID8과 같으면 if (OrderResponse.orderID == ID8) { Num8 = OrderResponse.orderNum; Main.SetTimer(3, 5000); } //재주문 //주문응답 아이디가 XID7과 같으면 //시장가로 재주문 if (OrderResponse.orderID == XID7) { if (Xpst7== 1) { Account7.OrderSell(Xcod7, Xvo7, 0, 1); } if (Xpst7== 2) { Account7.OrderBuy(Xcod7, Xvo7, 0, 1); } } //주문응답 아이디가 XID8과 같으면 //시장가로 재주문 if (OrderResponse.orderID == XID8) { if (Xpst8 == 1) { Account7.OrderSell(Xcod8, Xvo8, 0, 1); } if (Xpst8 == 2) { Account7.OrderBuy(Xcod8, Xvo8, 0, 1); } } } } 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-10-19 15:32:09

안녕하세요 예스스탁입니다. var num = Account7.Balance.number; Balance객체는 잔고객체로 지정한 종목의 평단가등의 정보를 리턴해주는 객체입니다. Balance객체에는 number라는 프로퍼티가 없습니다. 계좌의 계좌번호는 계좌객체에서 제공되는 값입니다. 계좌번호 리턴은 아래와 같이 지정해서 받아야 합니다. var num = Account7.number; 스팟 도움말에서 Account객체와 Balance객체 설명 참고하시기 바랍니다. 즐거운 하루되세요 > 멋진감자 님이 쓴 글입니다. > 제목 : 자동매도수식 검토 및 MessageList오류여부 검토 부탁드립니다. > 수고많으십니다. Main.MessageList("na2=",Account7); Main.MessageList("na1=",woo,"계좌=",num); var num = Account7.Balance.number; 질문입니다. na2에서 Account7은 계좌번호가 표시가 되는데 na1에서 계좌번호를 변수로 저장한 num으로 넣으면 undefined 에러가 발생합니다. 수식검토 부탁드립니다. // 전역변수선언 var exit7; var Position7; var Snum7; var Bnum7; var BuyFill7; var SellFill7; var ID7,ID8,Num7,Num8; var Xcode7,Xpst7,Xvo7,XID7; var Xcode8,Xpst8,Xvo8,XID8; //스팟 시작 function Main_OnStart() { Main.SetTimer(1, 10000); exit7 = false; } function Main_OnTimer(nEventID) { if (nEventID == 1) { if (exit7 == false) { Account7.SetBalanceItem(MD7, 0); var vo7 = Account7.Balance.count; //수량 var po7 = Account7.Balance.position; //포지션방향(매도1, 매수2) var cu7 = Account7.Balance.current; //현재가 var num = Account7.Balance.number; var woo = C7.GetIndicatorData("진입1", 1, 0); Main.MessageList("na2=",Account7); Main.MessageList("na1=",woo,"계좌=",num); } } if ( po7 == 1 && Cu7 >=woo) //매도포지션이고 현재가격이 지표 "진입" 값과 같으면 { exit7 = true; //첫번째 SetTimer 시작 //전량 시장가로 매수주문(청산) 및 ID7에 주문아이디 저장 ID7 = Account7.OrderBuy(MD7,vo7, 0, 1); } if (po7 == 2 && Cu7 <= woo) //매수포지션이고 현재가격이 지표"진입" 값과 같거나 작으면 { //전량 시장가로 매도주문(청산) 및 ID7에 주문아이디 저장 ID7 = Account7.OrderSell(MD7,vo7, 0, 1); } //2번 타이머 if (nEventID == 2) //두번째 SetTimer 시작 { Main.KillTimer(2); //Num7주문번호의 미체결 객체 셋팅 Account7.SetUnfillOrderNumber(Num7); //미체결 수량이 있으면 if (Account7.Unfill.count > 0) { Xcode7 = Account7.Unfill.code; //종목코드 저장 Xpst7 = Account7.Unfill.orderKind; //주문구분 저장 Xvo7 = Account7.Unfill.count; //주문수량 저장 XID7 = Account7.OrderCancel(Num7); //취소주문, 주문아이디 XID7 저장 } } //3번 타이머 if (nEventID == 3) { Main.KillTimer(3); //Num8주문번호 미체결 객체 셋팅 Account7.SetUnfillOrderNumber(Num8); if (Account7.Unfill.count > 0) { Xcode8 = Account7.Unfill.code; Xpst8 = Account7.Unfill.orderKind; Xvo8 = Account7.Unfill.count; XID8 = Account7.OrderCancel(Num8); } } //주문응답 function Main_OnOrderResponse(OrderResponse) { //주문응답 아이디(orderID)가 ID7(최초주문아이디)과 같으면 if (OrderResponse.orderID == ID7) { //주문번호 저장 Num7 = OrderResponse.orderNum; Main.SetTimer(2, 5000); } //주문응답 아이디가 ID8과 같으면 if (OrderResponse.orderID == ID8) { Num8 = OrderResponse.orderNum; Main.SetTimer(3, 5000); } //재주문 //주문응답 아이디가 XID7과 같으면 //시장가로 재주문 if (OrderResponse.orderID == XID7) { if (Xpst7== 1) { Account7.OrderSell(Xcod7, Xvo7, 0, 1); } if (Xpst7== 2) { Account7.OrderBuy(Xcod7, Xvo7, 0, 1); } } //주문응답 아이디가 XID8과 같으면 //시장가로 재주문 if (OrderResponse.orderID == XID8) { if (Xpst8 == 1) { Account7.OrderSell(Xcod8, Xvo8, 0, 1); } if (Xpst8 == 2) { Account7.OrderBuy(Xcod8, Xvo8, 0, 1); } } } } 감사합니다.