커뮤니티
15초당 60회 조회 제한 관련해서 문의
2015-05-05 20:53:28
271
글번호 85699
예스스팟 매뉴얼에 보면...예스스팟은 서버에 과도한 부하를 줄이기 위해 시세조회와 계좌 조회를 15초당 60회로 제한하고 있습니다....라는 내용이 있는데요.
만약, 예스스팟 스튜디오의 스크립트 객체화면에서 코스피200 선물 6월물(객체명은 future로 설정)을 한 종목 추가시키고, 다음과 같이 코딩했다고 했을 때,
function Main_OnStart()
{ var i;
for (i=0; i<30; i++)
{
Main.MessageList(future.current);
Main.MessageList(future.high);
Main.MessageList(future.Bid(2));
}
}
for문 내에서 future.current와 future.high, future.Bid(2)를 각각 조회하니까 조회건수는 3건...
그리고 for문을 30번 수행시키니까 곱하기 30을 해주면...
결국 3 × 30 = 90 이 되어 총 90건의 조회를 한다는 의미인가요?
그러면 15초에 60회까지만 조회를 허락하니까 60건 조회하고 나머지 30건은 조회에 실패한다는 의미인가요?
근데, 실제로 테스트해보면 for문이 중간에 실패하는 일 없이 정상적으로 수행되더군요.
만약 90건의 조회가 실패없이 한번에 조회가 된다는 의미는 서버에서 새로운 데이터를 받아와서 MessageList로 데이터를 표시해 주는게 아니라 이전에 받아왔던 데이터를 계속해서 보여주고 있다는 의미인가요?
선물의 현재가나 고가, 매수2호가 는 실시간으로 계속 변하기 때문에 for문에서 루프를 돌면서 이 데이터를 조회할때마다 계속 새로운 데이터를 서버에 요청해야 될텐데요?
이런 경우는 어떻게 이해해야 되나요?
또한, Main 객체내의 OnUpd ateMarket 이벤트에 대해서도 이해가 잘 안됩니다.
예를들어, 옵션 5월물 종목들 전체를 추가했다고 가정할 때 5월물 종목수만 해도 76개입니다.
ReqMarketData()을 이용하여 종목 추가를 해보니 딱 60개 추가하고 나머지 16개는 추가에 실패하는 건 직접 확인했습니다.
그래서, 일단은 15초 후에 나머지 16개 종목을 추가하면 추가가 되긴 하더군요.
결국, 76개 종목을 30초에 걸쳐 일단 추가는 된 상황에서 문제는...한번 추가했다고 끝나는게 아니라 실시간으로 계속 76개 종목의 데이터를 받아와야 하지 않습니까?
OnUp dateMarket 이벤트를 통해서 시세나 호가 변동시마다 계속 이벤트가 발생하던데...이때는 15초에 60개 이상의 이벤트가 제한없이 발생하더군요.
제 생각엔 OnUpd ateMarket 이벤트도 결국 서버로부터 업데이트된 시세와 호가를 조회해서 받아오는 거니까 한번의 이벤트는 결국 한번의 조회로 계산되어야 할 거 같은데요.
그래서, 이벤트가 60회 발생하면 그 다음 이벤트는 15초가 지난후에나 발생해야 될 거 같은데.....실제로 테스트해보면 그렇게 되진 않더군요.
어떤 조회는 1번의 조회로 간주되고 어떤 조회는 1번의 조회가 아닌 걸로 간주되는지...무지 헷갈립니다.
15초당 60회 제한 규정에서 1번의 조회가 구체적으로 어떻게 조회할 때 1번 조회한 걸로 계산되는지 알고 싶습니다.
매뉴얼 상에는 종목객체 요청시는 15초당 60회, 주문은 15초당 90회, 계좌조회는 15초당 60회...일간데이터와 수급데이터를 같이 조회하면 조회 건수는 3으로 계산된다...뭐 이렇게 두루뭉술하게 설명되어 있는데, 매뉴얼 읽어봐도 조회의 개념이 잘 이해가 되질 않습니다.
좀더 구체적으로 설명 좀 부탁드립니다.
그리고, 아래 41675 번글에 대한 답변 내용이 잘 이해가 안되서 재문의드렸는데, 확인 좀 부탁드립니다.
답변 3
예스스탁 예스스탁 답변
2015-05-06 10:02:34
안녕하세요
예스스탁입니다.
해당 제한은 종목객체 요청과 원장동기화와 관련된 내용입니다.
1.
Main.ReqMarketData(sItemCode, nDailyCount, nInvestDailyCount)
sItemCode – 종목코드
DailyCount – 일간데이터 조회건수 (0이면 일간데이터를 요청하지 않습니다.)
nInvestDailyCount – 일간수급데이터의 조회건수 (0이면 일간데이터를 요청하지 않습니다.)
는 필요시 수식안에서 서버에 종목객체를 요청하는 함수입니다.
종목객체에 대한 요청을 한번에 다수를 하실수 있는데 너무 많은 수를 한번에 요청을 하시게 되면
서버에 부하가 많이 걸리게 되므로 15초안에 60회까지로 제한을 두고 있습니다.
스크립트객체나 혹은 수식에서 요청해 이미 구축된 종목객체에 대해서는
자동으로 업데이트가 되고 future.current나 future.high는 구축된 종목객체에서
값을 가져와 사용하시는 것이므로 해당 제한은 없습니다.
즉 해당 제한은 수식안에서 새로운 종목에 대한 객체를 요청하실때의 제한이고
특정종목에 대해 시세만 받으시면 1건,
그종목의 일간데이터를 추가로 요청하시면 +1건이 되고
수급데이터도 추가로 요청하시면 +1건으로 처리됩니다.
2
예스스팟은 계좌정보를 사용할때 가원장을 사용합니다.
처음에 스팟이 동작을 할때 원장에서 정보를 가져와 동일한 내용으로 가원장을 구축합니다.
구축한 이후에 주문응답이나 체결응답정보로 가원장을 갱신해 가게 되는데
스마트폰 어플등 다른 프로그램으로 주문을 내게 되면
증권사에 따라 주문낸 프로그램쪽으로만 주문응답이나 체결등 정보를 보내주기도 해서
구축된 가원장과 실제원장과 차이가 발생할수 있습니다.
이런이유로 아래와 같이 스팟에서 가원장과 원장을 동기화하는 함수가 제공되고 있습니다.
Account1.Refresh()
위 함수가 동작을 하면 원장에서 정보를 가져와 가원장을 새로 갱신하게 되는데
계좌조회의 제한은 위함수의 동작을 15초에 60회로 제한한다는 내용입니다.
짧은 시간안에 원장에 계속 요청을 하게 되면 마찬가지로 부하가 많이 걸리게 되므로
15초에 60회로 제한을 두었습니다.
가원장과 원장의 동기화는 다른주문매체를 이용하지 않으시면 따로 필요는 없지만
사용하신다면 타이머등으로 일정주기마다 한번씩만 동작하게 하시면 됩니다.
즐거운 하루되세요
> 김태희 님이 쓴 글입니다.
> 제목 : 15초당 60회 조회 제한 관련해서 문의
> 예스스팟 매뉴얼에 보면...예스스팟은 서버에 과도한 부하를 줄이기 위해 시세조회와 계좌 조회를 15초당 60회로 제한하고 있습니다....라는 내용이 있는데요.
만약, 예스스팟 스튜디오의 스크립트 객체화면에서 코스피200 선물 6월물(객체명은 future로 설정)을 한 종목 추가시키고, 다음과 같이 코딩했다고 했을 때,
function Main_OnStart()
{ var i;
for (i=0; i<30; i++)
{
Main.MessageList(future.current);
Main.MessageList(future.high);
Main.MessageList(future.Bid(2));
}
}
for문 내에서 future.current와 future.high, future.Bid(2)를 각각 조회하니까 조회건수는 3건...
그리고 for문을 30번 수행시키니까 곱하기 30을 해주면...
결국 3 × 30 = 90 이 되어 총 90건의 조회를 한다는 의미인가요?
그러면 15초에 60회까지만 조회를 허락하니까 60건 조회하고 나머지 30건은 조회에 실패한다는 의미인가요?
근데, 실제로 테스트해보면 for문이 중간에 실패하는 일 없이 정상적으로 수행되더군요.
만약 90건의 조회가 실패없이 한번에 조회가 된다는 의미는 서버에서 새로운 데이터를 받아와서 MessageList로 데이터를 표시해 주는게 아니라 이전에 받아왔던 데이터를 계속해서 보여주고 있다는 의미인가요?
선물의 현재가나 고가, 매수2호가 는 실시간으로 계속 변하기 때문에 for문에서 루프를 돌면서 이 데이터를 조회할때마다 계속 새로운 데이터를 서버에 요청해야 될텐데요?
이런 경우는 어떻게 이해해야 되나요?
또한, Main 객체내의 OnUpd ateMarket 이벤트에 대해서도 이해가 잘 안됩니다.
예를들어, 옵션 5월물 종목들 전체를 추가했다고 가정할 때 5월물 종목수만 해도 76개입니다.
ReqMarketData()을 이용하여 종목 추가를 해보니 딱 60개 추가하고 나머지 16개는 추가에 실패하는 건 직접 확인했습니다.
그래서, 일단은 15초 후에 나머지 16개 종목을 추가하면 추가가 되긴 하더군요.
결국, 76개 종목을 30초에 걸쳐 일단 추가는 된 상황에서 문제는...한번 추가했다고 끝나는게 아니라 실시간으로 계속 76개 종목의 데이터를 받아와야 하지 않습니까?
OnUp dateMarket 이벤트를 통해서 시세나 호가 변동시마다 계속 이벤트가 발생하던데...이때는 15초에 60개 이상의 이벤트가 제한없이 발생하더군요.
제 생각엔 OnUpd ateMarket 이벤트도 결국 서버로부터 업데이트된 시세와 호가를 조회해서 받아오는 거니까 한번의 이벤트는 결국 한번의 조회로 계산되어야 할 거 같은데요.
그래서, 이벤트가 60회 발생하면 그 다음 이벤트는 15초가 지난후에나 발생해야 될 거 같은데.....실제로 테스트해보면 그렇게 되진 않더군요.
어떤 조회는 1번의 조회로 간주되고 어떤 조회는 1번의 조회가 아닌 걸로 간주되는지...무지 헷갈립니다.
15초당 60회 제한 규정에서 1번의 조회가 구체적으로 어떻게 조회할 때 1번 조회한 걸로 계산되는지 알고 싶습니다.
매뉴얼 상에는 종목객체 요청시는 15초당 60회, 주문은 15초당 90회, 계좌조회는 15초당 60회...일간데이터와 수급데이터를 같이 조회하면 조회 건수는 3으로 계산된다...뭐 이렇게 두루뭉술하게 설명되어 있는데, 매뉴얼 읽어봐도 조회의 개념이 잘 이해가 되질 않습니다.
좀더 구체적으로 설명 좀 부탁드립니다.
그리고, 아래 41675 번글에 대한 답변 내용이 잘 이해가 안되서 재문의드렸는데, 확인 좀 부탁드립니다.
김태희
2015-05-06 11:44:50
시세 조회시에 15초당 60회로 조회에 제한을 두는 경우에 다음과 같이 답변을 주셨는데요.
답변주신 내용:
스크립트객체나 혹은 수식에서 요청해 이미 구축된 종목객체에 대해서는 자동으로 업데이트가 되고 future.current나 future.high는 구축된 종목객체에서 값을 가져와 사용하시는 것이므로 해당 제한은 없습니다. 즉 해당 제한은 수식안에서 새로운 종목에 대한 객체를 요청하실때의 제한입니다.
즉, 15초당 60회의 조회제한은 예스스팟에서 작성된 수식으로인해 종목 객체를 최초로 추가시킬때만 제한이 가해지고, 일단 종목이 추가가 완료된 이후에는 서버에서 자동으로 업데이트된 정보를 계속 보내주니까 더 이상 조회의 제한은 없다는 내용인데요.
이때 한가지 의문점은 예스스팟에서 수식을 작성하여 1개의 종목만을 추가해서 이후 자동으로 업데이트된 시세정보를 받아오는 경우와 예스스팟에서 100개의 종목을 추가해서 이후 자동으로 업데이트된 시세 정보를 받아오는 경우를 비교하면, 후자가 서버에 100배의 부하를 더 주는 거 아닌가요?
1개 종목만 추가시킨 경우에는 서버에서도 1개 종목에대한 업데이트된 정보만 계속 보내주면 되지만 100개 종목을 추가시킨 경우에는 이 100개 종목에대한 업데이트된 정보를 계속 보내줘야 되니까...서버로서는 100배로 더 부하가 걸릴 거 같은데요?
이런 종류의 부하에 대해서는 제한이 전혀 없다는 말씀이신가요?
결국, 15초당 60회 조회제한은 처음 종목객체를 추가시킬때만 시간이 좀 걸릴뿐이지(많은 수의 종목을 추가할 때 얘기입니다) 일단 추가가 완료만 되면 그 이후는 추가된 종목수가 500개든 1000개든 상관없이 추가된 종목에대해서는 서버에서 업데이트된 시세 정보를 자동으로 계속 보내주니까 더 이상의 조회제한은 없다는 뜻이 되는데요. 제가 이해한 내용이 맞나요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 15초당 60회 조회 제한 관련해서 문의
> 안녕하세요
예스스탁입니다.
해당 제한은 종목객체 요청과 원장동기화와 관련된 내용입니다.
1.
Main.ReqMarketData(sItemCode, nDailyCount, nInvestDailyCount)
sItemCode – 종목코드
DailyCount – 일간데이터 조회건수 (0이면 일간데이터를 요청하지 않습니다.)
nInvestDailyCount – 일간수급데이터의 조회건수 (0이면 일간데이터를 요청하지 않습니다.)
는 필요시 수식안에서 서버에 종목객체를 요청하는 함수입니다.
종목객체에 대한 요청을 한번에 다수를 하실수 있는데 너무 많은 수를 한번에 요청을 하시게 되면
서버에 부하가 많이 걸리게 되므로 15초안에 60회까지로 제한을 두고 있습니다.
스크립트객체나 혹은 수식에서 요청해 이미 구축된 종목객체에 대해서는
자동으로 업데이트가 되고 future.current나 future.high는 구축된 종목객체에서
값을 가져와 사용하시는 것이므로 해당 제한은 없습니다.
즉 해당 제한은 수식안에서 새로운 종목에 대한 객체를 요청하실때의 제한이고
특정종목에 대해 시세만 받으시면 1건,
그종목의 일간데이터를 추가로 요청하시면 +1건이 되고
수급데이터도 추가로 요청하시면 +1건으로 처리됩니다.
2
예스스팟은 계좌정보를 사용할때 가원장을 사용합니다.
처음에 스팟이 동작을 할때 원장에서 정보를 가져와 동일한 내용으로 가원장을 구축합니다.
구축한 이후에 주문응답이나 체결응답정보로 가원장을 갱신해 가게 되는데
스마트폰 어플등 다른 프로그램으로 주문을 내게 되면
증권사에 따라 주문낸 프로그램쪽으로만 주문응답이나 체결등 정보를 보내주기도 해서
구축된 가원장과 실제원장과 차이가 발생할수 있습니다.
이런이유로 아래와 같이 스팟에서 가원장과 원장을 동기화하는 함수가 제공되고 있습니다.
Account1.Refresh()
위 함수가 동작을 하면 원장에서 정보를 가져와 가원장을 새로 갱신하게 되는데
계좌조회의 제한은 위함수의 동작을 15초에 60회로 제한한다는 내용입니다.
짧은 시간안에 원장에 계속 요청을 하게 되면 마찬가지로 부하가 많이 걸리게 되므로
15초에 60회로 제한을 두었습니다.
가원장과 원장의 동기화는 다른주문매체를 이용하지 않으시면 따로 필요는 없지만
사용하신다면 타이머등으로 일정주기마다 한번씩만 동작하게 하시면 됩니다.
즐거운 하루되세요
> 김태희 님이 쓴 글입니다.
> 제목 : 15초당 60회 조회 제한 관련해서 문의
> 예스스팟 매뉴얼에 보면...예스스팟은 서버에 과도한 부하를 줄이기 위해 시세조회와 계좌 조회를 15초당 60회로 제한하고 있습니다....라는 내용이 있는데요.
만약, 예스스팟 스튜디오의 스크립트 객체화면에서 코스피200 선물 6월물(객체명은 future로 설정)을 한 종목 추가시키고, 다음과 같이 코딩했다고 했을 때,
function Main_OnStart()
{ var i;
for (i=0; i<30; i++)
{
Main.MessageList(future.current);
Main.MessageList(future.high);
Main.MessageList(future.Bid(2));
}
}
for문 내에서 future.current와 future.high, future.Bid(2)를 각각 조회하니까 조회건수는 3건...
그리고 for문을 30번 수행시키니까 곱하기 30을 해주면...
결국 3 × 30 = 90 이 되어 총 90건의 조회를 한다는 의미인가요?
그러면 15초에 60회까지만 조회를 허락하니까 60건 조회하고 나머지 30건은 조회에 실패한다는 의미인가요?
근데, 실제로 테스트해보면 for문이 중간에 실패하는 일 없이 정상적으로 수행되더군요.
만약 90건의 조회가 실패없이 한번에 조회가 된다는 의미는 서버에서 새로운 데이터를 받아와서 MessageList로 데이터를 표시해 주는게 아니라 이전에 받아왔던 데이터를 계속해서 보여주고 있다는 의미인가요?
선물의 현재가나 고가, 매수2호가 는 실시간으로 계속 변하기 때문에 for문에서 루프를 돌면서 이 데이터를 조회할때마다 계속 새로운 데이터를 서버에 요청해야 될텐데요?
이런 경우는 어떻게 이해해야 되나요?
또한, Main 객체내의 OnUpd ateMarket 이벤트에 대해서도 이해가 잘 안됩니다.
예를들어, 옵션 5월물 종목들 전체를 추가했다고 가정할 때 5월물 종목수만 해도 76개입니다.
ReqMarketData()을 이용하여 종목 추가를 해보니 딱 60개 추가하고 나머지 16개는 추가에 실패하는 건 직접 확인했습니다.
그래서, 일단은 15초 후에 나머지 16개 종목을 추가하면 추가가 되긴 하더군요.
결국, 76개 종목을 30초에 걸쳐 일단 추가는 된 상황에서 문제는...한번 추가했다고 끝나는게 아니라 실시간으로 계속 76개 종목의 데이터를 받아와야 하지 않습니까?
OnUp dateMarket 이벤트를 통해서 시세나 호가 변동시마다 계속 이벤트가 발생하던데...이때는 15초에 60개 이상의 이벤트가 제한없이 발생하더군요.
제 생각엔 OnUpd ateMarket 이벤트도 결국 서버로부터 업데이트된 시세와 호가를 조회해서 받아오는 거니까 한번의 이벤트는 결국 한번의 조회로 계산되어야 할 거 같은데요.
그래서, 이벤트가 60회 발생하면 그 다음 이벤트는 15초가 지난후에나 발생해야 될 거 같은데.....실제로 테스트해보면 그렇게 되진 않더군요.
어떤 조회는 1번의 조회로 간주되고 어떤 조회는 1번의 조회가 아닌 걸로 간주되는지...무지 헷갈립니다.
15초당 60회 제한 규정에서 1번의 조회가 구체적으로 어떻게 조회할 때 1번 조회한 걸로 계산되는지 알고 싶습니다.
매뉴얼 상에는 종목객체 요청시는 15초당 60회, 주문은 15초당 90회, 계좌조회는 15초당 60회...일간데이터와 수급데이터를 같이 조회하면 조회 건수는 3으로 계산된다...뭐 이렇게 두루뭉술하게 설명되어 있는데, 매뉴얼 읽어봐도 조회의 개념이 잘 이해가 되질 않습니다.
좀더 구체적으로 설명 좀 부탁드립니다.
그리고, 아래 41675 번글에 대한 답변 내용이 잘 이해가 안되서 재문의드렸는데, 확인 좀 부탁드립니다.
예스스탁 예스스탁 답변
2015-05-06 14:07:15
안녕하세요
예스스탁입니다.
예 이해하신 내용이 맞습니다.
종목객체를 추가하는 부분(서버와 특정종목의 시세를 받게 연결하는 작업)에 대한 제한이지
이미 불러온 종목의 업데이트에 대한 제한은 아닙니다.
즐거운 하루되세요
> 김태희 님이 쓴 글입니다.
> 제목 : Re : Re : 15초당 60회 조회 제한 관련해서 문의
> 시세 조회시에 15초당 60회로 조회에 제한을 두는 경우에 다음과 같이 답변을 주셨는데요.
답변주신 내용:
스크립트객체나 혹은 수식에서 요청해 이미 구축된 종목객체에 대해서는 자동으로 업데이트가 되고 future.current나 future.high는 구축된 종목객체에서 값을 가져와 사용하시는 것이므로 해당 제한은 없습니다. 즉 해당 제한은 수식안에서 새로운 종목에 대한 객체를 요청하실때의 제한입니다.
즉, 15초당 60회의 조회제한은 예스스팟에서 작성된 수식으로인해 종목 객체를 최초로 추가시킬때만 제한이 가해지고, 일단 종목이 추가가 완료된 이후에는 서버에서 자동으로 업데이트된 정보를 계속 보내주니까 더 이상 조회의 제한은 없다는 내용인데요.
이때 한가지 의문점은 예스스팟에서 수식을 작성하여 1개의 종목만을 추가해서 이후 자동으로 업데이트된 시세정보를 받아오는 경우와 예스스팟에서 100개의 종목을 추가해서 이후 자동으로 업데이트된 시세 정보를 받아오는 경우를 비교하면, 후자가 서버에 100배의 부하를 더 주는 거 아닌가요?
1개 종목만 추가시킨 경우에는 서버에서도 1개 종목에대한 업데이트된 정보만 계속 보내주면 되지만 100개 종목을 추가시킨 경우에는 이 100개 종목에대한 업데이트된 정보를 계속 보내줘야 되니까...서버로서는 100배로 더 부하가 걸릴 거 같은데요?
이런 종류의 부하에 대해서는 제한이 전혀 없다는 말씀이신가요?
결국, 15초당 60회 조회제한은 처음 종목객체를 추가시킬때만 시간이 좀 걸릴뿐이지(많은 수의 종목을 추가할 때 얘기입니다) 일단 추가가 완료만 되면 그 이후는 추가된 종목수가 500개든 1000개든 상관없이 추가된 종목에대해서는 서버에서 업데이트된 시세 정보를 자동으로 계속 보내주니까 더 이상의 조회제한은 없다는 뜻이 되는데요. 제가 이해한 내용이 맞나요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 15초당 60회 조회 제한 관련해서 문의
> 안녕하세요
예스스탁입니다.
해당 제한은 종목객체 요청과 원장동기화와 관련된 내용입니다.
1.
Main.ReqMarketData(sItemCode, nDailyCount, nInvestDailyCount)
sItemCode – 종목코드
DailyCount – 일간데이터 조회건수 (0이면 일간데이터를 요청하지 않습니다.)
nInvestDailyCount – 일간수급데이터의 조회건수 (0이면 일간데이터를 요청하지 않습니다.)
는 필요시 수식안에서 서버에 종목객체를 요청하는 함수입니다.
종목객체에 대한 요청을 한번에 다수를 하실수 있는데 너무 많은 수를 한번에 요청을 하시게 되면
서버에 부하가 많이 걸리게 되므로 15초안에 60회까지로 제한을 두고 있습니다.
스크립트객체나 혹은 수식에서 요청해 이미 구축된 종목객체에 대해서는
자동으로 업데이트가 되고 future.current나 future.high는 구축된 종목객체에서
값을 가져와 사용하시는 것이므로 해당 제한은 없습니다.
즉 해당 제한은 수식안에서 새로운 종목에 대한 객체를 요청하실때의 제한이고
특정종목에 대해 시세만 받으시면 1건,
그종목의 일간데이터를 추가로 요청하시면 +1건이 되고
수급데이터도 추가로 요청하시면 +1건으로 처리됩니다.
2
예스스팟은 계좌정보를 사용할때 가원장을 사용합니다.
처음에 스팟이 동작을 할때 원장에서 정보를 가져와 동일한 내용으로 가원장을 구축합니다.
구축한 이후에 주문응답이나 체결응답정보로 가원장을 갱신해 가게 되는데
스마트폰 어플등 다른 프로그램으로 주문을 내게 되면
증권사에 따라 주문낸 프로그램쪽으로만 주문응답이나 체결등 정보를 보내주기도 해서
구축된 가원장과 실제원장과 차이가 발생할수 있습니다.
이런이유로 아래와 같이 스팟에서 가원장과 원장을 동기화하는 함수가 제공되고 있습니다.
Account1.Refresh()
위 함수가 동작을 하면 원장에서 정보를 가져와 가원장을 새로 갱신하게 되는데
계좌조회의 제한은 위함수의 동작을 15초에 60회로 제한한다는 내용입니다.
짧은 시간안에 원장에 계속 요청을 하게 되면 마찬가지로 부하가 많이 걸리게 되므로
15초에 60회로 제한을 두었습니다.
가원장과 원장의 동기화는 다른주문매체를 이용하지 않으시면 따로 필요는 없지만
사용하신다면 타이머등으로 일정주기마다 한번씩만 동작하게 하시면 됩니다.
즐거운 하루되세요
> 김태희 님이 쓴 글입니다.
> 제목 : 15초당 60회 조회 제한 관련해서 문의
> 예스스팟 매뉴얼에 보면...예스스팟은 서버에 과도한 부하를 줄이기 위해 시세조회와 계좌 조회를 15초당 60회로 제한하고 있습니다....라는 내용이 있는데요.
만약, 예스스팟 스튜디오의 스크립트 객체화면에서 코스피200 선물 6월물(객체명은 future로 설정)을 한 종목 추가시키고, 다음과 같이 코딩했다고 했을 때,
function Main_OnStart()
{ var i;
for (i=0; i<30; i++)
{
Main.MessageList(future.current);
Main.MessageList(future.high);
Main.MessageList(future.Bid(2));
}
}
for문 내에서 future.current와 future.high, future.Bid(2)를 각각 조회하니까 조회건수는 3건...
그리고 for문을 30번 수행시키니까 곱하기 30을 해주면...
결국 3 × 30 = 90 이 되어 총 90건의 조회를 한다는 의미인가요?
그러면 15초에 60회까지만 조회를 허락하니까 60건 조회하고 나머지 30건은 조회에 실패한다는 의미인가요?
근데, 실제로 테스트해보면 for문이 중간에 실패하는 일 없이 정상적으로 수행되더군요.
만약 90건의 조회가 실패없이 한번에 조회가 된다는 의미는 서버에서 새로운 데이터를 받아와서 MessageList로 데이터를 표시해 주는게 아니라 이전에 받아왔던 데이터를 계속해서 보여주고 있다는 의미인가요?
선물의 현재가나 고가, 매수2호가 는 실시간으로 계속 변하기 때문에 for문에서 루프를 돌면서 이 데이터를 조회할때마다 계속 새로운 데이터를 서버에 요청해야 될텐데요?
이런 경우는 어떻게 이해해야 되나요?
또한, Main 객체내의 OnUpd ateMarket 이벤트에 대해서도 이해가 잘 안됩니다.
예를들어, 옵션 5월물 종목들 전체를 추가했다고 가정할 때 5월물 종목수만 해도 76개입니다.
ReqMarketData()을 이용하여 종목 추가를 해보니 딱 60개 추가하고 나머지 16개는 추가에 실패하는 건 직접 확인했습니다.
그래서, 일단은 15초 후에 나머지 16개 종목을 추가하면 추가가 되긴 하더군요.
결국, 76개 종목을 30초에 걸쳐 일단 추가는 된 상황에서 문제는...한번 추가했다고 끝나는게 아니라 실시간으로 계속 76개 종목의 데이터를 받아와야 하지 않습니까?
OnUp dateMarket 이벤트를 통해서 시세나 호가 변동시마다 계속 이벤트가 발생하던데...이때는 15초에 60개 이상의 이벤트가 제한없이 발생하더군요.
제 생각엔 OnUpd ateMarket 이벤트도 결국 서버로부터 업데이트된 시세와 호가를 조회해서 받아오는 거니까 한번의 이벤트는 결국 한번의 조회로 계산되어야 할 거 같은데요.
그래서, 이벤트가 60회 발생하면 그 다음 이벤트는 15초가 지난후에나 발생해야 될 거 같은데.....실제로 테스트해보면 그렇게 되진 않더군요.
어떤 조회는 1번의 조회로 간주되고 어떤 조회는 1번의 조회가 아닌 걸로 간주되는지...무지 헷갈립니다.
15초당 60회 제한 규정에서 1번의 조회가 구체적으로 어떻게 조회할 때 1번 조회한 걸로 계산되는지 알고 싶습니다.
매뉴얼 상에는 종목객체 요청시는 15초당 60회, 주문은 15초당 90회, 계좌조회는 15초당 60회...일간데이터와 수급데이터를 같이 조회하면 조회 건수는 3으로 계산된다...뭐 이렇게 두루뭉술하게 설명되어 있는데, 매뉴얼 읽어봐도 조회의 개념이 잘 이해가 되질 않습니다.
좀더 구체적으로 설명 좀 부탁드립니다.
그리고, 아래 41675 번글에 대한 답변 내용이 잘 이해가 안되서 재문의드렸는데, 확인 좀 부탁드립니다.
이전글