You are on page 1of 8

Hướng dẫn code đơn giản Amibroker (P1)

Chào mọi người, em xin chia sẻ chút ít mà em có tự mày mò được về vấn đề trên. Vì em tìm hiểu, cóp
nhặt công thức linh ta linh tinh nên bài viết sơ sài và thiếu chính thống. Em sẽ cố gắng đơn giản và dễ
hiểu nhất. Đêm hôm rảnh rỗi các bác đọc dòng nào nhảm thì lướt qua phần đầu, xem 3 cái hình với
chú thích thôi, nhé!

Trước tiên em xin phép lan man tí: Vì sao em lại biết đến cái trò cốt kiếc này? Lúc mới sử dụng Ami, em
bị dị ứng màu trắng. Mà các bác cũng biết mấy phiên bản Ami trước đây thì phông toàn màu trắng, nên
em phải đổi sang phông đen. Các in đi cầy tơ thì màu sắc nó lại phù hợp với màu trắng, mỗi lần kéo ra
kéo vô lại phải chỉnh. Em bực mình google mấy hồi thì ra cái này, chính là cái chỉnh sửa nội dung
indicator. Hay quá đỡ phải chỉnh màu mỗi lần kéo ra kéo vô.

À, nếu muốn chỉnh sửa một con cầy tơ có sẵn, lích phải vào nó rồi edit

Ồ nó hiện ra cái bảng này. Em éo thích màu xích lô, em sửa thành vàng, để style đậm đà (styleThick) cho
phong cách, nhìn cho rõ. Xong save lại là lần sau có màu vàng phong cách rồi.

Còn nếu bác nào muốn nuôi một em cầy tơ mới để thử phương pháp trading, thì thế này. Các bác tìm
cái búa Người phán xử nhé. Nó cũng lòi ra cái cửa số giống hình trên nhưng mà còn trinh nguyên.
Em lan man thế hết xừ một trang Microsoft doc rồi. Thôi giờ đi vào mấy khái niệm.

Ngôn ngữ Amibroker, Amibroker Formula Language hay AFL. Bác nào rảnh cứ Google code afl amibroker
ra đầy một lũ. Nhưng không có chén thánh đâu nhé. Nhìn thì hay nhưng biết nó hoạt động thế nào vẫn
hơn.

À còn một hình nữa là xong thủ tục giới thiệu cửa sổ code nhé các anh em yêu quý

Các mảng cơ bản


Trước tiên là giá và khối lượng. Bọn lập trình nó gọi là Mảng hay Array. Thôi mình dân chứng cháo cứ giá
và vol là ok.

O là Open – giá mở cửa trong ngày

H là High – giá cao nhất trong ngày

L là Low – giá thấp nhất trong ngày

C là Close – giá đóng cửa

V là Volumne – khối lượng giao dịch ngày

Giá cao nhất trong 10 ngày: HHV(H,10); (Cao nhất trong 10 mức giá cao)

Giá thấp nhất trong 10 ngày: LLV(L,10); (Thấp nhất trong 10 mức giá thấp)

Giá đóng cửa thấp nhất trong 10 ngày: LLV(C,10);

Tham chiếu và Tham số


Cái này tôi thấy hay dùng (không xưng em với các bác nữa).
Hàm tham chiếu (Reference): công thức Ref( ARRAY, period );

Ví dụ Giá đóng cửa ngày hôm qua gán cho biến C1. Tên biến đặt thế nào cũng được. Ví dụ:

À các bác mở trên Menu Analysis -> Formula Editor hình cái búa như tôi đã nói ở trên nhé.

Có nghĩa là nếu em “nói” (viết công thức) là C>EmLan; nghĩa là giá hôm nay lớn hơn em Lan (Giá đóng
hôm qua). Còn nếu giá hôm trước thì là -2, hôm trước nữa là -3, hôm kía hôm kìa thì tiếp tục..

Anh em để ý là nếu viết đúng, Ami sẽ tự nhận ra ngôn ngữ của nó và làm cho chữ đổi màu, chuyển đậm,
để phân biệt với những tên hay thông số mà người dùng tự đặt.

Chú ý: Dấu chấm phẩy. Dấu chẩm phẩy là quan trọng. Cứ hỏi bọn lập trình
Dấu chấm phẩy CUỐI DÒNG là rõ nó phiền thế nào nếu chót quên.
Hàm tham số (Parameters): Công thức

Anh em xem trang dưới nhé, trang này chật rồi.


Param( ''name'', defaultval, min, max, step);

Lần lượt: Tên, giá trị mặc định, giá trị nhỏ nhất, giá trị lớn nhất, bước nhảy (ví dụ đặt 1 thì là từ 1
lên 2, đặt là 2 thì từ 1 lên 3, đặt là 10000000 thì là từ 1 lên giời. Thôi các bạn cứ đặt là 1. Còn đặt cao là
để đỡ mất thời gian nếu muốn Optimized – tối ưu hóa code, mình sẽ trình bày sau!)

Ví dụ: Thoigian = Param("Loi cu ta ve",-15,-100,100,1);

Các bác viết tiếp như hình, đặt tên rồi Save lại. Ở phần Custom, chuột phải vào cái mình vừa tạo
rồi Insert hoặc cứ kéo trực tiếp vào.

Như vậy là đặt mặc định là Thoigian 15 phiên trước hôm nay. Em Lan (giá đóng cửa) trở thành
người cũ thứ 15 (âm 15 là 15 phiên kế trước). Em Lan còn có thể là người tình 100 phiên trước đó (giá trị
nhỏ nhất) hoặc là 100 phiên sau. Chắc các huynh đệ cũng quen với cái bảng chỉnh thông số mỗi khi kéo
đường MA hay Volume vào đồ thị rồi.

Thoigian là biến, EmLan cũng là biến, được sử dụng trong quá trình code.

Loi cu ta ve là tên hiển thị, như trong hình đó. Vậy có thể chỉnh sửa Lối cũ ta về thành âm mười
lăm (-15) hay 10 hay 100 trong khi sử dụng. Mặc định là -15.

Hiển thị Chart


Công thức:

Plot( array, name, color, style, minvalue, maxvalue, XShift);

Giải thích
Array: Mảng cần hiển thị. Chút nữa các bác sẽ hiểu

Name: Tên mình đặt. Sẽ hiển thị trên phần ti tồ (title) ở góc trái trên của chart. Lưu ý tên phải trong
ngoặc kép.

Color: cách viết: ColorYellow colorred Colorgreen - thích màu gì cho màu đó đằng sau chữ color. Nếu
viết đúng thì chữ tự chuyển đậm.

Style: cách viết: styleLine (đường nét liền mảnh), styleThick (đường nét liền đậm), styledashed (đường
đứt đoạn)

Min và max value: Bỏ qua nhé! Viết thành số 0

Dấu chấm phẩy cuối câu nhé!

Ví dụ đây, ví dụ đây!

Plot(C,"Chikou Span",colorLime,styleLine,0,0,-26);

Tôi viết đường Chikou Span theo tinh thần Ichimoku nhé. Đó là đường giá nhưng lùi lại 26 phiên
so với thời điểm hiện tại. Như vậy: Plot(Giá, “đặt tên Chikou Span”, màu xanh chanh, kiểu đường mảnh,
âm 26 nghĩa là lùi 26 phiên);

Các cụ viết như trên rồi Save lần nữa. Kéo vào đồ thị giá. Kết quả như hình:

Ví dụ 2: Cổ phiếu vượt đỉnh phá đáy.

Các anh em còn nhớ công thức HHV và LLV (Higher high value và Lower low value) mà tôi để ở
phần đầu? Tôi sẽ tạo một đường đỉnh và đáy trong 60 ngày (khoảng 3 tháng) nhé.
EmQuynh=HHV(H,60);

EmChi=LLV(L,60);

Plot(EmQuynh,"Dinh cao voi voi",colorWhite,styleDashed);

Plot(EmChi,"Vuc sau muon trung",colorWhite,styleDashed);

Giải thích: Em Quỳnh là Đỉnh cao vời vợi (60 ngày) còn Em Chi là vực sâu muôn trùng (đáy thấp
nhất của các mức giá thấp nhất – 60 ngày).

Plot (hiển thị) 2 em ý lên đồ thị (tên biến, tên tiêu đề, màu trắng trinh nguyên, kiểu nét đứt);

Các bạn lại save vào và kéo vào đồ thị giá như các bước trên ví dụ trước nhé. À 2 dấu gạch // ở
plot Chikou Span để biến dòng đấy thành Comment, không hiển thị nữa. Tôi sẽ nói về vấn đề Comment
ở bài sau.

Chúng ta đã có một cái khung hay đường band trên dưới hiển thị 2 mức giá cao thấp trong 60
ngày. Nhưng để hiển thị rõ rang hơn, tôi sẽ sửa lại 2 dòng code:

EmQuynh=HHV(Ref(H,-1),60);

EmChi=LLV(Ref(L,-1),60);

Như vậy, Em Quỳnh trở thành vực cao của 60 ngày liền trước TÍNH TỪ ngày hôm qua, có thể
hôm nay tôi đã chinh phục được em rồi. Chúng ta chú ý việc để hàm Ref(H,-1) là giá cao nhất ngày hôm
qua lồng trong hàm HHV thay cho chỉ một biến H (giá cao). Cẩn thận mấy dấu ngoặc phải đầy đủ với
nhau. Lưu lại rồi cùng so sánh 2 đồ thị sau khi sửa code.
Lưu ý rằng ở hình trên (sau khi sửa) chúng ta nhìn thấy rõ Vnindex đã phá xuống dưới mức Em Chi, còn
bên dưới (Chưa sửa) thì Em Chi chính là vực sâu của giá ngày hôm đó nên khó phát hiện hơn.

Đường MA
Chúng ta hãy kết thúc bằng một đường quen thuộc là đường trung bình. Tất nhiên nó có sẵn trong Ami
rồi. nhưng trong quá trình tự phát triển các ý tưởng của bản thân, chúng ta vẫn nên sử dụng hàm này.

MA( ARRAY, periods);

Ví dụ: Tôi sẽ lấy đường trung bình động của Khối lượng trong 20 ngày trừ Khối lượng trung bình động 50
ngày.

Nhung_ngay_ben_em_Nhi = Param("T1",20,1,200,1);

Nhung_ngay_ben_em_Ha = Param("T2",50,1,200,1);

EmNhi=MA(V,Nhung_ngay_ben_em_Nhi);

EmHa=MA(V,Nhung_ngay_ben_em_Ha);

Chenhlech=(EmNhi-EmHa)/EmHa;

Plot(Chenhlech,"Dong tien",colorWhite,styleHistogram|styleOwnScale);

Plot(EmNhi,"MA Volume 20",colorGreen,styleLine);

Plot(EmHa,"MA Volume 50",colorRed,styleLine);

Như vậy, tôi vừa tạo ra một công cụ theo phong cách MACD của khối lượng, giúp thấy rõ hơn sự chuyển
động của khối lượng giao dịch trung bình. Chúng ta có thể thay đổi 2 thông số 20 và 50 ngày khi sử dụng.
Diễn giải phần code: 2 dòng đầu đặt thông số thời gian trung bình. Tiếp theo là công thức MA của khối
lượng. Chú ý rằng có thể thay MA (đường trung bình động thường) thành EMA đường trung bình động
lũy thừa. Chenhlech chính là mức tang giảm của khối lượng trung bình. Phần dưới Plot hiển thị hình ảnh
chart.

Chú ý đoạn styleHistogram|styleOwnScale dấu | với chức năng kết hợp kiểu style. StyleOwnScale: vì
chênh lệch tính với công thức như trên chỉ loanh quanh số 0, nhưng khối lượng trung bình lại là vài ngàn
đến vài triệu nên để cùng với nhau trên một biểu đồ, ta phải yêu cầu Chenhlech một Quy mô riêng
(StyleOwnScale). Bạn có thể xóa đoạn styleHistogram|styleOwnScale và thay bằng chỉ có
styleHistogram để hiểu thêm.

You might also like