Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

KRX asp 서비스를 이용한 주가정보 가져오기

2021-01-12 by 편리

KRX에서 제공하는 상장기업지원서비스를 이용해 주가 정보를 가져오고자 한다. 이용 전 https://kasp.krx.co.kr/index.jsp 에서 회원가입 후 ASP 서비스 신청을 미리 해둬야 한다.

  • 가이드 : https://kasp.krx.co.kr/contents/02/02010000/ASP02010000.jsp

관련 PHP 코드는 아래와 같다.

<?php
function setCacheFile($fileName, $valName, $target)
{
    $dir = dirname($fileName);

    if (!is_dir($dir) || !is_writable($dir))
        return false;

    // Serializing Targeted Data
    $target = base64_encode(serialize($target));

    // Writing to Cache File
    $fp = fopen($fileName, 'w+');
    fwrite($fp, '<?php ');
    fwrite($fp, '$' . $valName . ' = unserialize(base64_decode("' . $target . '"));');

    fclose($fp);

    return true;
}

function getKRXStockInfo()
{
    $url = 'http://asp1.krx.co.kr/servlet/krx.asp.XMLSise?code=' . STOCK_CODE;

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $return = curl_exec($ch);

    if (curl_errno($ch))
        return 'Curl error: '.curl_errno($ch);

    curl_close($ch);

    $return = trim($return);

    $data = simplexml_load_string($return);

    if (!$data)
        return 'XML error';

    $info = array();

    /*
    JongName: 종목명
    CurJuka: 현재가
    Debi: 전일대비
    DungRak: 부호처리
        1 - 상한, 2 - 상승, 3 - 보합,
        4 - 하한, 5 - 하락
    PrevJuka: 전일종가
    Volume: 거래량
    Money: 거래대금
    StartJuka: 시가
    HighJuka: 고가
    LowJuka: 저가
    High52: 52주 최고
    Low52: 52주 최저
    UpJuka: 상한가
    DownJuka: 하한가
    Per: PER
    Amount: 상장주식수
    FaceJuka: 액면가
    */

    foreach ($data->TBL_StockInfo[0] ->attributes() as $k => $v) {
       $info[$k] = current($v);
    }

    $cJuka = preg_replace('#[^\d\.]#', '', $info['CurJuka']);
    $debi  = preg_replace('#[^\d\.]#', '', $info['Debi']);

    // 기준가 = 당일종가(현재가) - 전일대비
    switch ($info['DungRak']) {
        case '1':
        case '2':
        case '3':
            $sPrice = $cJuka - $debi;
            break;
        case '4':
        case '5':
            $sPrice = $cJuka + $debi;
            break;
        default:
            break;
    }

    // 등락률 = (당일종가 - 기준가) / 기준가 * 100
    $info['dRate'] = sprintf("%.2f", (($cJuka - $sPrice) / $sPrice) * 100);

    return $info;
}

function getStockInfo()
{
    // cache 처리
    $result = false;
    $cache = '/cache/stockInfo.php';

    if (is_file($cache)) {
        $mtime = filemtime($cache);

        // 캐시 10분 유지
        if ($mtime < (time() - 600)) {
            unlink($cache);

            $info = getKRXStockInfo();

            $result = setCacheFile($cache, 'info', $info);
        } else {
            $result = true;
        }
    } else {
        $info = getKRXStockInfo();

        $result = setCacheFile($cache, 'info', $info);
    }

    if ($result)
        require_once($cache);
    else
        $info = getKRXStockInfo();

    return $info;
}

KRX 상장기업지원서비스 사이트의 공지에 자사주시세정보를 2021년 6월 30일까지만 제공한다고 한다. 이 후에는 위 코드를 사용할 수 없을 것으로 예상된다.

Post navigation

Previous Post:

OPENDART api를 이용한 공시정보 가져오기

Next Post:

Ubuntu20.04 에서 PHP8 업그레이드

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes