주식 호가 단위에 맞춘 가격 조정 > PHP
PHP

주식 호가 단위에 맞춘 가격 조정

조회 54회 댓글 0건

이건 각각의 가격대에 따라서 자릿수의 금액이 다른 부분이 있어 맞추기 위해서 만들어진 것입니다.

이 부분은 영원히 고정된것이 아니기 때문에 변경이 될 수 있습니다.


예를 들면 10만원 단위에선 10만10원 이란 가격은 없다는 것입니다.



  <?php

  class PriceAdjuster {
      private $tickLevels = [
          [2000, 1],
          [5000, 5],
          [20000, 10],
          [50000, 50],
          [200000, 100],
          [500000, 500],
          [INF, 1000]  // 50만 원 이상은 1,000원 단위
      ];

      public function adjustPriceToTick($price) {
          foreach ($this->tickLevels as [$threshold, $tick]) {
              if ($price < $threshold) {
                  break;
              }
          }

          // 올림 처리
          $adjustedPrice = ceil($price / $tick) * $tick;

          // 한 호가 위 가격 반환
          $nextPrice = $adjustedPrice + $tick;

          // 라운드 피겨인지 확인 (예: 5000, 10000, 50000 등)
          if ($adjustedPrice % ($tick * 10) == 0) {
              return $nextPrice; // 라운드 피겨면 그 다음 호가로 이동
          } else {
              return $adjustedPrice; // 기본적으로 한 호가 위
          }
      }
  }

  // 테스트 코드
  $adjuster = new PriceAdjuster();
  $testPrices = [1500, 3010, 7210, 15070, 30250, 102020, 607200];

  foreach ($testPrices as $price) {
      echo "원래 가격: {$price}, 조정된 가격: " . $adjuster->adjustPriceToTick($price) . "\n";
  }
 


주식 호가 단위에 맞춘 가격 조정
 

아래는 주식 호가 단위에 맞춘 가격 조정표 입니다. 

주식 호가 단위에 맞춘 가격 조정
간단하게 한번 테스트 한것이라서 위 표를 보고 다른 부분이 있으면 그에 맞게 수정해 사용하면 됩니다.

이렇게 거래 하는지 이제 알았네요. 

그전에는 그냥 클릭해서 금액 나오는것 사용했는데 말이죠.



  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 216건 1 페이지
  • profile_image 쉽게 한번만 사용할거냐 여러번 사용할거냐에 대한 차이라고 생각해도 됩니다.특별한 경우가 아니라면 다목적으로 사용이 가능한 bindParam 를 많이 사용 합니다. 구분해서 사용하려면 또 신경을 써야 하기 때문에 그렇죠▶ bindParam() (참조 바인딩)  - 변수 자체를 바인딩 (이후 변수 값이 바뀌면 SQL 실행 시 그 값이 적용됨)  - 변수를 직접 전달해야 하고 즉시 값 대입이 불가능  - 반복문에서 같은 변수를 여러 번 사용할 경우 적합. 그리고 파라미터는 상수가 아니라 변수를 넣어줘야 합니다.△ 비유: 패스트푸드점에서 "세트 메뉴 1번"을 주문하고, 음료는 나중에 결정할 수 있는 방식    $menu = "…
  • profile_image 아래는 쿼리 문장에 문자열을 넣어주는 일반적인 방식으로 SQL 공격에 무척 취약한 방식의 예 입니다.보통 아래와 같은 문제가 발생하고 실무에선 쿼리를 보면 먼저 정보를 얻는것에서 시작을 합니다.    # SQL 인젝션이 성공하는 경우 (취약한 코드)    # 결과: SELECT * FROM users WHERE username = ''; DROP TABLE users; -- AND id = 123    $test11 = "'; DROP TABLE users; --";    $test22 = 123;    $sql = "SELECT * FROM users WHERE username = '$test11' AND id = $…
  • profile_image 문자열:s 숫자:i 이렇게 사용하는 방식은 파라미터가 많으면 복잡해서 알아보기 힘들죠그래서 만들어진 사용자 함수 입니다.    # MySQLi에서 Named Parameter처럼 사용할 수 있도록 변환하는 사용자 함수    function prepareNamedQuery($mysqliCon, string $sql, $params) {        preg_match_all('/:\w+/', $sql, $matches);        $namedParams = $matches[0];         $sql = str_replace($namedParams, '?', $sql);        $values = [];     …
  • profile_image 아래는 도메인 목록을 배열로 가지고 있다고 가정하고 만들어진 프로그램 입니다.kr의 경우 요즘은 utf8로 나오기 때문에 euckr 환경이신분은들은 캐릭터셋을 변경하는 기능이 한줄 더 들어가야 합니다.그리고 후이즈 조회는 너무 많이 하면 차단 됩니다.여기서 너무 많다는 기준은 없지만 최소 몇 백은 되기 때문에 도메인 만료일 체크하기 위해서 실행하는것에는 문제는 없습니다.    # 루트 도메인만 추출    $root_domains = [];    foreach ($domains as $domain) {        if ($domain === '_default_') continue; // 제외        if (preg…
  • profile_image 앞으로 캐릭터셋은 utf-8이 아니라 utf-8 bom을 사용해야 합니다. utf-8 캐릭터셋은 한글이 깨져서 보이는데 이때문에 예전에 ANSI로 저장(euc-kr) 처리를 많이 하곤 했습니다. 하지만 현재는 utf-8과 호환되는 utf-8 bom 사용하는 것이 좋겠지요.그래야 더 풍부한 캐릭터셋 특수문자(이모티콘)를 사용할 수 있기 때문에 그렇습니다. euc-kr은 이모티콘을 사용하지 못해요~● 엑셀(Excel)에서 CSV 파일 한글 깨지지 않게 하려면  - 엑셀에서 바로 CSV 열기: EUC-KR 또는 UTF-8 BOM● 캐릭터셋 참고사항  - 글로벌 호환성 생각: UTF-8 BOM  - 서버 시스템 처리 위주: U…
  • profile_image csv파일 읽어서 처리할 때 날짜를 기준으로 하는데 같은 날짜가 아니라 다른 날짜로 처리 해야 되는 경우 만들어진 프로그램 입니다.csv파일의 캐릭터셋에 대해선 별도 정리가 필요한 상태이고 윈도우10 사용한지 오래 되었는데 이 문제가 업그레이드 되면서 변경 되었는지 어땟는지는 현재로선 중요하지 않고 잘 나오면 그만인거죠cmd도 예전엔 cp949로해서 처리 했는데 지금은 둘다 잘 보이는 구조로 되어 있는듯 합니다.그리고 엑셀은 euckr, utf-8 bom 두개가 문제 없으며 utf-8은 안됩니다.<?php// 공휴일 배열$holidays = [    "2025-01-01", // 신정    "2025-02-11",…
  • profile_image utf-8 bom 표시 부분이 앞 3바이트에 있는것을 삭제해서 utf-8 으로 처리하기 위해서 필요한 함수 입니다.이런것이 필요한 이유는 mb_convert_encoding 함수로 euc-kr로 변환을 하면 안되는것은 아니지만 ? 같은것이 발생합니다.그렇기 때문에 아래 함수처럼 삭제하고 처리하면 문제 없이 잘 됩니다.    function remove_utf8_bom($text) {        if (substr($text, 0, 3) === "\xEF\xBB\xBF") {            return substr($text, 3);        }        return $text;    } $ewy_ut…