import React, { useState, useEffect } from 'react';
import {
TrendingUp,
TrendingDown,
Activity,
AlertTriangle,
CheckCircle,
XCircle,
BookOpen,
Eye,
Play,
ArrowRight,
Target
} from 'lucide-react';
// --- Components ---
// 1. Navigation Tabs
const Tabs = ({ activeTab, setActiveTab }) => {
const tabs = [
{ id: 'intro', label: '1. Khái Niệm', icon: BookOpen },
{ id: 'structure', label: '2. Cấu Trúc', icon: Activity },
{ id: 'bos_choch', label: '3. BOS & CHoCH', icon: TrendingUp },
{ id: 'trap', label: '4. Stop Hunt vs CHoCH', icon: AlertTriangle },
{ id: 'practice', label: '5. Thực Hành', icon: Target },
];
return (
{tabs.map((tab) => (
))}
);
};
// 2. SVG Chart Visualizer (The Core Feature)
const ChartVisualizer = ({ type }) => {
// SVG configurations based on type
const chartConfig = {
uptrend: {
points: "10,250 50,150 90,200 150,80 200,140 280,20",
labels: [
{ x: 50, y: 140, text: "HH" },
{ x: 90, y: 220, text: "HL" },
{ x: 150, y: 70, text: "HH" },
{ x: 200, y: 160, text: "HL" },
{ x: 280, y: 15, text: "HH" }
],
lines: [],
color: "#10b981" // Green
},
downtrend: {
points: "10,50 60,150 110,100 180,220 230,170 290,280",
labels: [
{ x: 60, y: 170, text: "LL" },
{ x: 110, y: 90, text: "LH" },
{ x: 180, y: 240, text: "LL" },
{ x: 230, y: 160, text: "LH" },
{ x: 290, y: 300, text: "LL" }
],
lines: [],
color: "#ef4444" // Red
},
bos: {
points: "10,220 60,120 100,180 180,60 220,140 290,30",
labels: [
{ x: 60, y: 110, text: "HH (Cũ)" },
{ x: 180, y: 50, text: "HH (Mới)" },
{ x: 200, y: 100, text: "BOS" } // Label for line
],
lines: [
{ x1: 60, y1: 120, x2: 300, y2: 120, type: "dashed", label: "BOS" }
],
color: "#3b82f6" // Blue
},
choch: {
points: "10,250 60,150 110,200 170,100 220,240 280,180",
// Uplift -> Drop below HL
labels: [
{ x: 60, y: 140, text: "HH" },
{ x: 110, y: 220, text: "HL (Key)" },
{ x: 170, y: 90, text: "HH" },
{ x: 220, y: 260, text: "LL" },
{ x: 250, y: 230, text: "CHoCH" }
],
lines: [
{ x1: 110, y1: 200, x2: 300, y2: 200, type: "solid", color: "#ef4444", label: "CHoCH Line" }
],
color: "#f59e0b" // Amber/Warning
},
stophunt: {
points: "10,200 60,120 100,180 160,110 180,115 200,190 280,250",
// Sweep high then crash
labels: [
{ x: 60, y: 110, text: "Equal Highs" },
{ x: 160, y: 100, text: "Sweep!" },
{ x: 160, y: 80, text: "Stop Hunt" }
],
lines: [
{ x1: 60, y1: 120, x2: 180, y2: 120, type: "dashed", label: "Liq" }
],
color: "#8b5cf6" // Purple
}
};
const config = chartConfig[type] || chartConfig.uptrend;
return (
Mô phỏng: {type.toUpperCase()}
);
};
// 3. Content Cards
const InfoCard = ({ title, children, type = "neutral" }) => {
const styles = {
neutral: "border-slate-700 bg-slate-800/50",
success: "border-green-800 bg-green-900/10",
danger: "border-red-800 bg-red-900/10",
warning: "border-amber-800 bg-amber-900/10",
accent: "border-blue-800 bg-blue-900/10"
};
return (
{children.icon && }
{title}
{children}
);
};
// --- Main Application ---
const App = () => {
const [activeTab, setActiveTab] = useState('intro');
const [checklist, setChecklist] = useState({
chart: false,
marking: false,
bos: false,
choch: false
});
const toggleCheck = (key) => {
setChecklist(prev => ({...prev, [key]: !prev[key]}));
};
return (
{/* Header */}
ICT Trading Mastery
BÀI 2: MARKET STRUCTURE
ICT Mentorship
{/* Main Content */}
{/* Left/Center Column - Content */}
{activeTab === 'intro' && (
Định nghĩa: Cách giá tạo đỉnh và đáy theo thời gian.
- Thị trường chỉ có 3 trạng thái: Tăng, Giảm, Sideway.
- ICT không đoán giá, ICT đọc cấu trúc hiện tại.
Xu Hướng Tăng
- HH Higher High
- HL Higher Low
- Đáy sau cao hơn đáy trước
Xu Hướng Giảm
- LL Lower Low
- LH Lower High
- Đỉnh sau thấp hơn đỉnh trước
)}
{activeTab === 'structure' && (
)}
{activeTab === 'bos_choch' && (
Ý nghĩa: Tiếp diễn xu hướng.
Khi giá phá qua đỉnh cũ (trong uptrend) hoặc đáy cũ (trong downtrend). Khẳng định phe mua/bán vẫn đang kiểm soát.
Ý nghĩa: Cảnh báo đổi hướng.
Xảy ra khi giá phá cấu trúc ngược chiều đầu tiên (VD: Đang tăng mà phá HL gần nhất).
📌 Lưu ý: CHoCH không có nghĩa là đảo chiều ngay lập tức, mà là "quyền kiểm soát đang thay đổi".
)}
{activeTab === 'trap' && (
STOP HUNT vs CHoCH
Đây là nơi 90% trader mất tiền. Đừng nhầm lẫn giữa việc "quét thanh khoản" và "đổi cấu trúc".
❌ Stop Hunt (Quét)
- Giá phá đỉnh nhưng rút chân nhanh.
- KHÔNG phá cấu trúc quan trọng đối diện.
- Mục đích: Lấy thanh khoản để đi tiếp xu hướng cũ.
✅ CHoCH (Đổi thật)
- Phá hẳn qua HL (trong xu hướng tăng).
- Thân nến đóng cửa rõ ràng.
- Thường xảy ra SAU khi đã có Stop Hunt.
KHÔNG BAO GIỜ VÀO LỆNH NGƯỢC XU HƯỚNG
nếu CHƯA có CHoCH
)}
{activeTab === 'practice' && (
Bài Tập Về Nhà (5 Ngày)
Mở chart H1 hoặc M15. Tuyệt đối KHÔNG TRADE. Chỉ làm các bước sau:
{[
{ id: 'chart', text: 'Mở biểu đồ (H1/M15), xác định 1 xu hướng rõ ràng' },
{ id: 'marking', text: 'Đánh dấu đỉnh đáy: HH-HL hoặc LH-LL' },
{ id: 'bos', text: 'Khoanh tròn các điểm BOS (Tiếp diễn)' },
{ id: 'choch', text: 'Tìm điểm CHoCH (Nếu có) và tự hỏi: Đây là Stop Hunt hay CHoCH?' }
].map((item) => (
toggleCheck(item.id)}
className={`flex items-center gap-4 p-4 rounded-lg border cursor-pointer transition-all ${
checklist[item.id]
? 'bg-green-900/20 border-green-600'
: 'bg-slate-800 border-slate-700 hover:border-slate-500'
}`}
>
{checklist[item.id]
?
:
}
{item.text}
))}
💡 Ghi chú tư duy
"ICT không Sell vì giá cao. ICT Sell vì cấu trúc đã đổi."
)}
{/* Right Column - Quick Summary / Sticky Sidebar */}
Từ Khóa Bài 2
HH/HL
Uptrend
LH/LL
Downtrend
BOS
Tiếp diễn
CHoCH
Đảo chiều
Stop Hunt
Bẫy giá
{/* Mini Quiz Context */}
Bạn có nhớ?
Điều kiện tiên quyết để vào lệnh ngược xu hướng là gì?
);
};
export default App;