Dell於10月1日發布命令列部署工具DSU(Dell System Update)更新,修補5個漏洞,涵蓋路徑穿越、權限配置及存取控制等問題。DSU是Dell用於搭配PowerEdge伺服器的部署工具,可供管理員在伺服器的Linux與Windows系統上部署BIOS、韌體及軟體更新,用戶應儘速升級至已完成修補的2.3.0.0以上版本。
Thị trường chứng khoán không đơn thuần là một cỗ máy giao dịch các con số, biểu đồ kỹ thuật hay các báo cáo tài chính khô khan. Sâu thẳm bên dưới những biến động giá xanh đỏ từng giây chính là sự giằng co tột độ của tâm lý con người: lòng tham, sự sợ hãi, niềm hy vọng mù quáng và cả nỗi tiếc nuối tột cùng. Đã bao nhiêu lần bạn tự nhủ sẽ cắt lỗ khi cổ phiếu giảm 7%, nhưng rồi lại chần chừ hy vọng nó sẽ hồi phục? Đã bao nhiêu lần bạn hưng phấn lao vào mua đuổi một cổ phiếu vừa tăng trần để rồi phải ôm đỉnh trong cay đắng? Những câu hỏi đó phản ánh một thực tế không thể chối cãi rằng cảm xúc cá nhân đang chi phối phần lớn quyết định của nhà đầu tư, đặc biệt là những người mới bước chân vào thị trường. Để có thể tồn tại và kiếm được lợi nhuận bền vững trên thị trường tài chính khắc nghiệt này, việc thấu hiểu tâm lý học hành vi không chỉ là một lợi thế mà còn là chiếc khiên bảo vệ tài sản của chính bạn. Khi tham gia giao dịch, việc lựa chọn một nền tảng công nghệ hỗ trợ đứt đoạn cảm xúc bằng các công cụ đặt lệnh thông minh là vô cùng cần thiết, chẳng hạn như khi bạn tìm hiểu qua hướng dẫn mở tài khoản chứng khoán VPS để tận dụng hệ thống giao dịch tự động hoàn toàn bằng số hóa. Sự bùng nổ của công nghệ tài chính hiện đại ngày nay cho phép nhà đầu tư dễ dàng tiếp cận các sản phẩm dịch vụ tài chính đa dạng từ nhiều định chế uy tín khác nhau. Chẳng hạn, nếu bạn đang phân vân không biết nên bắt đầu hành trình đầu tư của mình ở đâu cho phù hợp với khẩu vị rủi ro và phong cách giao dịch cá nhân, việc tham khảo các phân tích chi tiết tại nên mở tài khoản chứng khoán ở đâu sẽ giúp bạn có thêm góc nhìn khách quan, đa chiều trước khi đưa ra quyết định rót vốn. Bên cạnh đó, việc trải nghiệm các hệ sinh thái giao dịch khác nhau trên thị trường cũng là một phương pháp hay để kiểm chứng tâm lý và tìm ra môi trường giao dịch tối ưu nhất cho bản thân, ví dụ như việc khám phá thêm dịch vụ tại Hướng dẫn mở tài khoản chứng khoán VPS để so sánh trực quan về biểu phí, tốc độ khớp lệnh cũng như các tiện ích hỗ trợ phân tích kỹ thuật chuyên sâu. Quay trở lại với bài toán tâm lý hành vi, tại sao bộ não con người lại thường xuyên phản ứng sai lệch trước những biến động của thị trường chứng khoán? Theo các nhà kinh tế học hành vi, tiến hóa sinh học đã trang bị cho bộ não chúng ta cơ chế "chiến hay chạy" để sinh tồn trước các mối nguy hiểm ngoài tự nhiên, nhưng cơ chế này lại hoàn toàn phản tác dụng khi áp dụng vào thế giới tài chính hiện đại. Khi thị trường sụt giảm mạnh, bản năng sinh tồn trỗi dậy khiến nhà đầu tư cảm thấy hoảng loạn tột độ, kích hoạt hành động bán tháo bằng mọi giá để bảo vệ phần vốn còn lại, ngay đúng thời điểm đáy của chu kỳ thị trường. Ngược lại, khi thị trường hưng phấn tột độ với những con sóng tăng điên cuồng, hiệu ứng tâm lý bầy đàn khiến con người ta sợ bị bỏ lỡ cơ hội, từ đó bất chấp rủi ro lao vào mua đuổi ở vùng giá đỉnh lịch sử. Chính những bẫy tâm lý này đã biến hàng triệu nhà đầu tư thành những nạn nhân của chính sự tham lam và sợ hãi của bản thân. Một trong những biểu hiện phổ biến nhất của tâm lý học hành vi trên thị trường chứng khoán chính là hiện tượng thiên kiến xác nhận, nơi nhà đầu tư chỉ tìm kiếm và tin tưởng những thông tin củng cố cho quan điểm sẵn có của mình, đồng thời phớt lờ hoàn toàn các dấu hiệu cảnh báo rủi ro rõ ràng từ thị trường. Ví dụ, khi bạn đã mua một mã cổ phiếu với kỳ vọng giá sẽ tăng gấp đôi, bạn sẽ tự động chú ý đến các bài viết phân tích tích cực trên các diễn đàn, các hội nhóm hô hào tăng giá, nhưng lại gạt bỏ các báo cáo tài chính kém sắc hoặc xu hướng kỹ thuật suy yếu của chính mã cổ phiếu đó. Thiên kiến này khiến tư duy trở nên cứng nhắc, mất đi sự khách quan cần thiết và dẫn đến hậu quả nặng nề khi doanh nghiệp thực sự gặp vấn đề cốt lõi trong hoạt động kinh doanh. Bên cạnh thiên kiến xác nhận, hiện tượng bám víu vào giá vốn cũng là một cạm bẫy tâm lý cực kỳ nguy hiểm. Nhà đầu tư thường có xu hướng neo giữ quyết định của mình vào mức giá mà họ đã mua cổ phiếu, thay vì đánh giá tiềm năng tương lai của doanh nghiệp ở thời điểm hiện tại. Nếu một cổ phiếu giảm giá sâu dưới giá vốn, họ chọn cách ôm lỗ dài hạn với tâm lý "chưa bán là chưa lỗ", trong khi nguồn vốn đó đáng lẽ ra nên được giải phóng để đầu tư vào những cơ hội sinh lời tốt hơn. Ngược lại, khi cổ phiếu vừa chớm có lãi một chút, họ lại vội vàng bán tháo để chốt lời non vì sợ lợi nhuận ảo sẽ biến mất, qua đó bỏ lỡ những con sóng tăng trưởng dài hạn bằng lần của những cổ phiếu siêu chu kỳ. Để khắc phục những điểm yếu chí mạng này của tâm lý con người, giải pháp duy nhất là xây dựng cho mình một hệ thống quy tắc giao dịch kỷ luật sắt đá và tuân thủ nó một cách máy móc như một cỗ máy. Hệ thống này bao gồm việc xác định rõ ràng tỷ lệ cắt lỗ và chốt lời trước khi xuống tiền mua bất kỳ mã cổ phiếu nào, quản trị tỷ trọng danh mục hợp lý để không bao giờ bị áp lực tâm lý đè nặng lên các quyết định hàng ngày, cũng như liên tục nâng cao kiến thức tài chính để nhìn nhận thị trường dưới góc độ xác suất thống kê thay vì cảm xúc thắng thua cay cú. Khi bạn đã làm chủ được tâm lý của chính mình, thị trường chứng khoán sẽ không còn là một sòng bạc đỏ đen đầy rủi ro và căng thẳng, mà sẽ thực sự trở thành một kênh đầu tư tài chính thông minh, giúp dòng tiền của bạn sinh sôi nảy nở theo thời gian một cách bền vững, an toàn và chuyên nghiệp nhất.
Drive 인덱스를 새로 만들 때 기존 데이터를 지우고 새 파일 목록을 다시 넣는다. 이 작업이 중간에 실패하면 기존 데이터 삭제됨 새 데이터 일부만 저장됨 같은 상태가 될 수 있다. 그래서 인덱스 교체 부분을 트랜잭션으로 묶었다. transaction.executeWithoutResult(status -> { jdbc.update("DELETE FROM drive_file_index ..."); for (var file : files) { jdbc.update("INSERT INTO drive_file_index ..."); } jdbc.update("UPDATE drive_index_root_state ..."); }); TransactionTemplate 은 코드 안에서 직접 트랜잭션 범위를 정할 때 쓴다. 이번 구조에서는 중요한 게 하나 있었다. FMS API를 호출해서 파일 목록을 가져오는 작업까지 트랜잭션으로 묶지는 않았다. FMS 원격 조회 → 트랜잭션 밖 H2 기존 인덱스 삭제 + 새 인덱스 저장 + 상태 변경 → 트랜잭션 안 원격 요청은 오래 걸리거나 실패할 수도 있어서 DB 트랜잭션을 잡은 채 기다리지 않게 했다. 그리고 새 인덱스 저장 중 하나라도 실패하면 전체가 롤백된다. 즉 이번에 쓴 이유는 여러 DB 변경을 전부 성공하거나 전부 취소해야 할 때 → TransactionTemplate @Transactional 처럼 선언적으로 쓰는 방법도 있지만 트랜잭션이 필요한 구간을 코드에서 명확하게 좁히고 싶을 때 TransactionTemplate 을 쓸 수 있다.
책 목록을 한 화면에 두 권씩 보여 준다고 하겠습니다. 다음 버튼을 눌렀을 때는 이어지는 두 권이 필요합니다. Pagination은 긴 목록을 여러 화면으로 나누어 읽는 방법입니다. 이번에는 앞에서 몇 행을 건너뛰는 방법과, 마지막으로 읽은 값을 기억하는 방법을 작은 표에서 확인하겠습니다. DB(Database)는 자료를 저장하고 찾는 시스템입니다. 표의 한 줄은 행, 가격이나 번호처럼 같은 종류의 값을 담는 항목은 열이라고 부릅니다. SQL은 DB에 작업을 요청하는 언어입니다. 아래 예제의 이름과 가격은 설명을 위해 만든 자료입니다. 먼저 결과 순서를 정하기 책 번호 가격(원) 1 100 2 200 3 200 4 300 5 400 6 500 가격이 같은 책 2와 3도 차례를 정해야 합니다. 여기서는 가격이 작은 순서로 읽고, 같은 가격 안에서는 책 번호가 작은 순서로 읽겠습니다. 서로 다른 행을 구분하는 번호까지 정렬 기준에 넣으면 이 예제의 차례가 하나로 정해집니다. ORDER BY 는 결과 순서를 지정합니다. LIMIT 는 반환할 행 수를 제한하고, OFFSET 은 결과 앞에서 건너뛸 행 수를 정합니다. 두 번째 화면을 읽으려면 두 행을 건너뛰고 두 행을 받습니다. 결과 순서를 정해 사용하는 이유는 PostgreSQL 18 LIMIT과 OFFSET 설명 에서도 확인할 수 있습니다. PostgreSQL은 DB 관리 프로그램입니다. 마지막 값으로 다음 화면 찾기 Keyset Pagination은 마지막으로 읽은 정렬 기준값을 기억하고, 그 뒤의 행을 찾는 방법입니다. 첫 화면에서 책 1과 2를 읽었다면 마지막 기준은 (가격 200, 번호 2) 입니다. 여기서부터 이어지는 두 행을 요청합니다. (price, id) > (200, 2) 라는 조건은 두 값을 왼쪽부터 비교합니다. 가격이 200을 넘는 행이 이어집니다. 가격이 200으로 같으면 번호가 2를 넘는 행이 이어집니다. 따라서 가격 200인 책 3도 다음 화면에 들어갑니다. SQLite 여러 값 비교와 목록 조회 그림의 세로 구분선은 첫 화면의 마지막 책을 표시합니다. 가격과 번호를 함께 기억하므로 같은 가격의 책도 이어서 읽을 수 있습니다. 그림은 결과의 차례를 보여 줍니다. 실제 저장 공간과 읽은 횟수는 별도 확인이 필요합니다. 같은 표에서 두 요청 실행하기 SQLite도 DB 관리 프로그램입니다. 이 실험에서는 실행 중 자료를 담는 Memory 공간에 새 SQLite DB를 만들었습니다. 다음 SQL을 같은 예제 DB에서 순서대로 실행합니다. CREATE TABLE book ( id INTEGER PRIMARY KEY, price INTEGER NOT NULL ); INSERT INTO book VALUES (1, 100), (2, 200), (3, 200), (4, 300), (5, 400), (6, 500); CREATE INDEX book_price_id_idx ON book(price, id); SELECT id, price FROM book ORDER BY price, id LIMIT 2; SELECT id, price FROM book ORDER BY price, id LIMIT 2 OFFSET 2; SELECT id, price FROM book WHERE (price, id) > (200, 2) ORDER BY price, id LIMIT 2; CREATE TABLE 은 표를 만들고, INSERT 는 행을 넣습니다. INTEGER 는 정수를 담는 열을 선언합니다. PRIMARY KEY 는 각 행을 구분하는 기본 열입니다. NOT NULL 은 값이 없음을 나타내는 NULL 의 입력을 제한합니다. CREATE INDEX 는 원하는 행을 찾는 보조 자료구조인 Index를 만듭니다. 여기서는 가격과 번호의 순서로 여러 열을 묶었습니다. SELECT 는 읽을 열을, FROM 은 읽을 표를 정합니다. WHERE 는 남길 행의 조건입니다. 첫 조회는 (1, 100) , (2, 200) 을 반환합니다. 뒤의 두 조회는 모두 (3, 200) , (4, 300) 을 반환합니다. 자료가 그대로인 이 시점에는 두 방법으로 같은 다음 화면을 얻습니다. 화면 사이에 책이 추가되면 첫 화면을 읽은 뒤, 가격 50원인 책 7이 추가됐다고 하겠습니다. 새 책은 가격순 목록의 맨 앞에 들어갑니다. 두 행을 건너뛰는 기준은 새 목록에 적용됩니다. INSERT INTO book VALUES (7, 50); SELECT id, price FROM book ORDER BY price, id LIMIT 2 OFFSET 2; SELECT id, price FROM book WHERE (price, id) > (200, 2) ORDER BY price, id LIMIT 2; 새 목록의 첫 세 행은 책 7, 1, 2입니다. OFFSET으로 두 행을 건너뛰면 책 2부터 시작합니다. 실제 결과는 (2, 200) , (3, 200) 입니다. 첫 화면에서 읽었던 책 2가 다시 나타납니다. 마지막 값 (200, 2) 를 조건으로 쓴 조회는 (3, 200) , (4, 300) 을 반환합니다. 앞에 추가된 책 7은 마지막 값의 앞쪽에 놓이므로 이 다음 화면에는 들어오지 않습니다. 이 예제는 행 추가 한 번을 다룹니다. 읽는 동안 기존 책의 가격이 바뀌거나 행이 삭제되면 필요한 화면 규칙을 다시 정해야 합니다. 모든 화면에서 같은 시점의 자료가 필요하다면 DB가 자료의 읽는 시점을 유지하는 방법까지 검토합니다. 마지막 값 하나를 기억하는 방법의 범위와, 전체 조회 시점을 유지하는 요구를 구분할 수 있습니다. 다음 화면의 기준 기록하기 Keyset 방식에서는 반환된 마지막 행의 가격과 번호를 함께 기록합니다. 정렬 기준에 쓴 값을 이어지는 요청의 조건에 그대로 사용합니다. 가격이 같은 자료가 있을 때 번호를 빼면 아직 읽지 않은 같은 가격의 행이 빠질 수 있습니다. 실제 요청에서는 정렬 방향, 빈 값의 처리, 사용자에게 보여 줄 범위도 함께 정합니다. 위 예제의 가격과 번호는 모두 값이 있고 작은 순서로 정렬합니다. 다른 조건을 넣을 때는 그 조건에 맞춘 반환 값을 다시 확인해야 합니다. 이번 실험은 결과 행을 확인했으며, 조회 시간은 측정하지 않았습니다. 확인 문제 첫 화면의 마지막 책이 (200, 2) 일 때 가격 200인 책 3은 다음 화면에 들어갈까요? 책 7이 앞에 추가된 뒤 OFFSET 2 조회가 다시 보여 준 책은 무엇일까요? 한 화면을 세 권씩 읽으려면 어떤 값과 기록을 바꿔야 할까요? 답과 해설 들어갑니다. 가격이 같고 번호 3이 마지막 번호 2의 뒤에 놓입니다. 책 2입니다. 새 목록에서 책 7과 1을 건너뛰면 책 2부터 읽습니다. LIMIT를 3으로 바꾸고, 그 결과의 마지막 행에 있는 가격과 번호를 함께 기록합니다. OFFSET 방식은 화면에 맞는 건너뛸 행 수도 정합니다. 오늘은 책 번호 여섯 개를 가격순으로 놓고 첫 화면의 마지막 값을 표시해보겠습니다. 하루 뒤에는 같은 가격의 책을 한 권 더 넣어 다음 화면을 예상해보겠습니다. 일주일 뒤에는 정렬 기준과 Index의 열 순서를 연결해 설명해보면 좋겠습니다. 자료 확인: 2026-10-07, SQLite 공식 문서와 PostgreSQL 18 공식 문서. 예제 검증 환경: Python 3.12.14, SQLite 3.53.1, 독립 :memory: DB. PostgreSQL에서는 문서의 정렬 규칙을 확인했습니다. 위 SQL의 실행 결과는 SQLite 실험의 범위입니다.
오늘이 시험 당일이라니... 과연 이 사람은 붙을 것일까 떨어질 것일까 궁금하시죠 저도 궁금해요 submiter 가 withdraw 거둬들이다 취소하다 user 가 레코드를 submit for approval approver or submitter submitter 가 잠 나지금 거둬들일게 = withdraw 이거는 대부분 ui 에서 recall 버튼 임 누르면 recall actions 발동 ex . 누군가 approval process 요청 제출 - 생각해보니 번호 잘못 적음 아직 매니저가 승인/거부 안한 상태에서 본인이 거둬드림(withdraw) - recall vr에서 error condition formula 가 true 이면 무조건 누구나 블락 된 어드민도 못피함
Thị trường chứng khoán từ lâu đã được ví như một tấm gương phản chiếu thu nhỏ của nền kinh tế vĩ đại, nơi hàng triệu dòng vốn gặp gỡ, đan xen và tranh đấu từng giây từng phút. Đối với những nhà đầu tư mới bước chân vào lĩnh vực tài chính, bảng điện tử chứng khoán (Bảng giá trực tuyến) thường hiện lên như một ma trận phức tạp với chi chít các con số xanh, đỏ, vàng cùng những ký hiệu viết tắt khó hiểu. Việc không biết cách đọc bảng điện tử chẳng khác nào một người mù đi giữa đêm tối, hoàn toàn bị động trước những biến động chớp nhoáng của thị trường và dễ dàng rơi vào trạng thái hoảng loạn hoặc kỳ vọng thái quá. Tuy nhiên, đằng sau sự nhảy múa liên tục của những con số ấy lại là một bức tranh sống động về cung cầu, về cuộc chiến căng thẳng giữa phe mua và phe bán, đồng thời hé lộ những dấu vết rõ nét của dòng tiền thông minh. Việc nắm vững kỹ năng đọc và phân tích bảng điện tử không chỉ là một công cụ kỹ thuật đơn thuần mà còn là nghệ thuật thấu hiểu tâm lý hành vi của đám đông trên thị trường tài chính. Khi bạn đã thuần thục việc giải mã từng bước nhảy của giá, từng khối lượng khớp lệnh bùng nổ hay sự dịch chuyển của các lô mua bán chủ động, bạn sẽ thấy thị trường không hề ngẫu nhiên hay hỗn loạn mà vận hành theo những quy luật tâm lý và cung cầu hết sức chặt chẽ. Bài viết này sẽ dẫn dắt bạn đi qua từng lớp lang của bảng điện tử chứng khoán, từ những khái niệm căn bản nhất cho đến các kỹ năng đọc vị dòng tiền chuyên sâu, giúp bạn tự tin xây dựng góc nhìn độc lập và sắc bén trong mọi quyết định đầu tư của mình mà không cần phải phụ thuộc vào những lời phím hàng hay tin đồn vô căn cứ trên các diễn đàn. Để có thể làm chủ bảng điện tử, bước đầu tiên và quan trọng nhất là bạn cần trang bị cho mình một tài khoản giao dịch tại các công ty chứng khoán uy tín, nơi cung cấp bảng giá trực tuyến mượt mà, tốc độ cập nhật dữ liệu thời gian thực chính xác cùng nhiều tính năng hỗ trợ phân tích kỹ thuật và đặt lệnh chuyên nghiệp. Bạn có thể tham khảo hướng dẫn chi tiết về quy trình và thủ tục để nhanh chóng sở hữu tài khoản giao dịch thông qua bài viết tổng hợp tại Hướng dẫn lập tài khoản chứng khoán với các bước thực hiện đơn giản, bảo mật tuyệt đối và hoàn toàn miễn phí trực tuyến. Bên cạnh đó, nếu bạn đặc biệt quan tâm đến hệ sinh thái giao dịch phái sinh, các chính sách ưu đãi phí giao dịch hấp dẫn cùng dịch vụ hỗ trợ khách hàng tận tâm hàng đầu thị trường, việc lựa chọn mở tài khoản tại các định chế tài chính lớn là một hướng đi vô cùng khôn ngoan; bạn có thể tìm hiểu thêm về cách thức gia nhập hệ thống này qua thông tin tại Hướng dẫn lập tài khoản VPS để không bỏ lỡ bất kỳ cơ hội lướt sóng ngắn hạn nào. Ngoài ra, đối với những nhà đầu tư theo trường lối đầu tư giá trị, ưa chuộng các giải pháp tự động hóa tài sản thông minh, tích hợp quản lý dòng tiền linh hoạt và các sản phẩm trái phiếu, chứng chỉ quỹ ưu việt, việc mở tài khoản tại ngân hàng đầu tư hàng đầu là lựa chọn tối ưu; hãy tham khảo ngay quy trình thiết lập tài khoản chuyên sâu tại Hướng dẫn chi tiết mở tài khoản TCBS để bắt đầu hành trình kiến tạo sự thịnh vượng tài chính một cách bài bản nhất từ hôm nay. Khi đã có trong tay công cụ giao dịch đắc lực, việc tiếp theo là chúng ta cần hiểu rõ cấu trúc cơ bản của một bảng điện tử tiêu chuẩn trên thị trường chứng khoán Việt Nam. Thông thường, bảng giá được chia thành các nhóm chính bao gồm nhóm cổ phiếu VN30 (những doanh nghiệp có vốn hóa và thanh khoản lớn nhất thị trường), nhóm cổ phiếu vừa và nhỏ, nhóm chứng khoán phái sinh, chứng quyền có bảo đảm và trái phiếu doanh nghiệp niêm yết. Mỗi mã chứng khoán sẽ được định danh bằng một mã viết tắt gồm ba chữ cái theo quy định của trung tâm lưu ký chứng khoán. Đi kèm với mã chứng khoán là một loạt các cột thông tin kinh điển như Giá tham chiếu, Giá trần, Giá sàn, bên cạnh đó là các mức giá mua tốt nhất, khối lượng mua tương ứng, mức giá bán tốt nhất cùng khối lượng bán tương ứng. Màu sắc trên bảng điện tử đóng vai trò như một hệ thống tín hiệu giao thông trực quan giúp nhà đầu tư nắm bắt xu hướng ngay lập tức mà không cần phải đọc từng con số chi tiết. Màu vàng biểu thị cho mức giá tham chiếu, tức là mức giá đóng cửa của phiên giao dịch ngày hôm trước, đóng vai trò là mốc chiếu để tính biên độ dao động trong phiên. Màu xanh lá cây thể hiện sự tăng giá so với giá tham chiếu, mang lại niềm vui cho các cổ đông nắm giữ mã cổ phiếu đó. Màu đỏ biểu thị sự sụt giảm giá so với tham chiếu, phản ánh áp lực bán đang áp đảo hoặc dòng tiền rút lui khỏi mã cổ phiếu đó. Đặc biệt, trên thị trường chứng khoán Việt Nam, chúng ta có thêm hai màu sắc vô cùng đặc biệt là màu tím và màu xanh lơ (hoặc màu xanh da trời tùy theo giao diện của từng công ty chứng khoán). Màu tím tượng trưng cho mức giá trần, là mức giá cao nhất mà cổ phiếu được phép giao dịch trong một phiên giao dịch, thể hiện sức mua cực kỳ khủng khiếp, vượt trội hoàn toàn so với lượng hàng bán ra và thường xuất hiện khi có những tin tức cực kỳ vĩ mô hoặc dòng tiền lớn đổ bộ vào một nhóm ngành nào đó. Ngược lại, màu xanh lơ tượng trưng cho mức giá sàn, là mức giá thấp nhất trong phiên, phản ánh lực bán tháo hoảng loạn, khi mà nhà đầu tư tìm mọi cách thoát hàng bằng được dù phải chịu mức giá chiết khấu sâu nhất trong ngày. Việc hiểu rõ ý nghĩa của biên độ dao động +/-7% trên sàn HOSE, +/-10% trên sàn HNX và +/-15% trên sàn UPCoM sẽ giúp bạn định hình được mức độ rủi ro cũng như biên độ lợi nhuận tiềm năng trong mỗi quyết định giao dịch của mình. Biên độ này không chỉ là những con số kỹ thuật khô khan mà nó còn là lồng sắt bảo vệ nhà đầu tư khỏi những cú sốc tâm lý quá lớn trong một phiên giao dịch, đồng thời là thước đo để kiểm tra sức mạnh nội tại của từng cổ phiếu khi đối diện với các biến động của thị trường chung. Đi sâu hơn vào cấu trúc của bảng điện tử, phần cốt lõi thu hút sự chú ý của mọi nhà đầu tư chuyên nghiệp chính là khu vực khớp lệnh, bao gồm mức giá khớp lệnh hiện tại, khối lượng khớp lệnh trong phiên và tổng khối lượng giao dịch tích lũy từ đầu ngày. Giá khớp lệnh là kết quả của cuộc gặp gỡ định mệnh giữa người muốn mua với mức giá cao nhất có thể chấp nhận và người muốn bán với mức giá thấp nhất có thể chấp nhận. Khi một lệnh mua khớp với một lệnh bán, giao dịch chính thức được thiết lập và ghi nhận vào lịch sử giao dịch của thị trường. Việc theo dõi sự biến động của giá khớp lệnh cùng với khối lượng khớp đi kèm trong từng phút sẽ cho chúng ta thấy được nhịp đập của thị trường. Nếu một cổ phiếu tăng giá đi kèm với khối lượng khớp lệnh tăng đột biến vượt xa mức trung bình 20 phiên gần nhất, đó là minh chứng không thể chối cãi cho thấy dòng tiền lớn (smart money) đang ào ạt đổ vào gom hàng. Ngược lại, nếu giá cổ phiếu tăng nhưng khối lượng khớp lệnh lại teo tóp, lèo tèo, đó thường là cái bẫy tăng giá (bull trap) do một nhóm nhỏ nhà đầu tư tạo lập hoặc đầu cơ kéo giá lên trong biên độ hẹp nhằm xả hàng tồn kho ra cho những nhà đầu tư thiếu kinh nghiệm bám đuổi. Khối lượng tích lũy trong phiên cũng là một chỉ số sống còn để đánh giá thanh khoản của doanh nghiệp. Những cổ phiếu có thanh khoản cao luôn là ưu tiên hàng đầu của các nhà đầu tư lớn, các quỹ đầu tư tổ chức bởi vì họ có thể dễ dàng giải ngân hàng triệu đô la mà không làm biến động quá mạnh đến giá vốn, đồng thời cũng có thể nhanh chóng thoát hàng khi thị trường chuyển biến xấu mà không sợ bị kẹt hàng do không có người mua. Ngược lại, những cổ phiếu có thanh khoản thấp, mỗi phiên chỉ khớp vài trăm hoặc vài nghìn cổ phiếu thường tiềm ẩn rủi ro thao túng giá rất cao bởi các nhóm lái cổ phiếu, nơi mà chỉ cần một lượng tiền nhỏ cũng có thể vẽ biểu đồ theo ý muốn, khiến nhà đầu tư cá nhân sập bẫy bất cứ lúc nào. Do đó, việc quan sát kỹ lưỡng cột khối lượng khớp lệnh kết hợp với dư mua và dư bán chính là chiếc kính lúp phóng đại mọi ý đồ của các nhà tạo lập thị trường, giúp bạn tránh xa những cổ phiếu "rác" và tập trung tài sản vào những doanh nghiệp có nền tảng cơ bản vững chắc cùng dòng tiền thực sự hậu thuẫn. Một khía cạnh cực kỳ quan trọng khác trên bảng điện tử mà ít người để ý đến chính là khu vực khớp lệnh thỏa thuận bên cạnh phương thức khớp lệnh định kỳ và liên tục. Phương thức khớp lệnh định kỳ (ATO và ATC) diễn ra vào đầu và cuối phiên giao dịch, nơi toàn bộ các lệnh mua và bán trong phiên được tập hợp lại để tìm ra một mức giá duy nhất có thể khớp được khối lượng giao dịch lớn nhất. Phiên ATO (Opening) mở cửa lúc 9h sáng trên sàn HOSE định hình tâm lý đầu ngày, phản ánh những thông tin vĩ mô hoặc quốc tế diễn ra trong đêm qua tác động trực tiếp lên kỳ vọng của nhà đầu tư. Trong khi đó, phiên ATC (Closing) diễn ra từ 14h45 đến 15h00 lại là chiến trường khốc liệt nhất của các quỹ đầu tư tổ chức, các quỹ ETF thực hiện việc tái cơ cấu danh mục hoặc chốt NAV định kỳ. Việc theo dõi diễn biến giá và khối lượng trong phiên ATC đòi hỏi một cái đầu lạnh và kinh nghiệm cực kỳ dày dặn, bởi vì đây là thời điểm mà các lệnh lớn được ẩn giấu và tung ra vào những giây cuối cùng nhằm tạo ra mức giá đóng cửa như ý muốn của các "tay to". Còn phương thức khớp lệnh thỏa thuận lại là nơi diễn ra các giao dịch có quy mô cực kỳ lớn giữa các cổ đông lớn, các quỹ đầu tư nước ngoài hoặc các lãnh đạo doanh nghiệp mà không làm ảnh hưởng trực tiếp đến biến động giá trên sàn khớp lệnh liên tục. Việc đọc hiểu bảng điện tử không dừng lại ở việc nhìn thấy con số xanh đỏ trước mắt, mà là khả năng kết nối chuỗi các sự kiện diễn ra trong suốt phiên giao dịch để phác thảo nên hành vi của các bên tham gia thị trường. Bạn cần phải tự đặt ra những câu hỏi phản biện liên tục khi nhìn vào bảng giá: Tại sao cổ phiếu này lại có dư mua giá sàn lớn đến vậy mà không ai bán? Tại sao có lệnh mua hàng triệu cổ phiếu kê ở giá tham chiếu ngay trước giờ ATC? Ai đang là người đứng sau những bước giá nhích lên đều đặn trong suốt phiên sáng nhưng lại bị bán úp ngược vào đầu phiên chiều? Chính sự tò mò mang tính phân tích này sẽ mài giũa tư duy của bạn, biến bạn từ một người chơi theo cảm tính trở thành một nhà đầu tư có tư duy chiến lược sắc sảo. Để nâng cao kỹ năng đọc bảng điện tử lên một tầm cao mới, chúng ta
문제 설명 각 산은 밑변이 x축에 놓인 삼각형입니다. 양쪽 빗변은 밑변과 각각 45도를 이루므로, 봉우리 좌표 (x, y) 가 주어지면 산의 모양이 결정됩니다. 베시는 어떤 산의 봉우리가 다른 산의 내부나 경계에 있으면 그 산을 구별할 수 없습니다. 주어진 산들 중에서 다른 산에 가려지지 않는 산의 개수 를 구하면 됩니다. 예를 들어 봉우리 좌표가 다음과 같다면, (4, 6) (7, 2) (2, 5) (7, 2) 의 봉우리는 (4, 6) 인 산에 가려집니다. 나머지 두 산은 구별할 수 있으므로 정답은 2 입니다. 풀이 아이디어 1. 산을 밑변 구간으로 바꾸기 봉우리가 (x, y) 인 산을 생각해보겠습니다. 빗변의 기울기는 각각 1 , -1 이므로, 봉우리에서 x축까지 내려가는 동안 가로로도 y 만큼 이동합니다. 따라서 밑변의 양 끝점은 다음과 같습니다. 왼쪽 끝점: x - y 오른쪽 끝점: x + y 산 하나를 다음 구간으로 표현할 수 있습니다. [x-y, x+y] 모든 산의 빗변 기울기가 같으므로, 봉우리가 다른 산에 가려지는 조건을 밑변 구간이 다른 구간에 포함되는 조건 으로 바꿀 수 있습니다. 다른 산의 시작점 <= 현재 산의 시작점 현재 산의 끝점 <= 다른 산의 끝점 즉, 다른 구간에 포함되지 않는 구간의 개수를 구하면 됩니다. 2. 정렬 후 최대 끝점 확인하기 구간을 시작점 기준 오름차순으로 정렬합니다. 그러면 앞에서 확인한 구간들은 모두 현재 구간의 시작점 이하에서 시작합니다. 이 상태에서는 앞선 구간들의 최대 끝점만 기억하면 됩니다. 현재 끝점 <= 이전 최대 끝점 → 앞선 구간에 포함됨 현재 끝점 > 이전 최대 끝점 → 앞선 구간에 포함되지 않음 시작점이 같다면 끝점이 큰 구간을 먼저 확인합니다. 그래야 같은 위치에서 시작하는 작은 구간을 가려지는 산으로 처리할 수 있습니다. 코드 #include <bits/stdc++.h> using namespace std; bool cmp(pair<int, int> a, pair<int, int> b) { if (a.first == b.first) return a.second > b.second; return a.first < b.first; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N; cin >> N; vector<pair<int, int>> mnt; for (int i=0; i<N; i++) { int x,y; cin >> x >> y; mnt.push_back({x-y, x+y}); } sort(mnt.begin(), mnt.end(), cmp); int max_ed = INT_MIN; int ret=0; for (auto[st, ed] : mnt) { if (ed > max_ed) { ret++; max_ed = ed; } } cout << ret; return 0; } 풀이 흐름 산의 개수 N 을 입력받습니다. 각 봉우리 (x, y) 를 밑변 구간 [x-y, x+y] 로 바꾸어 저장합니다. 시작점 오름차순, 시작점이 같다면 끝점 내림차순으로 정렬합니다. 이전 구간들의 최대 끝점 max_ed 를 초기화합니다. 정렬된 구간을 앞에서부터 확인합니다. 현재 끝점이 max_ed 보다 크면 보이는 산으로 세고, max_ed 를 갱신합니다. 보이는 산의 개수 ret 를 출력합니다. 구현 포인트 1. mnt에 저장하는 값 vector<pair<int, int>> mnt; mnt 에는 봉우리 좌표가 아닌 산의 밑변 구간을 저장합니다. first = 밑변의 왼쪽 끝점 second = 밑변의 오른쪽 끝점 입력 단계에서 바로 좌표를 변환합니다. int x,y; cin >> x >> y; mnt.push_back({x-y, x+y}); 예제의 산들을 구간으로 바꾸면 다음과 같습니다. (4, 6) → [-2, 10] (7, 2) → [5, 9] (2, 5) → [-3, 7] 이렇게 바꾸면 삼각형의 겹침을 직접 계산하지 않고, 두 끝점으로 포함 관계를 확인할 수 있습니다. 2. 봉우리의 포함과 구간의 포함이 같은 이유 다른 산의 봉우리를 (X, Y) 라고 하겠습니다. 현재 봉우리 (x, y) 가 이 산의 내부나 경계에 있으려면 다음 조건을 만족해야 합니다. y + |x-X| <= Y 다른 산은 봉우리에서 가로로 1만큼 멀어질 때마다 높이가 1씩 낮아집니다. 따라서 현재 위치에서 다른 산의 높이는 Y - |x-X| 이며, 현재 봉우리의 높이 y 가 이 값 이하여야 합니다. 이 조건은 다음 두 조건으로 나눌 수 있습니다. y + x - X <= Y y + X - x <= Y 정리하면 다음과 같습니다. x + y <= X + Y X - Y <= x - y 이는 밑변 구간으로 보면 다음 조건입니다. 다른 산의 왼쪽 끝점 <= 현재 산의 왼쪽 끝점 현재 산의 오른쪽 끝점 <= 다른 산의 오른쪽 끝점 따라서 구간이 포함되면 해당 산의 봉우리도 가려집니다. 3. 시작점이 같으면 끝점 내림차순으로 정렬하기 bool cmp(pair<int, int> a, pair<int, int> b) { if (a.first == b.first) return a.second > b.second; return a.first < b.first; } 기본 정렬 기준은 시작점 오름차순입니다. 시작점이 같다면 끝점이 큰 구간을 먼저 배치합니다. 예를 들어 다음 두 구간이 있다고 하겠습니다. [1, 5] [1, 8] [1, 5] 는 [1, 8] 에 포함되므로 가려지는 산입니다. 작은 구간을 먼저 확인하면 아직 큰 구간을 보지 못했기 때문에 작은 구간도 정답에 포함할 수 있습니다. 따라서 다음 순서로 정렬합니다. [1, 8] [1, 5] 큰 구간을 먼저 확인하여 최대 끝점을 8 로 만들면, 작은 구간은 자연스럽게 제외됩니다. 4. max_ed의 의미 int max_ed = INT_MIN; max_ed 는 현재 구간을 확인하기 전에 처리한 모든 구간의 끝점 중 최댓값 입니다. 처음에는 확인한 구간이 없으므로 INT_MIN 으로 초기화합니다. 이를 통해 첫 번째 구간은 정답에 포함됩니다. 정렬 이후 앞선 구간들은 모두 현재 구간보다 왼쪽 또는 같은 위치에서 시작합니다. 따라서 앞선 구간 중 끝점이 현재 끝점 이상인 구간이 있다면, 그 구간은 현재 구간을 포함합니다. 이 조건을 확인하기 위해 앞선 구간들을 다시 순회할 필요는 없습니다. 가장 큰 끝점인 max_ed 만 비교하면 됩니다. 5. 끝점이 더 클 때만 정답에 포함하기 int ret=0; for (auto[st, ed] : mnt) { if (ed > max_ed) { ret++; max_ed = ed; } } st 는 현재 구간의 시작점이고, ed 는 끝점입니다. 시작점 관계는 정렬로 보장되어 있으므로 반복문에서는 끝점만 비교합니다. ed <= max_ed → 앞선 구간에 포함됨 → 정답에 포함하지 않음 현재 끝점이 더 크다면 앞선 어느 구간에도 포함되지 않습니다. ed > max_ed → 보이는 산 → ret 증가 → max_ed 갱신 끝점이 같은 경우에도 현재 구간은 앞선 구간에 포함됩니다. 문제에서는 경계에 있는 봉우리도 보이지 않으므로, 조건은 >= 가 아닌 > 입니다. 조건을 만족하지 않을 때는 현재 끝점이 기존 최댓값 이하이므로 max_ed 를 그대로 유지합니다. 6. 한 번 센 산을 나중에 취소하지 않아도 되는 이유 현재 구간을 정답에 포함했다면 앞선 구간에는 가려지지 않는다는 것을 확인한 상태입니다. 뒤에 나오는 구간의 시작점은 현재 시작점보다 크거나 같습니다. 시작점이 더 크다면 현재 구간 전체를 포함할 수 없습니다. 시작점이 같더라도 끝점 내림차순으로 정렬했으므로, 뒤에 나오는 구간의 끝점은 현재 끝점 이하입니다. 봉우리 위치가 같은 두 산은 없으므로 완전히 같은 구간도 없습니다. 따라서 뒤의 구간이 현재 산을 가릴 수 없으며, 한 번 증가시킨 ret 를 다시 줄일 필요가 없습니다. 7. 예시로 보는 동작 예제의 구간들을 정렬하면 다음과 같습니다. [-3, 7] [-2, 10] [5, 9] 첫 번째 구간을 확인합니다. ed = 7 7 > INT_MIN ret = 1 max_ed = 7 두 번째 구간은 끝점이 기존 최댓값보다 큽니다. ed = 10 10 > 7 ret = 2 max_ed = 10 세 번째 구간은 끝점이 기존 최댓값 이하입니다. ed = 9 9 <= 10 가려지는 산이므로 제외 따라서 최종 정답은 2 가 됩니다. 시간복잡도 각 산을 밑변 구간으로 변환하는 데 O(N) 이 필요합니다. 구간을 정렬하는 데 O(N log N) , 정렬된 구간을 한 번 순회하는 데 O(N) 이 필요합니다. 따라서 전체 시간복잡도는 O(N log N) 입니다. mnt 에 산마다 구간 하나를 저장하므로 공간복잡도는 O(N) 입니다.