KINH NGHIỆM XỬ LÝ ĐIỀU KIỆN LỌC CỔ PHIẾU
Hôm nay mình sẽ giới thiệu và giải thích một số hàm hay dùng để xử lý bộ lọc cổ phiếu trong Amibroker. Khi code trên Amibroker người lập trình nên có tư duy về xử lý với mảng, hạn chế dùng vòng lặp để xử lý vì sẽ làm chậm hệ thống và code cũng sẽ rất dài và khó hiểu hơn, chỉ sử dụng vòng lặp khi thật cần thiết. Trước khi tiến hành code điều kiện nào đó nên tìm trong phần help đã có hàm sẵn hay không.
IF-ELSE: PHÂN BIỆT VỚI IIF VÀ WRITEIF
Hàm điều kiện if else sẽ xử lý với từng phần tử trong mảng do đó kết quả trả về sẽ là một phần tử. Hàm if không xử lý trực tiếp cho mảng được.
|
1 2 3 4 |
<span class="token keyword">if</span><span class="token punctuation">(</span> array<span class="token punctuation">[</span> BarCount <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token operator">></span> <span class="token number">0</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// xử lý</span> <span class="token punctuation">}</span> |
Hàm IIF (ImmediateIf) làm hàm xử lý điều kiện tương tự như if nhưng nó xử lý so sánh điều kiện và trả về kết quả là một mảng số. Trong code xây dựng bộ lọc cổ phiếu hàm IIF sẽ được sử dụng khá nhiều.
Lưu ý hàm IIF sẽ bị lỗi nếu đưa vào mảng kiểu chuỗi.
Nếu muốn xử lý điều kiện để trả kết quả về kiểu chuỗi (string) thì ta dùng hàm WriteIf
|
1 2 3 |
<span class="token function">IIf</span><span class="token punctuation">(</span> Điều kiện<span class="token punctuation">,</span> Mảng số nếu đúng<span class="token punctuation">,</span> Mảng số nếu sai<span class="token punctuation">)</span> <span class="token function">WriteIf</span><span class="token punctuation">(</span> Điều kiện<span class="token punctuation">,</span> Chuỗi nếu đúng<span class="token punctuation">,</span> Chuỗi nếu sai<span class="token punctuation">)</span> |
REF: LẤY GIÁ TRỊ QUÁ KHỨ / TƯƠNG LAI CỦA 1 MẢNG
|
1 2 3 4 5 |
<span class="token function">Ref</span><span class="token punctuation">(</span> Mảng<span class="token punctuation">,</span> phiên<span class="token punctuation">)</span> <span class="token comment">//Lấy giá đóng cửa phiên trước</span> <span class="token function">Ref</span><span class="token punctuation">(</span> C<span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token comment">//Lấy giá đóng cửa của 5 phiên trước</span> <span class="token function">Ref</span><span class="token punctuation">(</span> C<span class="token punctuation">,</span> <span class="token operator">-</span><span class="token number">5</span><span class="token punctuation">)</span> |
VALUEWHEN: LẤY GIÁ TRỊ MỘT MẢNG KHI THOẢ ĐIỀU KIỆN
|
1 |
<span class="token function">ValueWhen</span><span class="token punctuation">(</span>Điều kiện<span class="token punctuation">,</span> mảng<span class="token punctuation">)</span> |
|
1 2 3 4 5 6 7 8 9 |
<span class="token comment">//Ví dụ: lấy giá cao nhất tại điểm bùng nổ</span> DiemNo <span class="token operator">=</span> Close<span class="token operator">></span>Open <span class="token comment">//Gia dong cua lon hon gia mo cua</span> <span class="token class-name">AND</span> Close <span class="token operator">>=</span> <span class="token number">1.02</span> <span class="token operator">*</span> <span class="token function">Ref</span><span class="token punctuation">(</span>Close<span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token comment">//Gia tang 2%</span> <span class="token class-name">AND</span> Volume<span class="token operator">*</span>Close <span class="token operator">></span><span class="token number">1.2</span><span class="token operator">*</span><span class="token function">Ref</span><span class="token punctuation">(</span>Volume<span class="token operator">*</span>Close<span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token comment">//Gia Tri tang 20%</span> <span class="token punctuation">;</span> DiemnoHigh <span class="token operator">=</span> <span class="token function">ValueWhen</span><span class="token punctuation">(</span>DiemNo<span class="token punctuation">,</span>H<span class="token punctuation">)</span><span class="token punctuation">;</span> |
BARINDEX: TRẢ VỀ VỊ TRÍ CỦA PHIÊN GIAO DỊCH
Ví dụ tính số phiên (bar) giao dịch từ nến có Điểm Nổ đến bar đang xử lý
|
1 |
SoPhienGD <span class="token operator">=</span> <span class="token function">BarIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token function">ValueWhen</span><span class="token punctuation">(</span>DiemNo <span class="token punctuation">,</span> <span class="token function">BarIndex</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
BARSSINCE: TÍNH SỐ PHIÊN GIAO DỊCH TỪ ĐIỂM THOẢ ĐIỀU KIỆN
|
1 |
SoPhienGD <span class="token operator">=</span> <span class="token function">BarsSince</span><span class="token punctuation">(</span>DiemNo<span class="token punctuation">)</span><span class="token punctuation">;</span> |
SETFOREIGN: XỬ LÝ VỚI DỮ LIỆU GIAO DỊCH CỦA MÃ CHỨNG KHOÁN KHÁC
|
1 2 3 |
<span class="token function">SetForeign</span><span class="token punctuation">(</span><span class="token string">"VN30"</span><span class="token punctuation">,</span>True<span class="token punctuation">,</span>True<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Xử lý với dữ liệu giao dịch của chỉ số VN30</span> <span class="token function">RestorePriceArrays</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
LẤY GIÁ TRỊ LỚN NHẤT / BÉ NHẤT TRONG MẢNG (HHV LLV)
|
1 2 3 4 5 |
<span class="token comment">//Lấy giá trị lớn nhất</span> <span class="token function">HHV</span><span class="token punctuation">(</span> Mảng<span class="token punctuation">,</span> chu kỳ<span class="token punctuation">)</span> <span class="token comment">//Lấy giá trị bé nhất</span> <span class="token function">LLV</span><span class="token punctuation">(</span> Mảng<span class="token punctuation">,</span> chu kỳ<span class="token punctuation">)</span> |
|
1 2 3 4 5 |
<span class="token comment">//Lấy giá lớn nhất 5 phiên</span> GiaVuot1W <span class="token operator">=</span> Close<span class="token operator">></span><span class="token function">Ref</span><span class="token punctuation">(</span><span class="token function">HHV</span><span class="token punctuation">(</span>High<span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//Lấy giá bé nhất 5 phiên</span> GiaThap1W <span class="token operator">=</span> Close<span class="token operator"><</span><span class="token function">Ref</span><span class="token punctuation">(</span><span class="token function">LLV</span><span class="token punctuation">(</span>Low<span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
SO SÁNH 2 MẢNG (MIN MAX)
|
1 2 3 4 5 |
<span class="token comment">//Lấy mảng lớn hơn</span> <span class="token function">Max</span><span class="token punctuation">(</span> Mảng <span class="token number">1</span><span class="token punctuation">,</span> Mảng <span class="token number">2</span> <span class="token punctuation">)</span> <span class="token comment">//Lấy mảng nhỏ hơn</span> <span class="token function">Min</span><span class="token punctuation">(</span> Mảng <span class="token number">1</span><span class="token punctuation">,</span> Mảng <span class="token number">2</span><span class="token punctuation">)</span> |
CROSS: KIỂM TRA ĐIỂM CẮT NHAU GIỮA 2 ĐƯỜNG
|
1 |
<span class="token function">Cross</span><span class="token punctuation">(</span> Đường <span class="token number">1</span><span class="token punctuation">,</span> Đường <span class="token number">2</span><span class="token punctuation">)</span> |
|
1 2 |
<span class="token comment">//Kiểm tra điểm cắt giữa 2 đường MA20 và MA50</span> DiemCat <span class="token operator">=</span> <span class="token function">Cross</span><span class="token punctuation">(</span><span class="token function">MA</span><span class="token punctuation">(</span>C<span class="token punctuation">,</span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token function">MA</span><span class="token punctuation">(</span>C<span class="token punctuation">,</span><span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
Lưu ý: Cross(MA(C,20),MA(C,50)) sẽ khác với Cross(MA(C,50),MA(C,20))
Cross(MA(C,20),MA(C,50)): đường MA20 sẽ nằm trên MA50 và ngược lại
SUM: TÍNH TỔNG GIÁ TRỊ THOẢ ĐIỀU KIỆN TRONG 1 CHU KỲ
|
1 |
<span class="token function">Sum</span><span class="token punctuation">(</span> Mảng<span class="token punctuation">,</span> chu kỳ<span class="token punctuation">)</span> |
|
1 2 3 4 5 |
<span class="token comment">//Tính tổng khối lượng khớp lệnh trong 5 ngày</span> <span class="token function">Sum</span><span class="token punctuation">(</span> V<span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span> <span class="token comment">//Tính tổng phiên tăng giá trong 10 ngày</span> <span class="token function">Sum</span><span class="token punctuation">(</span> C<span class="token operator">></span><span class="token function">Ref</span><span class="token punctuation">(</span>C<span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token comment">//Lưu ý: trong Amibroker giá trị True tương đương 1, False tương đương 0</span> |
EXREM: LOẠI BỎ TÍN HIỆU TRÙNG LẮP
|
1 |
<span class="token function">ExRem</span><span class="token punctuation">(</span> Mảng <span class="token number">1</span><span class="token punctuation">,</span> Mảng <span class="token number">2</span><span class="token punctuation">)</span> |
|
1 2 3 |
<span class="token comment">//Loại bỏ tín hiệu mua liên tục cho tới khi có tín hiệu bán và ngược lại</span> buy <span class="token operator">=</span> <span class="token function">ExRem</span><span class="token punctuation">(</span> buy<span class="token punctuation">,</span> sell <span class="token punctuation">)</span><span class="token punctuation">;</span> sell <span class="token operator">=</span> <span class="token function">ExRem</span><span class="token punctuation">(</span> sell<span class="token punctuation">,</span> buy <span class="token punctuation">)</span><span class="token punctuation">;</span> |
KIỂM TRA GIÁ GIAO DỊCH CÓ HỞ GAP KHÔNG
|
1 2 3 4 |
<span class="token comment">//Kiểm tra tăng hở Gap</span> <span class="token function">GapUp</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//Kiểm tra giảm hở Gap</span> <span class="token function">Gapdown</span><span class="token punctuation">(</span><span class="token punctuation">)</span> |
INSIDE: KIỂM TRA NẾN TRONG NẾN
|
1 2 3 4 |
<span class="token comment">//Kiểm tra nến biến động trong nến hôm qua</span> <span class="token function">Inside</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">//Kiểm tra nến biến động ngoài nến hôm qua</span> <span class="token function">outside</span><span class="token punctuation">(</span><span class="token punctuation">)</span> |
