Combo 3 Cuốn Sách: Làm Giàu Từ Chứng Khoán + Thực Hành CANSLIM + Cách Tư Duy Và Giao Dịch Như Một Nhà Vô Địch Đầu Tư Chứng Khoán
(function(firebaseConfig, initialAuthToken, appId) {
window.__firebase_config = firebaseConfig;
window.__initial_auth_token = initialAuthToken;
window.__app_id = appId;
})(“n{n “apiKey”: “AIzaSyCqyCcs2R2e7AegGjvFAwG98wlamtbHvZY”,n “authDomain”: “bard-frontend.firebaseapp.com”,n “projectId”: “bard-frontend”,n “storageBucket”: “bard-frontend.firebasestorage.app”,n “messagingSenderId”: “175205271074”,n “appId”: “1:175205271074:web:2b7bd4d34d33bf38e6ec7b”n}n”,”eyJhbGciOiJSUzI1NiIsImtpZCI6IjExNjRiNzdiNDMzZDdhMDAyMWI4NjE4YjhjYTU3ZTMyZGI5MWUxMTMiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiJmaXJlYmFzZS1hZG1pbnNkay1mYnN2Y0BiYXJkLWZyb250ZW5kLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiaHR0cHM6Ly9pZGVudGl0eXRvb2xraXQuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLmlkZW50aXR5LmlkZW50aXR5dG9vbGtpdC52MS5JZGVudGl0eVRvb2xraXQiLCJ1aWQiOiIwOTkyMDU1MDE0NzUzNjUxNTA1MiIsImlzcyI6ImZpcmViYXNlLWFkbWluc2RrLWZic3ZjQGJhcmQtZnJvbnRlbmQuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJjbGFpbXMiOnsiYXBwSWQiOiJjXzVmYmFhNWY0NzQyNDcwOWRfY29tYm8tMy1zYWNoLWNodW5nLWtob2FuLWNhbnNsaW0uaHRtbC05MTIifSwiZXhwIjoxNzg5Mzk4MTMwLCJpYXQiOjE3ODkzOTQ1MzAsImFsZyI6IlJTMjU2In0.CePmfgfwkSmlcrOjNpyxdeEdU2Qxj553fBR6R5g-zmAHwwQJwQFeY0C2kxSXwJ436iKNQSK9a_HJK0Fpp2t–BQcFDccCeZVGZq_fwziDGBOZnZeOveyjDYKSyUbifQ_48LsIpkhJoCkU0Gz4JUgs6Fg2WGA3u6qyL0U23XRoGQtigca-lhQ78_bWqDZHvis6l7LkyNkI5MF4Y0E1h5vTpGaY_AGLqz5eo3jD9_ezumZQH7VuFobBdZHPGBWBoz5HKlmrB2-wwxPDttkvN_njFIffEaSjiylasZwfkVmyxANtGkC1wc0CGz0E2iOaruGj_iRoXm0tnKGGgCQRVBbRw”,”c_5fbaa5f47424709d_combo-3-sach-chung-khoan-canslim.html-912″)
document.addEventListener(‘input’, (event) => {
if (event.target && (event.target.isContentEditable || event.target.hasAttribute(‘contenteditable’))) {
const clonedDoc = document.cloneNode(true);
const injectedScripts = clonedDoc.querySelectorAll(‘[data-bard-client-injected=”true”]’);
injectedScripts.forEach(el => el.remove());
window.parent.postMessage({
type: ‘inlineEdit’,
html: ‘n’ + clonedDoc.documentElement.outerHTML
}, ‘*’);
}
});
(function(){‘use strict’;window.addEventListener(“message”,a=>{a.data&&a.data.type===”SUPPLEMENTAL_DATA_UPDATE”&&window.dispatchEvent(new CustomEvent(“supplementaldataupdate”,{detail:a.data.data}))});}).call(this);
(function() {
// Ensure this script is executed only once
if (window.firebaseAuthBridgeScriptLoaded) {
return;
}
window.firebaseAuthBridgeScriptLoaded = true;
let nextTokenPromiseId = 0;
// Stores { resolve, reject } for ongoing token requests
const pendingTokenPromises = {};
// Listen for messages from the Host Application
window.addEventListener(‘message’, function(event) {
const messageData = event.data;
if (messageData && messageData.type === ‘RESOLVE_NEW_FIREBASE_TOKEN’) {
const { success, token, error, promiseId } = messageData ?? {};
if (pendingTokenPromises[promiseId]) {
if (success) {
pendingTokenPromises[promiseId].resolve(token);
} else {
pendingTokenPromises[promiseId].reject(new Error(error || ‘Token refresh failed from host.’));
}
delete pendingTokenPromises[promiseId];
}
}
});
// Expose a function for the Generated App to request a new Firebase token
window.requestNewFirebaseToken = function() {
const currentPromiseId = nextTokenPromiseId++;
const promise = new Promise((resolve, reject) => {
pendingTokenPromises[currentPromiseId] = { resolve, reject };
});
if (window.parent && window.parent !== window) {
window.parent.postMessage({
type: ‘REQUEST_NEW_FIREBASE_TOKEN’,
promiseId: currentPromiseId
}, ‘*’);
} else {
pendingTokenPromises[currentPromiseId].reject(new Error(‘No parent window to request token from.’));
delete pendingTokenPromises[currentPromiseId];
}
return promise;
};
})();
let realOriginalGetUserMedia = null;
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
realOriginalGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);
}
(function() {
if (navigator.mediaDevices && navigator.mediaDevices.__proto__) {
try {
Object.defineProperty(navigator.mediaDevices.__proto__, ‘getUserMedia’, {
get: function() {
return undefined; // Or throw an error
},
configurable: false
});
} catch (error) {
console.error(“Error defining prototype getter:”, error);
}
}
})();
(function() {
const pendingMediaResolvers = {};
let nextMediaPromiseId = 0;
function requestMediaPermissions(constraints) {
const mediaPromiseId = nextMediaPromiseId++;
const promise = new Promise((resolve, reject) => {
pendingMediaResolvers[mediaPromiseId] = (granted) => {
delete pendingMediaResolvers[mediaPromiseId];
resolve(granted);
};
});
window.parent.postMessage({
type: ‘requestMediaPermission’,
constraints: constraints,
promiseId: mediaPromiseId,
}, ‘*’);
return promise;
}
let originalGetUserMedia = realOriginalGetUserMedia;
function interceptGetUserMedia() {
if (navigator.mediaDevices) {
Object.defineProperty(navigator.mediaDevices, ‘getUserMedia’, {
value: function(constraints) {
return requestMediaPermissions(constraints).then((granted) => {
if (granted) {
if (originalGetUserMedia) {
return originalGetUserMedia(constraints);
} else {
throw new Error(“Original getUserMedia not available.”);
}
} else {
throw new DOMException(‘Permission denied’, ‘NotAllowedError’);
}
});
},
writable: false,
configurable: false
});
}
}
interceptGetUserMedia();
const observer = new MutationObserver(function(mutationsList, observer) {
for (const mutation of mutationsList) {
if (mutation.type === ‘reconfigured’ && mutation.name === ‘getUserMedia’ && mutation.object === navigator.mediaDevices) {
interceptGetUserMedia();
} else if (mutation.type === ‘attributes’ && mutation.attributeName === ‘getUserMedia’ && mutation.target === navigator.mediaDevices) {
interceptGetUserMedia();
} else if (mutation.type === ‘childList’ && mutation.addedNodes) {
mutation.addedNodes.forEach(node => {
if (node === navigator.mediaDevices) {
interceptGetUserMedia();
}
});
}
}
});
function interceptSpeechRecognition() {
if (!window.SpeechRecognition && !window.webkitSpeechRecognition) {
return;
}
const OriginalSpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const SpeechRecognitionWrapper = function(…args) {
const recognizer = new OriginalSpeechRecognition(…args);
const originalStart = recognizer.start.bind(recognizer);
recognizer.start = function() {
requestMediaPermissions({ audio: true }).then(granted => {
if (granted) {
originalStart();
} else {
const errorEvent = new SpeechRecognitionErrorEvent(‘error’);
errorEvent.error = ‘not-allowed’; // This is the standard error for permission denial.
recognizer.dispatchEvent(errorEvent);
}
});
};
return recognizer;
};
SpeechRecognitionWrapper.prototype = OriginalSpeechRecognition.prototype;
SpeechRecognitionWrapper.prototype.constructor = SpeechRecognitionWrapper;
if (window.SpeechRecognition) {
window.SpeechRecognition = SpeechRecognitionWrapper;
}
if (window.webkitSpeechRecognition) {
window.webkitSpeechRecognition = SpeechRecognitionWrapper;
}
}
interceptSpeechRecognition();
window.addEventListener(‘message’, function(event) {
if (event.data) {
if (event.data.type === ‘resolveMediaPermission’) {
const { promiseId, granted } = event.data;
if (pendingMediaResolvers[promiseId]) {
pendingMediaResolvers[promiseId](granted);
}
}
}
});
})();(function(){‘use strict’;var u=typeof Object.defineProperties==”function”?Object.defineProperty:function(b,d,e){if(b==Array.prototype||b==Object.prototype)return b;b[d]=e.value;return b};function v(b){b=[“object”==typeof globalThis&&globalThis,b,”object”==typeof window&&window,”object”==typeof self&&self,”object”==typeof global&&global];for(var d=0;d<b.length;++d){var e=b[d];if(e&&e.Math==Math)return e}throw Error("Cannot find global object");}var w=v(this);
function y(b,d){if(d)a:{var e=w;b=b.split(".");for(var h=0;h<b.length-1;h++){var k=b[h];if(!(k in e))break a;e=e[k]}b=b[b.length-1];h=e[b];d=d(h);d!=h&&d!=null&&u(e,b,{configurable:!0,writable:!0,value:d})}}function z(b){function d(h){return b.next(h)}function e(h){return b.throw(h)}return new Promise(function(h,k){function m(n){n.done?h(n.value):Promise.resolve(n.value).then(d,e).then(m,k)}m(b.next())})}y("globalThis",function(b){return b||w});/*
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
function A(b,d){function e(){}e.prototype=d.prototype;b.j=d.prototype;b.prototype=new e;b.prototype.constructor=b;b.h=function(h,k,m){for(var n=Array(arguments.length-2),p=2;p{if(a.data.type===”message”){a=new MessageEvent(“message”,{data:G.decode(a.data.data)});
let f;(f=c.onmessage)==null||f.call(c,a);c.dispatchEvent(a)}}}function n(){if(!t)throw Error(“Control port not captured yet.”);t.onmessage=a=>{switch(a.data.type){case “open”:l=1;var f=new Event(“open”),g;(g=c.onopen)==null||g.call(c,f);c.dispatchEvent(f);q.forEach(H=>{k(H)});q=[];break;case “close”:g=a.data;l=3;g=new CloseEvent(“close”,{code:g.code,reason:g.reason,wasClean:g.wasClean});(f=c.onclose)==null||f.call(c,g);c.dispatchEvent(g);break;case “error”:l=3;f=new Event(“error”);let x;(x=c.onerror)==
null||x.call(c,f);c.dispatchEvent(f)}}}function p(a){return z(function*(){var f=new MessageChannel;t=f.port1;var g=new MessageChannel;r=g.port1;n();m();window.parent.postMessage({type:”websocket_open”,portOrdering:[“control”,”data”],url:b,protocols:a||[],connectionId:I},e,[f.port2,g.port2])}())}var c=Reflect.construct(EventTarget,[],new.target);c.CONNECTING=0;c.OPEN=1;c.CLOSING=2;c.CLOSED=3;c.url=b;c.binaryType=”arraybuffer”;c.protocol=””;c.i=””;var l=0,t=null,r=null,q=[],F=new TextEncoder,G=new TextDecoder;
c.onopen=null;c.onmessage=null;c.onclose=null;c.onerror=null;Object.defineProperty(c,”readyState”,{get:()=>l,enumerable:!0,configurable:!0});Object.defineProperty(c,”bufferedAmount”,{get:()=>{var a=0;q.forEach(f=>{a+=typeof f===”string”?f.length:f.byteLength});return a},enumerable:!0,configurable:!0});var I=function(){var a;return((a=globalThis.crypto)==null?0:a.randomUUID)?globalThis.crypto.randomUUID():”xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx”.replace(/[xy]/g,f=>{var g=Math.random()*16|0;return(f===
“x”?g:g&3|8).toString(16)})}();c.send=a=>{if(l===1)a instanceof Blob?a.arrayBuffer().then(f=>{k(f)}):k(a);else if(l===0)if(typeof a===”string”)q.push(a);else if(a instanceof ArrayBuffer||ArrayBuffer.isView(a))q.push(h(a));else throw Error(“Sending Blob is not supported before the connection is open.”);else console.debug(“WebSocket send called in CLOSING or CLOSED state; ignored.”)};c.close=(a=1E3,f=””)=>{if(l!==2&&l!==3){l=2;a={type:”close”,code:a,reason:f,wasClean:a===1E3};var g;(g=t)==null||g.postMessage(a)}};
Promise.resolve().then(()=>p(d));return c}A(B,EventTarget);var C=document.currentScript,D=C==null?void 0:C.getAttribute(“ws-interception-config”);if(!D)throw Error(“WebSocket Interceptor: Missing ws-interception-config attribute in the script tag.”);var E=JSON.parse(D);if(!E.parentOrigin||typeof E.parentOrigin!==”string”)throw Error(“WebSocket Interceptor: Invalid parentOrigin in ws-interception-config”);
(function(b){var d=Object.getOwnPropertyDescriptor(window,”WebSocket”);if(!d||d.writable||d.configurable)d=Object.assign(function(e,h){try{let k=(new URL(e)).hostname;if(b.proxiedDomains.some(m=>k===m||k.endsWith(`.${m}`)))return new B(e,h,b.parentOrigin)}catch(k){throw window.parent.postMessage({type:”websocket_blocked”,url:e,reason:”blocked_invalid_url”},b.parentOrigin),new DOMException(`WebSocket connection to ‘${e}’ is not allowed in Canvas.`,”SecurityError”);}window.parent.postMessage({type:”websocket_blocked”,
url:e,reason:”blocked_domain_not_allowlisted”},b.parentOrigin);throw new DOMException(`WebSocket connection to ‘${e}’ is not allowed in Canvas.`,”SecurityError”);},{CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3}),Object.defineProperty(window,”WebSocket”,{value:d,writable:!1,configurable:!1})})({proxiedDomains:E.proxiedDomains||[],parentOrigin:E.parentOrigin});}).call(this);
((function(modelInformation) {
const originalFetch = window.fetch;
// TODO: b/421908508 – Move these out of the script and match all generative AI model calls.
let googleLlmBaseApiUrls = [
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.textModelName + ‘:streamGenerateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.textModelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageModelName + ‘:predict’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageModelName + ‘:predictLongRunning’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageEditModelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.imageTransformModelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.videoModelName + ‘:predict’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.videoModelName + ‘:predictLongRunning’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelInformation.ttsModelName + ‘:generateContent’,
];
modelInformation.deprecatedTextModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
);
});
modelInformation.deprecatedImageModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:predict’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:predictLongRunning’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
);
});
modelInformation.deprecatedGenerateImageModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
);
});
modelInformation.deprecatedImageTransformModelNames.forEach((modelName) => {
googleLlmBaseApiUrls.push(
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:generateContent’,
‘https://generativelanguage.googleapis.com/v1beta/models/’ + modelName + ‘:streamGenerateContent’,
);
});
const pendingFetchResolvers = {};
let nextPromiseId = 0;
function handleStringInput(input, optionsArgument) {
const actualUrl = input;
const fetchCallArgs = [actualUrl, optionsArgument];
const effectiveOptions = optionsArgument || {};
const bodyForApiKeyCheck = effectiveOptions.body;
const bodyForPostMessage = effectiveOptions.body;
return { actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage };
}
function handleRequestInput(input, optionsArgument) {
const actualUrl = input.url;
const fetchCallArgs = [input, optionsArgument];
const effectiveOptions = { method: input.method, headers: new Headers(input.headers) };
let bodyForApiKeyCheck;
let bodyForPostMessage;
if (optionsArgument) {
if (optionsArgument.method) effectiveOptions.method = optionsArgument.method;
if (optionsArgument.headers) effectiveOptions.headers = new Headers(optionsArgument.headers);
if (‘body’ in optionsArgument) {
bodyForApiKeyCheck = optionsArgument.body;
bodyForPostMessage = optionsArgument.body;
} else {
bodyForApiKeyCheck = undefined;
bodyForPostMessage = input.body;
}
} else {
bodyForApiKeyCheck = undefined;
bodyForPostMessage = input.body;
}
return { actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage };
}
window.fetch = function(input, optionsArgument) {
let actualUrl;
let fetchCallArgs;
let effectiveOptions = {};
let bodyForApiKeyCheck;
let bodyForPostMessage;
if (typeof input === ‘string’) {
({actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage} = handleStringInput(input, optionsArgument));
} else if (input instanceof Request) {
({actualUrl, fetchCallArgs, effectiveOptions, bodyForApiKeyCheck, bodyForPostMessage} = handleRequestInput(input, optionsArgument));
} else {
return originalFetch.apply(window, [input, optionsArgument]);
}
effectiveOptions.method = effectiveOptions.method || ‘GET’;
if (!effectiveOptions.headers) {
effectiveOptions.headers = new Headers();
}
if (typeof actualUrl === ‘string’ && googleLlmBaseApiUrls.some((url) => actualUrl.startsWith(url))) {
let apiKeyIsNull = true;
const regex = new RegExp(“models/([^:]+)”);
const modelNameMatch = actualUrl.match(regex);
const modelName = modelNameMatch ? modelNameMatch[1] : ‘unspecified’;
try {
const urlObject = new URL(actualUrl); // Use URL object for robust parsing
const apiKeyParam = urlObject.searchParams.get(‘key’);
if (apiKeyParam) {
apiKeyIsNull = false;
}
} catch (e) {
// Continue checks even if URL parsing fails
}
if (apiKeyIsNull && effectiveOptions.headers) {
const h = new Headers(effectiveOptions.headers);
const apiKeyHeaderValue = h.get(‘X-API-Key’) || h.get(‘x-api-key’);
if (apiKeyHeaderValue) {
apiKeyIsNull = false;
return originalFetch.apply(window, fetchCallArgs);
}
}
if (apiKeyIsNull && effectiveOptions.method && [‘POST’, ‘PUT’, ‘PATCH’].includes(effectiveOptions.method.toUpperCase()) && typeof bodyForApiKeyCheck === ‘string’) {
try {
const bodyData = JSON.parse(bodyForApiKeyCheck);
if (bodyData && bodyData.apiKey) {
apiKeyIsNull = false;
return originalFetch.apply(window, fetchCallArgs);
}
} catch (e) {
// Ignore JSON parsing errors
}
}
if(apiKeyIsNull) {
const promiseId = nextPromiseId++;
const promise = new Promise((resolve) => {
pendingFetchResolvers[promiseId] = (resolvedResponse) => {
delete pendingFetchResolvers[promiseId];
resolve(resolvedResponse);
};
});
let serializedBodyForPostMessage;
if (typeof bodyForPostMessage === ‘string’ || bodyForPostMessage == null) {
serializedBodyForPostMessage = bodyForPostMessage;
} else if (bodyForPostMessage instanceof ReadableStream) {
serializedBodyForPostMessage = null;
} else {
try {
serializedBodyForPostMessage = JSON.stringify(bodyForPostMessage);
} catch (e) {
serializedBodyForPostMessage = null;
}
}
const messageOptions = {
method: effectiveOptions.method,
headers: Object.fromEntries(new Headers(effectiveOptions.headers).entries()),
body: serializedBodyForPostMessage
};
window.parent.postMessage({
type: ‘requestFetch’,
url: actualUrl,
modelName: modelName,
options: messageOptions,
promiseId: promiseId,
}, ‘*’);
return promise;
}
return originalFetch.apply(window, fetchCallArgs);
}
return originalFetch.apply(window, fetchCallArgs);
};
window.addEventListener(‘message’, function(event) {
if (event.data && event.data.type === ‘resolveFetch’) {
const { promiseId, response } = event.data;
if (pendingFetchResolvers[promiseId]) {
try {
const reconstructedResponse = new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: new Headers(response.headers),
});
pendingFetchResolvers[promiseId](reconstructedResponse);
} catch (error) {
pendingFetchResolvers[promiseId](new Response(null, { status: 500, statusText: “Interceptor Response Reconstruction Error” }));
}
}
}
});
}))({“textModelName”:”gemini-3-flash-preview”,”imageModelName”:”imagen-4.0-generate-001″,”imageEditModelName”:”gemini-3.1-flash-image”,”imageTransformModelName”:”gemini-3-pro-image”,”videoModelName”:”veo-2.0-generate-001″,”ttsModelName”:”gemini-2.5-flash-preview-tts”,”deprecatedTextModelNames”:[“gemini-2.0-flash”,”gemini-2.5-flash”,”gemini-2.5-flash-preview-04-17″,”gemini-2.5-flash-preview-05-20″,”gemini-2.5-flash-preview-09-2025″],”deprecatedImageModelNames”:[“imagen-3.0-generate-001″,”imagen-3.0-generate-002″],”deprecatedGenerateImageModelNames”:[“gemini-2.5-flash-image-preview”,”gemini-2.5-flash-image”,”gemini-3.1-flash-image-preview”],”deprecatedImageTransformModelNames”:[“gemini-3-pro-image-preview-11-2025″]})(function(){‘use strict’;function a(){window.parent.postMessage({type:”interaction”},”*”)}window.addEventListener(“click”,a,{capture:!0,passive:!0});window.addEventListener(“touchstart”,a,{capture:!0,passive:!0});window.addEventListener(“keydown”,a,{capture:!0,passive:!0});}).call(this);
(function() {
const originalConsoleLog = console.log;
const originalConsoleError = console.error;
/**
* Normalizes an error event or a promise rejection reason into a structured error object.
* @param {*} errorEventOrReason The error object or reason.
* @return {object} Structured error data { message, name, stack }.
*/
function getErrorObject(errorEventOrReason) {
if (errorEventOrReason instanceof Error) {
return {
message: errorEventOrReason.message,
name: errorEventOrReason.name,
stack: errorEventOrReason.stack,
};
}
// Fallback for non-Error objects.
try {
return {
message: JSON.stringify(errorEventOrReason),
name: ‘UnknownErrorType’,
stack: null,
};
} catch (e) {
return {
message: String(errorEventOrReason),
name: ‘UnknownErrorTypeNonStringifiable’,
stack: null,
};
}
}
/**
* Converts an array of arguments (from log/error) into a single string.
* Handles Error objects specially to include their message and stack.
* @param {Array} args – Arguments passed to console methods.
* @return {string} A string representation of the arguments.
*/
function stringifyArgs(args) {
return args
.map((arg) => {
if (arg instanceof Error) {
const {message, stack} = arg;
return `Error: ${message}${stack ? (‘nStack: ‘ + stack) : ”}`;
}
if (typeof arg === ‘object’ && arg !== null) {
try {
return JSON.stringify(arg);
} catch (error) {
return ‘[Circular Object]’;
}
} else {
return String(arg);
}
})
.join(‘ ‘);
}
console.log = function(…args) {
const logString = stringifyArgs(args);
window.parent.postMessage({ type: ‘log’, message: logString }, ‘*’);
originalConsoleLog.apply(console, args);
};
console.error = function(…args) {
let errorData;
if (args.length > 0 && args[0] instanceof Error) {
const err = args[0];
// If the first arg is an Error, capture its details.
errorData = {
type: ‘error’,
source: ‘CONSOLE_ERROR’,
…getErrorObject(err),
rawArgsString: stringifyArgs(args.slice(1)),
timestamp: new Date().toISOString(),
};
} else {
// If not an Error object, treat all args as a general error message.
errorData = {
type: ‘error’,
source: ‘CONSOLE_ERROR’,
message: stringifyArgs(args),
name: ‘ConsoleLoggedError’,
stack: null,
timestamp: new Date().toISOString(),
};
}
window.parent.postMessage(errorData, ‘*’);
originalConsoleError.apply(console, args);
};
// Listen for global unhandled synchronous errors.
window.addEventListener(‘error’, function(event) {
const errorDetails = event.error ? getErrorObject(event.error) : {
message: event.message,
name: ‘GlobalError’,
stack: null,
filename: event.filename,
lineno: event.lineno,
colno: event.colno,
};
window.parent.postMessage({
type: ‘error’,
source: ‘global’,
…errorDetails,
message: errorDetails.message || event.message,
timestamp: new Date().toISOString(),
}, ‘*’);
});
// Listen for unhandled promise rejections (asynchronous errors).
window.addEventListener(‘unhandledrejection’, function(event) {
const errorDetails = getErrorObject(event.reason);
window.parent.postMessage({
type: ‘error’,
source: ‘unhandledrejection’,
…errorDetails,
message: errorDetails.message || ‘Unhandled Promise Rejection’,
timestamp: new Date().toISOString(),
}, ‘*’);
});
})();
tailwind.config = {
theme: {
extend: {
colors: {
primary: ‘#15803d’, // Deep Forest Green (Bull Market)
primaryDark: ‘#0f5132’,
accent: ‘#d97706’, // Warm Gold/Amber
danger: ‘#dc2626’,
darkBg: ‘#0f172a’,
cardBg: ‘#1e293b’
},
fontFamily: {
sans: [‘Inter’, ‘system-ui’, ‘-apple-system’, ‘Segoe UI’, ‘Roboto’, ‘sans-serif’]
}
}
}
}
{
“@context”: “https://schema.org”,
“@graph”: [
{
“@type”: “Product”,
“name”: “Combo 3 Cuốn Sách: Làm Giàu Từ Chứng Khoán + Hướng Dẫn Thực Hành CANSLIM + Cách Tư Duy Và Giao Dịch Như Một Nhà Vô Địch Đầu Tư Chứng Khoán”,
“image”: “https://nhasachbaoanh.com/wp-content/uploads/2021/04/combo-3-cuon-sach-lam-giau-tu-chung-khoan-thuc-hanh-canslim-cach-tu-duy-va-giao-dich-nhu-mot-nha-vo-dich-dau-tu-chung-khoan.jpg”,
“description”: “Bộ 3 cuốn cẩm nang thực chiến phương pháp CANSLIM đỉnh cao của William O’Neil và hệ thống SEPA quản trị rủi ro vô địch của Mark Minervini.”,
“sku”: “COMBO-CANSLIM-MINERVINI-03”,
“brand”: {
“@type”: “Brand”,
“name”: “NXB Kinh Tế / Happy Live Books”
},
“offers”: {
“@type”: “Offer”,
“url”: “https://shopee.vn/search?keyword=combo%203%20cuon%20sach%20lam%20giau%20tu%20chung%20khoan%20thuc%20hanh%20canslim%20cach%20tu%20duy%20va%20giao%20dich%20nhu%20mot%20nha%20vo%20dich”,
“priceCurrency”: “VND”,
“price”: “495000”,
“priceValidUntil”: “2027-12-31”,
“availability”: “https://schema.org/InStock”,
“itemCondition”: “https://schema.org/NewCondition”
},
“aggregateRating”: {
“@type”: “AggregateRating”,
“ratingValue”: “4.9”,
“reviewCount”: “2480”
}
},
{
“@type”: “FAQPage”,
“mainEntity”: [
{
“@type”: “Question”,
“name”: “Người mới F0 chưa biết gì có đọc được combo này không?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Hoàn toàn phù hợp. Cuốn ‘Làm Giàu Từ Chứng Khoán’ và ‘Hướng Dẫn Thực Hành CANSLIM’ đi từ cơ bản, hình vẽ mẫu biểu đồ cụ thể, giúp nhà đầu tư nắm vững cả phân tích cơ bản (FA) lẫn kỹ thuật (TA).”
}
},
{
“@type”: “Question”,
“name”: “Phương pháp CANSLIM và tư duy của Minervini có áp dụng hiệu quả tại chứng khoán Việt Nam (VN-Index) không?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Rất hiệu quả. Hàng loạt siêu cổ phiếu tăng bằng lần trên thị trường chứng khoán Việt Nam như FPT, HPG, DGC, VHC đều thể hiện trọn vẹn đặc trưng mô hình cốc tay cầm, tăng trưởng EPS đột biến và tiêu chí CANSLIM.”
}
}
]
}
]
}
*, ::before, ::after{–tw-border-spacing-x:0;–tw-border-spacing-y:0;–tw-translate-x:0;–tw-translate-y:0;–tw-rotate:0;–tw-skew-x:0;–tw-skew-y:0;–tw-scale-x:1;–tw-scale-y:1;–tw-pan-x: ;–tw-pan-y: ;–tw-pinch-zoom: ;–tw-scroll-snap-strictness:proximity;–tw-gradient-from-position: ;–tw-gradient-via-position: ;–tw-gradient-to-position: ;–tw-ordinal: ;–tw-slashed-zero: ;–tw-numeric-figure: ;–tw-numeric-spacing: ;–tw-numeric-fraction: ;–tw-ring-inset: ;–tw-ring-offset-width:0px;–tw-ring-offset-color:#fff;–tw-ring-color:rgb(59 130 246 / 0.5);–tw-ring-offset-shadow:0 0 #0000;–tw-ring-shadow:0 0 #0000;–tw-shadow:0 0 #0000;–tw-shadow-colored:0 0 #0000;–tw-blur: ;–tw-brightness: ;–tw-contrast: ;–tw-grayscale: ;–tw-hue-rotate: ;–tw-invert: ;–tw-saturate: ;–tw-sepia: ;–tw-drop-shadow: ;–tw-backdrop-blur: ;–tw-backdrop-brightness: ;–tw-backdrop-contrast: ;–tw-backdrop-grayscale: ;–tw-backdrop-hue-rotate: ;–tw-backdrop-invert: ;–tw-backdrop-opacity: ;–tw-backdrop-saturate: ;–tw-backdrop-sepia: ;–tw-contain-size: ;–tw-contain-layout: ;–tw-contain-paint: ;–tw-contain-style: }::backdrop{–tw-border-spacing-x:0;–tw-border-spacing-y:0;–tw-translate-x:0;–tw-translate-y:0;–tw-rotate:0;–tw-skew-x:0;–tw-skew-y:0;–tw-scale-x:1;–tw-scale-y:1;–tw-pan-x: ;–tw-pan-y: ;–tw-pinch-zoom: ;–tw-scroll-snap-strictness:proximity;–tw-gradient-from-position: ;–tw-gradient-via-position: ;–tw-gradient-to-position: ;–tw-ordinal: ;–tw-slashed-zero: ;–tw-numeric-figure: ;–tw-numeric-spacing: ;–tw-numeric-fraction: ;–tw-ring-inset: ;–tw-ring-offset-width:0px;–tw-ring-offset-color:#fff;–tw-ring-color:rgb(59 130 246 / 0.5);–tw-ring-offset-shadow:0 0 #0000;–tw-ring-shadow:0 0 #0000;–tw-shadow:0 0 #0000;–tw-shadow-colored:0 0 #0000;–tw-blur: ;–tw-brightness: ;–tw-contrast: ;–tw-grayscale: ;–tw-hue-rotate: ;–tw-invert: ;–tw-saturate: ;–tw-sepia: ;–tw-drop-shadow: ;–tw-backdrop-blur: ;–tw-backdrop-brightness: ;–tw-backdrop-contrast: ;–tw-backdrop-grayscale: ;–tw-backdrop-hue-rotate: ;–tw-backdrop-invert: ;–tw-backdrop-opacity: ;–tw-backdrop-saturate: ;–tw-backdrop-sepia: ;–tw-contain-size: ;–tw-contain-layout: ;–tw-contain-paint: ;–tw-contain-style: }/* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{–tw-content:”}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, “Liberation Mono”, “Courier New”, monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0px}.inset-x-0{left:0px;right:0px}.-bottom-16{bottom:-4rem}.-left-16{left:-4rem}.-right-16{right:-4rem}.-top-16{top:-4rem}.bottom-0{bottom:0px}.bottom-4{bottom:1rem}.left-4{left:1rem}.right-4{right:1rem}.top-0{top:0px}.top-4{top:1rem}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2 / span 2}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:0.25rem}.ml-1{margin-left:0.25rem}.mt-0.5{margin-top:0.125rem}.mt-1{margin-top:0.25rem}.mt-16{margin-top:4rem}.mt-3{margin-top:0.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-3.5{height:0.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-80{height:20rem}.h-auto{height:auto}.h-full{height:100%}.w-10{width:2.5rem}.w-14{width:3.5rem}.w-20{width:5rem}.w-3.5{width:0.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}@keyframes bounce{0%, 100%{transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,0.2,1)}}.animate-bounce{animation:bounce 1s infinite}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:0.25rem}.gap-1.5{gap:0.375rem}.gap-2{gap:0.5rem}.gap-3{gap:0.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-1 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(0.25rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(0.25rem * var(–tw-space-y-reverse))}.space-y-10 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(2.5rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(–tw-space-y-reverse))}.space-y-12 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(3rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(3rem * var(–tw-space-y-reverse))}.space-y-2 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(0.5rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(0.5rem * var(–tw-space-y-reverse))}.space-y-2.5 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(0.625rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(0.625rem * var(–tw-space-y-reverse))}.space-y-3 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(0.75rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(0.75rem * var(–tw-space-y-reverse))}.space-y-4 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(1rem * var(–tw-space-y-reverse))}.space-y-5 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(–tw-space-y-reverse))}.space-y-6 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(–tw-space-y-reverse))}.space-y-8 > :not([hidden]) ~ :not([hidden]){–tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 – var(–tw-space-y-reverse)));margin-bottom:calc(2rem * var(–tw-space-y-reverse))}.divide-y > :not([hidden]) ~ :not([hidden]){–tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 – var(–tw-divide-y-reverse)));border-bottom-width:calc(1px * var(–tw-divide-y-reverse))}.divide-slate-100 > :not([hidden]) ~ :not([hidden]){–tw-divide-opacity:1;border-color:rgb(241 245 249 / var(–tw-divide-opacity, 1))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:0.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-xl{border-radius:0.75rem}.rounded-r-xl{border-top-right-radius:0.75rem;border-bottom-right-radius:0.75rem}.rounded-tl-2xl{border-top-left-radius:1rem}.rounded-tr-2xl{border-top-right-radius:1rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-amber-200{–tw-border-opacity:1;border-color:rgb(253 230 138 / var(–tw-border-opacity, 1))}.border-amber-500{–tw-border-opacity:1;border-color:rgb(245 158 11 / var(–tw-border-opacity, 1))}.border-emerald-200{–tw-border-opacity:1;border-color:rgb(167 243 208 / var(–tw-border-opacity, 1))}.border-emerald-400/30{border-color:rgb(52 211 153 / 0.3)}.border-emerald-400/40{border-color:rgb(52 211 153 / 0.4)}.border-emerald-500/30{border-color:rgb(16 185 129 / 0.3)}.border-slate-100{–tw-border-opacity:1;border-color:rgb(241 245 249 / var(–tw-border-opacity, 1))}.border-slate-200{–tw-border-opacity:1;border-color:rgb(226 232 240 / var(–tw-border-opacity, 1))}.border-slate-300{–tw-border-opacity:1;border-color:rgb(203 213 225 / var(–tw-border-opacity, 1))}.border-slate-800{–tw-border-opacity:1;border-color:rgb(30 41 59 / var(–tw-border-opacity, 1))}.border-white/10{border-color:rgb(255 255 255 / 0.1)}.border-white/20{border-color:rgb(255 255 255 / 0.2)}.bg-amber-50{–tw-bg-opacity:1;background-color:rgb(255 251 235 / var(–tw-bg-opacity, 1))}.bg-amber-50/80{background-color:rgb(255 251 235 / 0.8)}.bg-amber-500/10{background-color:rgb(245 158 11 / 0.1)}.bg-black/25{background-color:rgb(0 0 0 / 0.25)}.bg-black/30{background-color:rgb(0 0 0 / 0.3)}.bg-black/40{background-color:rgb(0 0 0 / 0.4)}.bg-black/60{background-color:rgb(0 0 0 / 0.6)}.bg-emerald-100{–tw-bg-opacity:1;background-color:rgb(209 250 229 / var(–tw-bg-opacity, 1))}.bg-emerald-50{–tw-bg-opacity:1;background-color:rgb(236 253 245 / var(–tw-bg-opacity, 1))}.bg-emerald-50/70{background-color:rgb(236 253 245 / 0.7)}.bg-emerald-500/10{background-color:rgb(16 185 129 / 0.1)}.bg-emerald-500/20{background-color:rgb(16 185 129 / 0.2)}.bg-emerald-600{–tw-bg-opacity:1;background-color:rgb(5 150 105 / var(–tw-bg-opacity, 1))}.bg-orange-500{–tw-bg-opacity:1;background-color:rgb(249 115 22 / var(–tw-bg-opacity, 1))}.bg-red-100{–tw-bg-opacity:1;background-color:rgb(254 226 226 / var(–tw-bg-opacity, 1))}.bg-red-600{–tw-bg-opacity:1;background-color:rgb(220 38 38 / var(–tw-bg-opacity, 1))}.bg-slate-100{–tw-bg-opacity:1;background-color:rgb(241 245 249 / var(–tw-bg-opacity, 1))}.bg-slate-50{–tw-bg-opacity:1;background-color:rgb(248 250 252 / var(–tw-bg-opacity, 1))}.bg-slate-900{–tw-bg-opacity:1;background-color:rgb(15 23 42 / var(–tw-bg-opacity, 1))}.bg-slate-950/85{background-color:rgb(2 6 23 / 0.85)}.bg-white{–tw-bg-opacity:1;background-color:rgb(255 255 255 / var(–tw-bg-opacity, 1))}.bg-white/10{background-color:rgb(255 255 255 / 0.1)}.bg-white/5{background-color:rgb(255 255 255 / 0.05)}.bg-white/95{background-color:rgb(255 255 255 / 0.95)}.bg-gradient-to-r{background-image:linear-gradient(to right, var(–tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top, var(–tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right, var(–tw-gradient-stops))}.from-amber-500{–tw-gradient-from:#f59e0b var(–tw-gradient-from-position);–tw-gradient-to:rgb(245 158 11 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-black/90{–tw-gradient-from:rgb(0 0 0 / 0.9) var(–tw-gradient-from-position);–tw-gradient-to:rgb(0 0 0 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-emerald-600{–tw-gradient-from:#059669 var(–tw-gradient-from-position);–tw-gradient-to:rgb(5 150 105 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-emerald-900{–tw-gradient-from:#064e3b var(–tw-gradient-from-position);–tw-gradient-to:rgb(6 78 59 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-orange-500{–tw-gradient-from:#f97316 var(–tw-gradient-from-position);–tw-gradient-to:rgb(249 115 22 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-orange-600{–tw-gradient-from:#ea580c var(–tw-gradient-from-position);–tw-gradient-to:rgb(234 88 12 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-red-600{–tw-gradient-from:#dc2626 var(–tw-gradient-from-position);–tw-gradient-to:rgb(220 38 38 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.from-slate-900{–tw-gradient-from:#0f172a var(–tw-gradient-from-position);–tw-gradient-to:rgb(15 23 42 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.via-amber-500{–tw-gradient-to:rgb(245 158 11 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #f59e0b var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-black/60{–tw-gradient-to:rgb(0 0 0 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), rgb(0 0 0 / 0.6) var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-emerald-950{–tw-gradient-to:rgb(2 44 34 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #022c22 var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-orange-500{–tw-gradient-to:rgb(249 115 22 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #f97316 var(–tw-gradient-via-position), var(–tw-gradient-to)}.via-rose-600{–tw-gradient-to:rgb(225 29 72 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), #e11d48 var(–tw-gradient-via-position), var(–tw-gradient-to)}.to-amber-500{–tw-gradient-to:#f59e0b var(–tw-gradient-to-position)}.to-emerald-600{–tw-gradient-to:#059669 var(–tw-gradient-to-position)}.to-orange-500{–tw-gradient-to:#f97316 var(–tw-gradient-to-position)}.to-red-500{–tw-gradient-to:#ef4444 var(–tw-gradient-to-position)}.to-red-700{–tw-gradient-to:#b91c1c var(–tw-gradient-to-position)}.to-slate-900{–tw-gradient-to:#0f172a var(–tw-gradient-to-position)}.to-teal-500{–tw-gradient-to:#14b8a6 var(–tw-gradient-to-position)}.to-transparent{–tw-gradient-to:transparent var(–tw-gradient-to-position)}.fill-amber-400{fill:#fbbf24}.fill-white{fill:#fff}.object-cover{object-fit:cover}.p-1{padding:0.25rem}.p-1.5{padding:0.375rem}.p-3{padding:0.75rem}.p-3.5{padding:0.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-2{padding-left:0.5rem;padding-right:0.5rem}.px-2.5{padding-left:0.625rem;padding-right:0.625rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-3.5{padding-left:0.875rem;padding-right:0.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0.5{padding-top:0.125rem;padding-bottom:0.125rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-1.5{padding-top:0.375rem;padding-bottom:0.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-2.5{padding-top:0.625rem;padding-bottom:0.625rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:0.75rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-5{padding-left:1.25rem}.pt-1{padding-top:0.25rem}.pt-2{padding-top:0.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, “Liberation Mono”, “Courier New”, monospace}.font-sans{font-family:Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-[10px]{font-size:10px}.text-[11px]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:0.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-0.025em}.tracking-wide{letter-spacing:0.025em}.tracking-wider{letter-spacing:0.05em}.tracking-widest{letter-spacing:0.1em}.text-amber-400{–tw-text-opacity:1;color:rgb(251 191 36 / var(–tw-text-opacity, 1))}.text-amber-500{–tw-text-opacity:1;color:rgb(245 158 11 / var(–tw-text-opacity, 1))}.text-amber-600{–tw-text-opacity:1;color:rgb(217 119 6 / var(–tw-text-opacity, 1))}.text-amber-800{–tw-text-opacity:1;color:rgb(146 64 14 / var(–tw-text-opacity, 1))}.text-amber-900{–tw-text-opacity:1;color:rgb(120 53 15 / var(–tw-text-opacity, 1))}.text-emerald-300{–tw-text-opacity:1;color:rgb(110 231 183 / var(–tw-text-opacity, 1))}.text-emerald-400{–tw-text-opacity:1;color:rgb(52 211 153 / var(–tw-text-opacity, 1))}.text-emerald-600{–tw-text-opacity:1;color:rgb(5 150 105 / var(–tw-text-opacity, 1))}.text-emerald-700{–tw-text-opacity:1;color:rgb(4 120 87 / var(–tw-text-opacity, 1))}.text-emerald-800{–tw-text-opacity:1;color:rgb(6 95 70 / var(–tw-text-opacity, 1))}.text-red-200{–tw-text-opacity:1;color:rgb(254 202 202 / var(–tw-text-opacity, 1))}.text-red-500{–tw-text-opacity:1;color:rgb(239 68 68 / var(–tw-text-opacity, 1))}.text-red-600{–tw-text-opacity:1;color:rgb(220 38 38 / var(–tw-text-opacity, 1))}.text-slate-300{–tw-text-opacity:1;color:rgb(203 213 225 / var(–tw-text-opacity, 1))}.text-slate-400{–tw-text-opacity:1;color:rgb(148 163 184 / var(–tw-text-opacity, 1))}.text-slate-500{–tw-text-opacity:1;color:rgb(100 116 139 / var(–tw-text-opacity, 1))}.text-slate-600{–tw-text-opacity:1;color:rgb(71 85 105 / var(–tw-text-opacity, 1))}.text-slate-700{–tw-text-opacity:1;color:rgb(51 65 85 / var(–tw-text-opacity, 1))}.text-slate-800{–tw-text-opacity:1;color:rgb(30 41 59 / var(–tw-text-opacity, 1))}.text-slate-900{–tw-text-opacity:1;color:rgb(15 23 42 / var(–tw-text-opacity, 1))}.text-white{–tw-text-opacity:1;color:rgb(255 255 255 / var(–tw-text-opacity, 1))}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{–tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 1px 3px 0 var(–tw-shadow-color), 0 1px 2px -1px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-2xl{–tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);–tw-shadow-colored:0 25px 50px -12px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-lg{–tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 10px 15px -3px var(–tw-shadow-color), 0 4px 6px -4px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-md{–tw-shadow:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 4px 6px -1px var(–tw-shadow-color), 0 2px 4px -2px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-sm{–tw-shadow:0 1px 2px 0 rgb(0 0 0 / 0.05);–tw-shadow-colored:0 1px 2px 0 var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.shadow-xl{–tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 20px 25px -5px var(–tw-shadow-color), 0 8px 10px -6px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.ring-white/30{–tw-ring-color:rgb(255 255 255 / 0.3)}.blur-3xl{–tw-blur:blur(64px);filter:var(–tw-blur) var(–tw-brightness) var(–tw-contrast) var(–tw-grayscale) var(–tw-hue-rotate) var(–tw-invert) var(–tw-saturate) var(–tw-sepia) var(–tw-drop-shadow)}.backdrop-blur-md{–tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia);backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia)}.backdrop-blur-sm{–tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia);backdrop-filter:var(–tw-backdrop-blur) var(–tw-backdrop-brightness) var(–tw-backdrop-contrast) var(–tw-backdrop-grayscale) var(–tw-backdrop-hue-rotate) var(–tw-backdrop-invert) var(–tw-backdrop-opacity) var(–tw-backdrop-saturate) var(–tw-backdrop-sepia)}.transition{transition-property:color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-200{transition-duration:200ms}.duration-300{transition-duration:300ms}.duration-500{transition-duration:500ms}.marker:text-emerald-600 *::marker{color:rgb(5 150 105 )}.marker:text-emerald-600::marker{color:rgb(5 150 105 )}.selection:bg-emerald-500 *::selection{–tw-bg-opacity:1;background-color:rgb(16 185 129 / var(–tw-bg-opacity, 1))}.selection:text-white *::selection{–tw-text-opacity:1;color:rgb(255 255 255 / var(–tw-text-opacity, 1))}.selection:bg-emerald-500::selection{–tw-bg-opacity:1;background-color:rgb(16 185 129 / var(–tw-bg-opacity, 1))}.selection:text-white::selection{–tw-text-opacity:1;color:rgb(255 255 255 / var(–tw-text-opacity, 1))}.hover:-translate-y-0.5:hover{–tw-translate-y:-0.125rem;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.hover:scale-110:hover{–tw-scale-x:1.1;–tw-scale-y:1.1;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.hover:bg-emerald-100:hover{–tw-bg-opacity:1;background-color:rgb(209 250 229 / var(–tw-bg-opacity, 1))}.hover:bg-emerald-700:hover{–tw-bg-opacity:1;background-color:rgb(4 120 87 / var(–tw-bg-opacity, 1))}.hover:bg-orange-600:hover{–tw-bg-opacity:1;background-color:rgb(234 88 12 / var(–tw-bg-opacity, 1))}.hover:bg-red-500:hover{–tw-bg-opacity:1;background-color:rgb(239 68 68 / var(–tw-bg-opacity, 1))}.hover:bg-slate-100:hover{–tw-bg-opacity:1;background-color:rgb(241 245 249 / var(–tw-bg-opacity, 1))}.hover:bg-slate-200:hover{–tw-bg-opacity:1;background-color:rgb(226 232 240 / var(–tw-bg-opacity, 1))}.hover:bg-slate-50:hover{–tw-bg-opacity:1;background-color:rgb(248 250 252 / var(–tw-bg-opacity, 1))}.hover:bg-slate-800:hover{–tw-bg-opacity:1;background-color:rgb(30 41 59 / var(–tw-bg-opacity, 1))}.hover:from-amber-600:hover{–tw-gradient-from:#d97706 var(–tw-gradient-from-position);–tw-gradient-to:rgb(217 119 6 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.hover:from-orange-500:hover{–tw-gradient-from:#f97316 var(–tw-gradient-from-position);–tw-gradient-to:rgb(249 115 22 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.hover:from-orange-600:hover{–tw-gradient-from:#ea580c var(–tw-gradient-from-position);–tw-gradient-to:rgb(234 88 12 / 0) var(–tw-gradient-to-position);–tw-gradient-stops:var(–tw-gradient-from), var(–tw-gradient-to)}.hover:to-amber-600:hover{–tw-gradient-to:#d97706 var(–tw-gradient-to-position)}.hover:to-emerald-500:hover{–tw-gradient-to:#10b981 var(–tw-gradient-to-position)}.hover:to-orange-600:hover{–tw-gradient-to:#ea580c var(–tw-gradient-to-position)}.hover:to-red-600:hover{–tw-gradient-to:#dc2626 var(–tw-gradient-to-position)}.hover:text-slate-600:hover{–tw-text-opacity:1;color:rgb(71 85 105 / var(–tw-text-opacity, 1))}.hover:shadow-lg:hover{–tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);–tw-shadow-colored:0 10px 15px -3px var(–tw-shadow-color), 0 4px 6px -4px var(–tw-shadow-color);box-shadow:var(–tw-ring-offset-shadow, 0 0 #0000), var(–tw-ring-shadow, 0 0 #0000), var(–tw-shadow)}.hover:shadow-amber-500/30:hover{–tw-shadow-color:rgb(245 158 11 / 0.3);–tw-shadow:var(–tw-shadow-colored)}.hover:shadow-orange-500/40:hover{–tw-shadow-color:rgb(249 115 22 / 0.4);–tw-shadow:var(–tw-shadow-colored)}.focus:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus:ring-2:focus{–tw-ring-offset-shadow:var(–tw-ring-inset) 0 0 0 var(–tw-ring-offset-width) var(–tw-ring-offset-color);–tw-ring-shadow:var(–tw-ring-inset) 0 0 0 calc(2px + var(–tw-ring-offset-width)) var(–tw-ring-color);box-shadow:var(–tw-ring-offset-shadow), var(–tw-ring-shadow), var(–tw-shadow, 0 0 #0000)}.focus:ring-emerald-500:focus{–tw-ring-opacity:1;–tw-ring-color:rgb(16 185 129 / var(–tw-ring-opacity, 1))}.active:translate-y-0:active{–tw-translate-y:0px;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.active:scale-95:active{–tw-scale-x:.95;–tw-scale-y:.95;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group[open] .group-open:rotate-180{–tw-rotate:180deg;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group:hover .group-hover:scale-105{–tw-scale-x:1.05;–tw-scale-y:1.05;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group:hover .group-hover:scale-110{–tw-scale-x:1.1;–tw-scale-y:1.1;transform:translate(var(–tw-translate-x), var(–tw-translate-y)) rotate(var(–tw-rotate)) skewX(var(–tw-skew-x)) skewY(var(–tw-skew-y)) scaleX(var(–tw-scale-x)) scaleY(var(–tw-scale-y))}.group:hover .group-hover:ring-8{–tw-ring-offset-shadow:var(–tw-ring-inset) 0 0 0 var(–tw-ring-offset-width) var(–tw-ring-offset-color);–tw-ring-shadow:var(–tw-ring-inset) 0 0 0 calc(8px + var(–tw-ring-offset-width)) var(–tw-ring-color);box-shadow:var(–tw-ring-offset-shadow), var(–tw-ring-shadow), var(–tw-shadow, 0 0 #0000)}@media (min-width: 640px){.sm:col-span-1{grid-column:span 1 / span 1}.sm:grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.sm:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}.sm:flex-row{flex-direction:row}.sm:items-end{align-items:flex-end}.sm:gap-3{gap:0.75rem}.sm:gap-4{gap:1rem}.sm:self-auto{align-self:auto}.sm:p-10{padding:2.5rem}.sm:p-8{padding:2rem}.sm:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm:text-2xl{font-size:1.5rem;line-height:2rem}.sm:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm:text-base{font-size:1rem;line-height:1.5rem}.sm:text-lg{font-size:1.125rem;line-height:1.75rem}.sm:text-sm{font-size:0.875rem;line-height:1.25rem}}@media (min-width: 768px){.md:inline-flex{display:inline-flex}.md:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media (min-width: 1024px){.lg:col-span-4{grid-column:span 4 / span 4}.lg:col-span-5{grid-column:span 5 / span 5}.lg:col-span-7{grid-column:span 7 / span 7}.lg:col-span-8{grid-column:span 8 / span 8}.lg:grid-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr))}.lg:grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.lg:gap-12{gap:3rem}.lg:p-10{padding:2.5rem}.lg:px-8{padding-left:2rem;padding-right:2rem}.lg:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg:text-5xl{font-size:3rem;line-height:1}}
Tuyên Ngôn Cam Kết Chất Lượng Độc Quyền
Bộ Ba Quyền Năng Khai Phá Tư Duy & Làm Chủ Thị Trường Chứng Khoán
Được đánh giá là “bộ kinh thánh bắt buộc của giới đầu cơ tăng trưởng”, bộ ba cuốn sách đưa bạn từ một nhà đầu tư non trẻ hay hoang mang trở thành nhà giao dịch có kỷ luật thép, sở hữu hệ thống sàng lọc cổ phiếu định lượng chuẩn xác và triết lý quản trị rủi ro cấp độ vô địch.
Bản quyền chuẩn Happy Live & NXB Uy tín, giấy in chuẩn, đồ thị nét căng
Tích hợp 2 phương pháp giao dịch sinh lời nhất lịch sử phố Wall
Áp dụng trực tiếp vào biến động sàn HOSE, HNX và UPCoM
Nhận trọn bộ cẩm nang + Tặng kèm bản ghi chép danh mục mẫu khi mua ngay trên Shopee hôm nay.
GIẢM 53%
Đã bán 3.420+ combo tháng qua
4.9/5 (2.4k đánh giá)
Top #1 Bộ Sách Chứng Khoán Bán Chạy Nhất
Combo 3 Cuốn: Làm Giàu Từ Chứng Khoán + Hướng Dẫn Thực Hành CANSLIM + Cách Tư Duy & Giao Dịch Như Một Nhà Vô Địch
Tác giả: William J. O’Neil, Matthew Galgani & Mark Minervini (Phù thủy sàn chứng khoán 2 lần vô địch US Investing Championship).
Đánh giá từ Chuyên gia Quản lý Quỹ Đầu tư:
“Nếu chỉ được chọn duy nhất một combo sách để sống sót và kiếm được bộn tiền trên thị trường chứng khoán Việt Nam qua mọi chu kỳ bò – gấu, thì combo này là câu trả lời trọn vẹn nhất. O’Neil cho bạn hệ thống tìm siêu cổ phiếu (CANSLIM), còn Minervini trao cho bạn bản năng sinh tồn và kỷ luật cắt lỗ dứt khoát.”
1.050.000 ₫
Tiết kiệm 555.000 ₫
Flash Sale Kết Thúc Sau:
Chỉ còn 19 suất ưu đãi
MUA NGAY TRÊN SHOPEE VỚI GIÁ GIẢM 53%
Đổi trả miễn phí 7 ngày
Bảng Tham Khảo So Sánh Giá Thực Tế
Top 10 Sách Chứng Khoán Kinh Điển Nên Có Cùng Combo Này
Dữ liệu giá gốc, giá khuyến mại thực tế và tỷ lệ giảm giá cập nhật mới nhất từ thị trường.
Đã kiểm định giá tốt nhất
| STT & Tác phẩm | Ảnh minh họa | Nội dung cốt lõi | Giá gốc | Giá ưu đãi | Mức giảm | Tìm trên Shopee |
|---|---|---|---|---|---|---|
|
1. Bộ Đôi Làm Giàu Từ Chứng Khoán + Thực Hành CANSLIM William O’Neil & Matthew Galgani |
|
Bản tiêu chuẩn 2 tập gồm lý thuyết CANSLIM và sổ tay thực hành vẽ mẫu hình biểu đồ. | 700.000 ₫ | 455.000 ₫ | -35% |
SHOPEE
|
|
2. Giao Dịch Như Một Phù Thủy Chứng Khoán Mark Minervini |
|
Kỹ thuật tìm điểm vào lệnh VCP (thu hẹp độ biến động) và duy trì tỷ lệ R:R hoàn hảo. | 380.000 ₫ | 275.000 ₫ | -28% |
SHOPEE
|
|
3. Cách Kiếm Lợi Nhuận 18.000% Từ Thị Trường Chứng Khoán Chris Kacher & Gil Morales |
|
Đệ tử chân truyền của O’Neil chia sẻ kỹ thuật điểm mua sớm Pocket Pivot cực đỉnh. | 450.000 ₫ | 335.000 ₫ | -26% |
SHOPEE
|
|
4. Làm Giàu Từ Chứng Khoán Bằng Phương Pháp VSA Wyckoff Chính Gốc Rubén Villahermosa Chaves |
|
Giải mã hành vi gom hàng và đẩy giá của tay to (Smart Money) qua 4 chu kỳ tích lũy. | 499.000 ₫ | 369.000 ₫ | -26% |
SHOPEE
|
|
5. Phương Pháp VPA – Kỹ Thuật Nhận Diện Dòng Tiền Giá & Khối Lượng Anna Coulling |
|
Cẩm nang đọc vị sự bất thường giữa Spread nến và Volume, nhận biết bẫy Bull Trap. | 320.000 ₫ | 239.000 ₫ | -25% |
SHOPEE
|
|
6. Tuyệt Kỹ Giao Dịch Bằng Đồ Thị Nến Nhật Steve Nison |
|
Tác phẩm đặt nền móng cho trường phái nến phương Đông: Doji, Búa ngược, Nhấn chìm. | 350.000 ₫ | 259.000 ₫ | -26% |
SHOPEE
|
|
7. Hệ Thống Giao Dịch Mây Ichimoku Charts Nicole Elliott |
|
Công cụ cân bằng xu hướng một ánh nhìn giúp bắt nhịp sóng trung và dài hạn. | 280.000 ₫ | 210.000 ₫ | -25% |
SHOPEE
|
|
8. Nhà Đầu Tư Thông Minh (The Intelligent Investor) Benjamin Graham |
|
Triết lý đầu tư giá trị kinh điển, biên an toàn (Margin of Safety) mà Warren Buffett tôn sùng. | 290.000 ₫ | 215.000 ₫ | -26% |
SHOPEE
|
|
9. Cổ Phiếu Thường Lợi Nhuận Phi Thường Philip Fisher |
|
15 tiêu chí Scuttlebutt chọn doanh nghiệp xuất sắc có tiềm năng tăng giá bằng lần. | 199.000 ₫ | 149.000 ₫ | -25% |
SHOPEE
|
|
10. Tâm Lý Thị Trường Chứng Khoán George Charles Selden |
|
Làm chủ lòng tham và nỗi sợ hãi, bí quyết không bao giờ FOMO đu đỉnh hoảng loạn bán đáy. | 180.000 ₫ | 135.000 ₫ | -25% |
SHOPEE
|
•
Thời gian đọc: 18 phút
•
Cập nhật mới nhất hôm nay
Phân Tích Chuyên Sâu: Tại Sao Combo 3 Cuốn Sách Này Là “Kim Chỉ Nam” Cho Bất Kỳ Nhà Đầu Tư Nào Muốn Kiếm Tiền Bền Vững?
Trên thị trường tài chính khốc liệt, hơn 90% nhà đầu tư cá nhân thua lỗ không phải vì họ thiếu thông tin, mà vì họ thiếu một hệ thống phương pháp luận nhất quán và không có kỷ luật kiểm soát rủi ro. Combo 3 cuốn sách này chính là lời giải trọn vẹn được đúc kết từ hơn 50 năm thực chiến thành công vang dội tại Phố Wall.
Cuốn 1: “Làm Giàu Từ Chứng Khoán” (How to Make Money in Stocks) – William J. O’Neil
William J. O’Neil – nhà sáng lập nhật báo tài chính lừng danh Investor’s Business Daily (IBD) – đã nghiên cứu hơn 1.000 siêu cổ phiếu chiến thắng lớn nhất trong lịch sử Mỹ từ năm 1880 đến nay để đúc kết ra hệ thống đầu tư CANSLIM. Đây là phương pháp phối hợp hoàn hảo giữa Phân Tích Cơ Bản (FA) để chọn lọc doanh nghiệp dẫn đầu và Phân Tích Kỹ Thuật (TA) để định thời điểm mua tối ưu.
Tăng trưởng lợi nhuận quý hiện tại đạt tối thiểu 25% – 50% so với cùng kỳ.
Tăng trưởng lợi nhuận hàng năm liên tục 3-5 năm, ROE đạt trên 17%.
Sản phẩm mới, ban lãnh đạo mới hoặc đỉnh giá mới bứt phá từ nền giá.
Quy luật cung cầu, khối lượng bùng nổ vượt trội tại điểm Pivot vượt đỉnh.
Chỉ mua cổ phiếu dẫn dắt thị trường, có chỉ số sức mạnh giá RS > 80.
Sự bảo trợ của nhà đầu tư tổ chức, quỹ lớn, tự doanh gom hàng âm thầm.
Xác định xu hướng thị trường chung, chỉ giải ngân trong Uptrend có xác nhận.
Tự động bán dứt khoát khi giá giảm 7% – 8% từ điểm mua hợp lý!
Cuốn 2: “Hướng Dẫn Thực Hành CANSLIM Cho Người Mới Bắt Đầu” – Matthew Galgani
Nếu cuốn sách gốc của O’Neil cung cấp khung lý thuyết đồ sộ, thì cuốn sách thực hành này của Matthew Galgani chính là “quyển cẩm nang cầm tay chỉ việc”. Tác giả đã biến những nguyên lý phức tạp thành checklist từng bước cực kỳ tinh gọn:
- Cách nhận diện các mẫu hình giá kinh điển: Cốc tay cầm (Cup with Handle), Nền giá phẳng (Flat Base), Hai đáy (Double Bottom), và Nền giá dốc lên.
- Xây dựng thói quen hàng ngày & hàng tuần: Cách quét danh sách cổ phiếu trong 15 phút mỗi tối mà không bị choáng ngợp bởi hàng nghìn mã trên sàn.
- Checklist 3 bước trước khi đặt lệnh mua: Loại bỏ hoàn toàn sự cảm tính, tin đồn room phím hàng hay tin tức báo chí giật gân.
- Chiến lược chốt lãi 20% – 25%: Cách hiện thực hóa lợi nhuận định kỳ để gộp lãi kép thần tốc và bảo toàn thành quả.
Cuốn 3: “Cách Tư Duy Và Giao Dịch Như Một Nhà Vô Địch Đầu Tư Chứng Khoán” – Mark Minervini
Mark Minervini – người từng vô địch giải U.S. Investing Championship với tỷ suất lợi nhuận bình quân hàng năm lên tới 220% – mang đến mảnh ghép quan trọng nhất: Tâm lý giao dịch và Quản trị rủi ro chuyên nghiệp. Minervini không ngần ngại vạch trần những sai lầm chết người mà 99% nhà đầu tư mắc phải:
Không Bao Giờ Bình Quân Giá Xuống
Hành động mua thêm cổ phiếu đang lỗ chính là liều thuốc độc nhanh nhất đẩy tài khoản vào bờ vực cháy túi.
Mô Hình VCP Độc Quyền
Mô hình thu hẹp biến động giá giúp bạn mua ngay trước khi cổ phiếu bùng nổ, giảm thiểu thời gian chờ đợi chôn vốn.
Tỷ Lệ Lợi Nhuận / Rủi Ro (R:R)
Chỉ cần đúng 50% số lần giao dịch nhưng với tỷ lệ R:R tối thiểu 2:1 hoặc 3:1, tài khoản của bạn vẫn sẽ tăng trưởng phi mã.
Video Phân Tích Thực Chiến Phương Pháp CANSLIM & Tóm Tắt Tác Phẩm
Xem video phân tích sinh động về mô hình tìm kiếm siêu cổ phiếu và bí kíp vận hành của O’Neil (nhấn nút Play để chuyển hướng xem trực tiếp trên YouTube):
Bạn Đã Sẵn Sàng Thay Đổi Kết Quả Đầu Tư Của Mình?
Một khoản thua lỗ trên thị trường chứng khoán có thể cướp đi hàng chục, hàng trăm triệu đồng chỉ trong vài phiên. Nhưng đầu tư vào bộ tri thức này chỉ tốn chưa bằng một bữa ăn gia đình.
Câu Hỏi Thường Gặp Của Độc Giả (FAQ)
1. Tôi là nhà đầu tư mới (F0) chưa có kiến thức tài chính có tiếp thu được không?
Chắc chắn có. Cuốn sách được viết với ngôn từ bình dân, dễ hiểu, tránh các thuật ngữ học thuật khô khan. Hơn 100 biểu đồ trực quan trong cuốn thực hành giúp bạn nhìn thấy rõ từng nến, từng điểm mua cụ thể mà không cần có bằng tài chính ngân hàng.
2. Sách in chất lượng thế nào? Có phải sách photo hay lậu không?
Cam kết 100% sách mới, bìa chuẩn đẹp, giấy xịn xốp nhẹ chống lóa mắt khi đọc lâu, đồ thị nến và các chỉ số in sắc nét. Độc giả được quyền kiểm tra hàng khi nhận trước khi thanh toán trên sàn.
3. Thời gian giao hàng trên Shopee là bao lâu?
Hàng luôn có sẵn tại kho. Nếu ở nội thành Hà Nội hoặc TP.HCM, bạn có thể nhận sách Hỏa Tốc trong 2 giờ hoặc thông thường chỉ từ 1 – 2 ngày làm việc.
// Initialize Lucide icons
lucide.createIcons();
// API Config State in memory
let configEndpoint = “https://khuyendung.net/App/API/addNewPostFromGemini.php”;
let configSecretKey = “123456”;
function openApiModal() {
document.getElementById(‘apiEndpointInput’).value = configEndpoint;
document.getElementById(‘apiSecretKeyInput’).value = configSecretKey;
const modal = document.getElementById(‘apiConfigModal’);
modal.classList.remove(‘hidden’);
modal.classList.add(‘flex’);
}
function closeApiModal() {
const modal = document.getElementById(‘apiConfigModal’);
modal.classList.add(‘hidden’);
modal.classList.remove(‘flex’);
}
function saveApiConfig() {
configEndpoint = document.getElementById(‘apiEndpointInput’).value.trim();
configSecretKey = document.getElementById(‘apiSecretKeyInput’).value.trim();
closeApiModal();
showNotice(“Thành công”, “Đã lưu thông tin cấu hình API Export2Khuyendung!”, true);
}
function showNotice(title, message, isSuccess = true) {
const modal = document.getElementById(‘noticeModal’);
const iconDiv = document.getElementById(‘noticeIcon’);
document.getElementById(‘noticeTitle’).innerText = title;
document.getElementById(‘noticeMessage’).innerText = message;
if (isSuccess) {
iconDiv.className = “w-14 h-14 mx-auto rounded-full flex items-center justify-center text-emerald-600 bg-emerald-100″;
iconDiv.innerHTML = ”;
} else {
iconDiv.className = “w-14 h-14 mx-auto rounded-full flex items-center justify-center text-red-600 bg-red-100″;
iconDiv.innerHTML = ”;
}
modal.classList.remove(‘hidden’);
modal.classList.add(‘flex’);
}
function closeNoticeModal() {
const modal = document.getElementById(‘noticeModal’);
modal.classList.add(‘hidden’);
modal.classList.remove(‘flex’);
}
// Export to Khuyendung API
async function exportToKhuyendung() {
const articleTitle = “Combo 3 Cuốn Sách: Làm Giàu Từ Chứng Khoán + Thực Hành CANSLIM + Cách Tư Duy Và Giao Dịch Như Một Nhà Vô Địch Đầu Tư Chứng Khoán”;
const pageHtmlContent = document.documentElement.outerHTML;
const payload = {
secret_key: configSecretKey,
title: articleTitle,
content: pageHtmlContent
};
try {
const response = await fetch(configEndpoint, {
method: “POST”,
headers: {
“Content-Type”: “application/json”
},
body: JSON.stringify(payload)
});
const textResp = await response.text();
let parsed;
try {
parsed = JSON.parse(textResp);
} catch(e) {
parsed = textResp;
}
const displayMsg = typeof parsed === ‘object’ ? JSON.stringify(parsed, null, 2) : parsed;
showNotice(“Phản Hồi Từ API”, `HTTP ${response.status}: ${displayMsg}`, response.ok);
} catch (error) {
showNotice(“Lỗi Kết Nối API”, `Không thể gửi dữ liệu: ${error.message}. Vui lòng kiểm tra lại cấu hình Endpoint hoặc mạng.`, false);
}
}
// Copy HTML Code Helper without using navigator.clipboard directly
function copyArticleHtml() {
const content = document.getElementById(‘articleContent’).outerHTML;
const tempTextarea = document.createElement(‘textarea’);
tempTextarea.value = content;
tempTextarea.style.position = ‘fixed’;
tempTextarea.style.left = ‘-9999px’;
document.body.appendChild(tempTextarea);
tempTextarea.select();
try {
document.execCommand(‘copy’);
showNotice(“Sao Chép Thành Công”, “Đã copy toàn bộ mã HTML của bài viết vào bộ nhớ tạm (Clipboard)!”);
} catch (err) {
showNotice(“Lỗi Sao Chép”, “Không thể copy tự động, vui lòng thử lại!”, false);
}
document.body.removeChild(tempTextarea);
}
// Countdown Timer Simulation (8h 42m 19s)
let totalSeconds = 8 * 3600 + 42 * 60 + 19;
let millis = 75;
setInterval(() => {
millis -= 7;
if (millis 0) {
totalSeconds–;
}
}
const hrs = Math.floor(totalSeconds / 3600);
const mins = Math.floor((totalSeconds % 3600) / 60);
const secs = totalSeconds % 60;
document.getElementById(‘hours’).innerText = hrs < 10 ? '0' + hrs : hrs;
document.getElementById('minutes').innerText = mins < 10 ? '0' + mins : mins;
document.getElementById('seconds').innerText = secs < 10 ? '0' + secs : secs;
document.getElementById('millis').innerText = millis < 10 ? '0' + millis : millis;
}, 70);