답변완료
매도/매수 총잔량을 가져오지 못하네요
안녕하세요,
아래와 같이 코드를 만들었는데,
실제 로그를 찍어보면 undefined 라고 나옵니다.
종목 코드는 정상으로 찍히고 다 되는데, 매수/매도 잔량이 안나와서요,
혹시 제가 놓치거나 수식 오류가 있는지 도움 부탁드립니다.
대상은 선물 옵션이 아닌 일반 주식종목입니다.
## 매도 잔량 =undefined
## 매수 잔량 =undefined
## 종목 코드 =382048
function Main_OnStart()
{
Main.SetTimer(1, 5000);
AllowBuy = 1;
BuyCount = 0;
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if(nEventID == 1)
{
if(HHMMSS >= 093000)
{
Main.KillTimer(1);
Main.ReqPowerSearch("5분봉_검색");
}
}
}
function Main_OnRcvItemList(altemList, nCount)
{
List = altemList;
ListCnt = nCount;
Main.ReqMarketData(List[i],0);
}
function Main_OnRcvMarketData(MarketData)
{
var MD = MarketData;
// 매도 잔량과 매수 잔량 체크
Main.MessageLog("## 매도 잔량 ="+MD.AskTotalAmount);
Main.MessageLog("## 매수 잔량 ="+MD.BidTotalAmount);
Main.MessageLog("## 종목코드 ="+MD.code);
Main.RemoveObject(MD);
}
답변완료
수정부탁드려요
밑의 수식에서 따로 객체사용 없이 (금액/현재가)로 해서 주문수량 설정 할 수 있을까요?
(10만원 /현재가) 갯수 나오면 주문수량으로 하고싶은데 부탁드려요
function Main_OnStart()
{
//1번 타이머, 60초
Main.SetTimer(1, 2000);
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
//종목검색 수행
Main.ReqPowerSearch("3")
}
}
//종목검색 완료
function Main_OnRcvItemList(aItemList, nCount)
{
//1종목 이상 검색되면
if (nCount >= 1)
{
//리스트 첫종목부터 마지막종목까지 순차적으로
//1번 타이머 동작
for (var i = 0; i < nCount; i++)
{
//잔고를 셋팅
Account1.SetBalance(aItemList[i],0);
//보유수량이 없으면
if (Account1.Balance.count < 1)
{
//매수주문
Account1.OrderBuy(aItemList[i], 3,0,1);
}
}
}
}
답변완료
미체결 함수를 만들었는데.. 이상하게 작동하지 않는것 같습니다.
예를 들어 -1.5% 내려갈때 보유수량의 20%를 지정가에 팔고, -3%로 내려갈때 시장가로 전량 판매시 아래의 미체결 함수를 돌려 해당코드의 미체결 내역이 있으면 취소하고, 전량 시장가로 판매하려 합니다.
급 하락시 시장가로 전체 매도하려는 겁니다.
이게 상황이 잘 나오지 않아 확인이 어렵고, 상황이 나오면 전량 판매가 안되면서 손해가 생겨서 곤란 하네요.
메뉴얼도 여러번 봤고, 제가보기엔 문제 없는데.. 가끔식 -5% 이하로 떨어져 있는 주식을 보게 됩니다.
도움 부탁드립니다.
// 미체결 주문 취소 함수
function cancelUnfilledOrders(stockCode) {
var numUnfilled = Account1.GetTheNumberOfUnfills();
for (var i = 0; i < numUnfilled; i++) {
Account1.SetUnfillIndex(i);
if (Account1.Unfill.code == stockCode) {
var cancelResult = Account1.OrderCancel(Account1.Unfill.orderNum);
// 취소 결과에 따른 메시지 출력
if (cancelResult > 0) {
Main.MessageList(getCurrentTime() + " 주문 취소 성공: 주문 번호 " + Account1.Unfill.orderNum);
} else if (cancelResult == 0) {
Main.MessageList(getCurrentTime() + " 주문 취소 실패(사용상 오류): 주문 번호 " + Account1.Unfill.orderNum);
} else if (cancelResult == -1) {
Main.MessageList(getCurrentTime() + " 주문 취소 불가(시간 제한): 주문 번호 " + Account1.Unfill.orderNum);
}
}
}
}