Networks Business Online Việt Nam & International VH2

Tổng hợp một số kiến thức lập trình về Amibroker

Đăng ngày 07 November, 2022 bởi admin

Giới thiệu về Amibroker

Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”.
AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.

Cách Amibroker lưu trữ dữ liệu

Các hàm thường dùng trong AmiBroker

Các ký hiệu thường dùng trong viết code:

C: close giá đóng cửa/ giá hiện tại trong phiên

O: Open giá mở cửa

H: giá cao trong phiên

L: giá thấp trong phiên

V: volume, khối lượng

ma(c,30) bình quân giá đóng cửa 30  phiên giao dịch

ma(v,30) bình quân khối lượng giao dịch 30 phiên

ref(c,-1)  giá đóng cửa của ngày hôm qua hoặc 1 phiên trước đó

ref(c,-2) giá đóng cửa của ngày hôm kia hoặc cách đó 2 phiên

ref(v,-1)  khối lượng của ngày hôm qua/ khối lượng của 1 phiên trước đó

HHV(C,15)  giá trị cao nhất của giá đóng cửa 15 phiên gần nhất

hhv(h,30) giá cao nhất của giá cao 30 phiên gần nhất

LLV(L,30) giá thấp nhất của giá thấp trong vòng 30 phiên

LLV(C,30) giá thấp nhất của giá đóng cửa trong vòng 30 phiên

C*V: Giá nhân với khối lượng = giá trị giao dịch

C>=1.02*Ref(C,-1)    => giá  lớn hơn 2% so với giá ngày hôm qua

V >= 1.3*MA(V,15)   => khối lượng lớn hơn hoặc bằng 130% so với bình quân khối lượng 15 phiên

RSI(14)  <=35               => tìm ra các mã có RSI <35
ROC:  percentage rate of change

ValueWhen(EXPRESSION, ARRAY, n = 1) : get value of the array when condition met: lấy giá trị khi dữ liệu thỏa điều kiện Expression

CROSS : trả về 1 khi Array 1 cắt Array 2 theo khunh hướng đi lên

EXREM: trả về 1 khi lần đầu tiên xuất hiện tín hiệu “true” trong Array 1, sau đó trả về 0 cho đến khi Array 2 là true ngay cả khi có tín hiệu “true” trong Array 1. Hàm này hữu ích khi bạn muốn loại bỏ nhiều điểm BUY hoặc SELL xuất hiện liên tiếp nhau.

Các hàm trong AFL

Plot( array, name, color/barcolor, style = styleLine, minvalue = {empty}, maxvalue = {empty}, XShift = 0, Zorder = 0, width = 1 )
  • array – mảng dữ liệu được vẽ, vd: RSI(16), Close, MA(Close,20),…
  • name – đại diện cho tên của đồ thị
  • color – dùng để thể hiện màu sắc cho đồ thị (nếu tham số thứ 3 là số) hoặc động (khi tham số thứ 3 là 1 array).
  • style: định nghĩa dạng đồ thị được vẽ

styleLine = 1 – normal (line) chart (default): đường kẻ liền
styleHistogram = 2 – histogram chart : Biểu đồ tần suất
styleThick =4 – fat (thick): đường kẻ đậm
styleDots = 8 – include dots: đường kẻ chấm
styleNoLine = 16 – no line
styleDashed = 32 – dashed line style:  đường kẻ gạch đứt
styleCandle = 64 – candlestick chart: nến
styleBar = 128 – traditional bar chart…
Tham khảo: https://www.amibroker.com/guide/afl/plot.html
Min value và max value – (chỉ được sử dụng bởi đồ thị styleOwnScale) xác định giá trị tối thiểu và tối đa của đồ thị (ranh giới dưới và trên cho trục Y).
XShift – cho phép chuyển biểu đồ qua thanh cuối cùng một cách trực quan.
ZOrder – xác định vị trí trục Z của ô đã cho. Giá trị mặc định là 0. Zorder = 0 cũng có nghĩa là đặt nơi “lưới”.

shift object sang phải hoặc sang trái = số bar đã input
width – xác định pixel hoặc chiều rộng phần trăm của ô đã cho. Mặc định là 1 pixel
tham số Zshift có tác dụng shift object sang phải hoặc sang trái = số bar đã input, ở trường hợp này là 10.
Ví dụ:
// Example 20-bar Moving average shifted 10 bars into the future past the last bar:
Plot(Close,”Close”,colorBlack,styleCandle);
Plot(MA(Close,20), “Shifted MA”, colorRed, styleLine, Null, Null, -10 );
// Note that shift occurs during plotting AND does NOT affect source array
Một điểm khá hay cần lưu ý đó là khả năng thay đổi màu sắc (Dynamic Color) khi các object (indicator, price,…) thỏa mãn một số điều kiện cho trước (sử dụng hàm Iff )
dynamic_color = IIf(MACD() > 0, colorBlue, colorRed);
Plot(MACD(), “My MACD”, dynamic_color, styleHistogram | styleThick)

Param
– add user user-definable numeric parameter
SYNTAX     

Param( ”name”, defaultval, min, max, step, sincr = 0 )

Return: number
Thêm một tham số mới do người dùng xác định, sẽ có thể truy cập được qua hộp thoại Tham số: nhấp chuột phải vào ngăn biểu đồ và chọn “Tham số” hoặc nhấn Ctrl + R cho phép thay đổi thông số biểu đồ – các thay đổi được phản ánh ngay lập tức.

Return: numberThêm một tham số mới do người dùng xác định, sẽ có thể truy cập được qua hộp thoại Tham số: nhấp chuột phải vào ngăn biểu đồ và chọn “Tham số” hoặc nhấn Ctrl + R cho phép thay đổi thông số biểu đồ – các thay đổi được phản ánh ngay lập tức.

  • “name”
  • defaultval: giá trị mặc định cho biến
  • min, max – giá trị lớn nhất và nhỏ nhất
  • step – defines minimum increase of the parameter via slider in the Parameters dialog
  • sincr – automatic section increment value (used by drag-drop interface to increase default values for parameters) 

Buy và Sell

Đây là 2 list quan trọng trong Amibroker, chứa điểm mua và điểm bánVD :

Buy= Cross(EMA(Close,13), EMA(Close,26) ); 
Sell= Cross(EMA(Close,26), EMA(Close,13)  ); 

Buy sẽ chứa 3 loại giá trị :

  1. NULL (không xác định) 
  2. 1: Khi EMA 13 cắt đi lên EMA 26
  3. 0: Khi EMA 13 không cắt EMA 26

Tương tự với Sell :

  1. NULL (không xác định) 
  2. 1: Khi EMA 26 cắt đi lên EMA 13
  3. 0: Khi EMA 26 không cắt EMA 13

Hàm vẽ biểu tượng trong Amibroker: PlotShapes

Cú pháp:

PlotShapes( shape, color, layer = 0, yposition = graph0, offset = -12, XShift = 0 );


shape: Hình dạng
VD: shapeUpArrow, shapeDownArrow, shapeHollowUpArrow, shapeHollowDownArrow, shapeSmallUpTriangle, shapeSmallDownTriangle, shapeHollowSmallUpTriangle, shapeHollowSmallDownTriangle, shapeUpTriangle, shapeDownTriangle, shapeHollowUpTriangle, shapeHollowDownTriangle, shapeSmallSquare, shapeHollowSmallSquare, shapeSquare, shapeHollowSquare, shapeSmallCircle, shapeHollowSmallCircle, shapeCircle, shapeHollowCircle, shapeStar, shapeHollowStar, shapeDigit0, shapeDigit1, shapeDigit2, shapeDigit3, shapeDigit4, shapeDigit5, shapeDigit6, shapeDigit7, shapeDigit8, shapeDigit9
color: Màu sắc, vd ColorGreen, ColorRed

layer: defines layer number on which shapes are plotted
yposition: defines Y-position where shapes are plotted (by default they are plotted ‘around’ graph0 (first indicator) line)
offset – (or distance) parameter (by default -12 ), Offset is expressed in SCREEN pixels. Negative offsets shift symbols down, positive offsets shift symbol up. To place the shape exactly at ypostion, specify 0 as offset
(new in 5.66) XShift – allows to visually shift the the shapes by the specified number of bars (even past the last bar).  

Đoạn code dưới đây cho điểm mua và bán sử dụng EMA. Ở mỗi điểm mua hoặc bán, sẽ có 1 mũi tên minh họa kèm theo

Plot(Close,"Close", colorAqua,styleCandle); 
Plot(EMA(Close,13), "EMA13", colorBlue, styleLine, Null, Null);
Plot(EMA(Close,26), "EMA26", colorOrange, styleLine, Null, Null);
Plot(EMA(Close,52), "EMA52", colorRed, styleLine, Null, Null);

Buy= Cross(EMA(Close,13), EMA(Close,26) ); 
Sell= Cross(EMA(Close,26), EMA(Close,13)  );                     
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone), colorGreen, 0,L, Offset=-45);                     
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone), colorRed, 0,H, Offset=-45);

Đoạn code dưới đây cho điểm mua và bán sử dụng EMA. Ở mỗi điểm mua hoặc bán, sẽ có 1 mũi tên minh họa kèm theo

Nhatkyhoctap’s blog

Source: https://vh2.com.vn
Category : Tin Học