커뮤니티

문의드립니다

프로필 이미지
열심히하는
2026-02-20 11:21:04
103
글번호 230644

아래와 같이 이용중인데요

하루 매수 하는 종목수를 3개이하로 제한하려면 뭘 추가해야 할까요?

var DailyMaxStocks = 3;

를 추가 했는데 안되서 문의드립니다



var timer5 = 2; // 2초

var 매수금 =100000;

var OrderList = [];

var MKList = [];

var req;



function Main_OnStart() {

// 1번 타이머, 1초

Main.SetTimer(1, timer5 * 1000);


// 오늘 매수한 종목 관리 배열 초기화

MKList = [];

}


function Main_OnTimer(nEventID) {

var d = new Date();

YYYYMMDD = d.getFullYear() * 10000 + (d.getMonth() + 1) * 100 + d.getDate();

HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds();


if (nEventID == 1 && HHMMSS > 090000 && HHMMSS < 100000) {

// 종목검색 수행

Main.ReqPowerSearch("전략명");

}


if (nEventID == 2) {

Main.ReqMarketData(OrderList[req]);

}

}


function Main_OnRcvItemList(aItemList, nCount) {

Main.KillTimer(1);


OrderList = [];


if (nCount >= 1) {

if (MKList.length == 0) {

OrderList = aItemList.slice(0, 종목제한수); // 한정된 수만 가져오기

} else {

for (var a = 0; a < nCount; a++) {

var Add = true;

for (var b = 0; b < MKList.length; b++) {

if (aItemList[a] == MKList[b].code) {

Add = false;

}

}


if (Add == true && !IsStockInAccount(aItemList[a])) {

OrderList.push(aItemList[a]);

// 제한 수를 넘는 경우 break

if (OrderList.length >= 종목제한수) {

break;

}

}

}

}


if (OrderList.length == 0) {

Main.SetTimer(1, timer5 * 1000);

} else {

req = 0;

Main.ReqMarketData(OrderList[req]);

}

}

}


function Main_OnRcvMarketData(MarketData) {

if (MarketData.code == OrderList[req]) {

MKList.push(MarketData);


// 계좌에 같은 종목이 있는지 확인

if (!IsStockInAccount(MarketData.code)) {

// 계좌에 없는 경우에만 매수

//Account1.OrderBuy(MarketData.code, 1, 0, 1);

Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), 0, 1);

//Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), MarketData.Ask(1), 0);


// 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다.

Main.MessageList(MarketData.code + " 주식을 매수합니다.");

} else {

Main.MessageList(MarketData.code + " 주식은 이미 계좌에 있으므로 매수하지 않습니다.");

}


req = req + 1;


if (req < OrderList.length) {

var aa = Main.ReqMarketData(OrderList[req]);

if (aa == -1) {

Main.SetTimer(2, 15000);

}

} else {

Main.SetTimer(1, timer5 * 1000);

}

}

}


function IsStockInAccount(stockCode) {

// 계좌에 해당 종목이 있는지 확인하는 함수

var numberOfBalances = Account1.GetTheNumberOfBalances();


for (var i = 0; i < numberOfBalances; i++) {

Account1.SetBalance(i);

if (stockCode == Account1.Balance.code) {

return true; // 계좌에 같은 종목이 있으면 true 반환

}

}


return false; // 계좌에 같은 종목이 없으면 false 반환

}

답변 0