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()}
{/* Background Grid */} {/* Lines (BOS/CHoCH markers) */} {config.lines.map((line, idx) => ( {line.label} ))} {/* The Price Path */} {/* Labels */} {config.labels.map((lbl, idx) => ( {lbl.text} ))} {/* Points circles */} {config.points.split(' ').map((point, idx) => { const [cx, cy] = point.split(','); return })}
); }; // 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;