커뮤니티

잔고정보 메서드 문제

프로필 이미지
zzong29
2025-03-20 10:07:37.0
181
글번호 226246
답변완료
예스스팟 입문 공부중입니다. 스레일링스탑, 익절 손절 함수 진행을 위해 제 account1번 에서 잔고정보를 확인해 주는 메서드를 가져와야 되는데, 메서드가 없다는 오류가 뜸니다. 수식은 아래와 같습니다. 오류좀 잡아주세요. 매도가 진행이 안되고 있습니다. 그래서 다른 메서드가 있는지도 확인하는 수식을 넣었지만 없다고 하네요. 참고: if (nEventID == 2 && MK.length > 0) { // 보유 종목이 있을 때 매도/손절/익절 타이머 Main.MessageList("매도 로직 시작"); var num = Account1.GetTheNumberOfBalances(); if (num > 0 && HHMMSS < 144000) { for (var i = 0; i < num; i++) { Account1.SetBalance(i); //var stockBalance = Account1.GetBalance(i); // i번째 보유 종목 잔고 정보 가져오기에 에러가 생겨서 이 줄을 주석처리하고, //일반적으로 잔고 정보를 가져오는 메서드는 GetBalance 대신 GetBalanceList 또는 GetBalances와 같은 이름을 사용함 var stockBalance = null;//여기서 부터 메서드 지원여부 확인차 아래 함수로 대체함. // GetBalance 메서드 존재 여부 확인 및 대체 메서드 사용을 위해 if (typeof Account1.GetBalance === 'function') { stockBalance = Account1.GetBalance(i); } else if (typeof Account1.GetBalanceList === 'function') { var balances = Account1.GetBalanceList(); if (balances && balances[i]) { stockBalance = balances[i]; } } else {//GetBalanceList 또는 GetBalances 와 같은 보유잔고 정보확인을 위한 메서드도 없다면 Main.MessageList("Account1 객체에 잔고 정보 가져오는 메서드가 없습니다."); continue; // 그렇다면 다음 종목으로 이동 (메서드가 없다면 매도 로직은 실행되지 않음) } 이상입니다. 쉽게 설명 추가 부탁해요.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-04-03 14:06:38.0

안녕하세요 예스스탁입니다. 스팟 계좌객체에는 GetBalance나 GetBalanceList라는 함수가 없습니다. 스팟 도움말이나 편집기의 객체정보에 각 객체별로 제공하는 프로퍼티나 함수내역을 보실 수 있습니다. Account1.SetBalance함수로 특정종목의 잔고를 셋팅하게 되면 Account1.Balance에 해당종목의 잔고가 셋팅되고 Account1.Balance.count Account1.Balance.avgUnitCost 와 같이 잔고객체의 프로퍼티나 함수로 값을 불러와 사용하실 수 있습니다. 아래와 같이 변경 후 디버깅창에 표시되는 내용 참고하시기 바랍니다. if (nEventID == 2 && MK.length > 0) { Main.MessageList("매도 로직 시작"); var num = Account1.GetTheNumberOfBalances(); if (num > 0 && HHMMSS < 144000) { for (var i = 0; i < num; i++) { Account1.SetBalance(i); Main.MessageList(Account1.Balance); } } } 즐거운 하루되세요 > zzong29 님이 쓴 글입니다. > 제목 : 잔고정보 메서드 문제 > 예스스팟 입문 공부중입니다. 스레일링스탑, 익절 손절 함수 진행을 위해 제 account1번 에서 잔고정보를 확인해 주는 메서드를 가져와야 되는데, 메서드가 없다는 오류가 뜸니다. 수식은 아래와 같습니다. 오류좀 잡아주세요. 매도가 진행이 안되고 있습니다. 그래서 다른 메서드가 있는지도 확인하는 수식을 넣었지만 없다고 하네요. 참고: if (nEventID == 2 && MK.length > 0) { // 보유 종목이 있을 때 매도/손절/익절 타이머 Main.MessageList("매도 로직 시작"); var num = Account1.GetTheNumberOfBalances(); if (num > 0 && HHMMSS < 144000) { for (var i = 0; i < num; i++) { Account1.SetBalance(i); //var stockBalance = Account1.GetBalance(i); // i번째 보유 종목 잔고 정보 가져오기에 에러가 생겨서 이 줄을 주석처리하고, //일반적으로 잔고 정보를 가져오는 메서드는 GetBalance 대신 GetBalanceList 또는 GetBalances와 같은 이름을 사용함 var stockBalance = null;//여기서 부터 메서드 지원여부 확인차 아래 함수로 대체함. // GetBalance 메서드 존재 여부 확인 및 대체 메서드 사용을 위해 if (typeof Account1.GetBalance === 'function') { stockBalance = Account1.GetBalance(i); } else if (typeof Account1.GetBalanceList === 'function') { var balances = Account1.GetBalanceList(); if (balances && balances[i]) { stockBalance = balances[i]; } } else {//GetBalanceList 또는 GetBalances 와 같은 보유잔고 정보확인을 위한 메서드도 없다면 Main.MessageList("Account1 객체에 잔고 정보 가져오는 메서드가 없습니다."); continue; // 그렇다면 다음 종목으로 이동 (메서드가 없다면 매도 로직은 실행되지 않음) } 이상입니다. 쉽게 설명 추가 부탁해요.