I. Dùng Scan:
1. Thành phần tối thiểu:
Có thể lọc bằng Scan với cấu trúc code đơn giản nhất, gồm một hay nhiều dòng trong các dòng sau đây:
Buy = <điều kiện 1>;
Sell = <điều kiện 2>;
Short = <điều kiện 3>;
Cover = <điều kiện 4>;
Các thành phần trong cặp ngoặc nhọn <điều kiện> là biểu thức lôgích theo cú pháp code được Amibroker quy định.
2. Thí dụ:
a. Một thí dụ đơn giản nhất:
Buy = Close> MA(Close, 200);
hoặc:
Buy = Cross(EMA(C,13), MA(C,21)) AND V>50000;
Cũng với ý tưởng trên, đoạn code có thể được sử dụng phức tạp hơn (nhằm tạo được nhiều tùy chọn hơn khi sử dụng):
//Long MA
P = ParamField("Price field",-1);
Periods = Param("Periods", 100, 2, 400, 1 );
Buy = Close> MA( P, Periods );
b. Thí dụ dùng nhiều lệnh điều kiện với điều kiện phức tạp :
r1 = Param("Fast avg", 12, 2, 200, 1);
r2 = Param("Slow avg", 26, 2, 200, 1);
r3 = Param("Signal avg", 9, 2, 200, 1);
ml = MACD(r1, r2);
sl = Signal(r1, r2, r3);
Buy=Cross(ml, sl);
Sell = Cross(sl, ml);
hay:
LongMA = EMA(C, Param("Long Period", 50, 30, 100, 5));
ShortMA = EMA(C, Param("Short Period", 5, 3, 50, 1));
Buy = Cross(ShortMA, LongMA );
Sell = Cross(LongMA, ShortMA );
3. Kết quả:
Với:
Buy = Close> MA(Close, 200);
Có kết quả:
Ticker,Trade,Date,Close,
AGF,Buy,2015/04/10,20.7000
BBC,Buy,2015/04/10,57.0000
BIC,Buy,2015/04/10,16.9000
BID,Buy,2015/04/10,19.0000
BMI,Buy,2015/04/10,17.3000
BMP,Buy,2015/04/10,81.0000
...
Với:
Buy = Cross(EMA(C,13), MA(C,21)) AND V>50000;
Kết quả nhận được:
Ticker,Trade,Date,Close,
BSI,Buy,2015/04/10,11.0000
JVC,Buy,2015/04/10,21.7000
VHC,Buy,2015/04/10,40.2000
VIS,Buy,2015/04/10,7.7000
Còn với:
LongMA = EMA(C, Param("Long Period", 50, 30, 100, 5));
ShortMA = EMA(C, Param("Short Period", 5, 3, 50, 1));
Buy = Cross(ShortMA, LongMA );
Sell = Cross(LongMA, ShortMA );
Kết quả sẽ có:
Ticker,Trade,Date,Close,
ABT,Sell,2015/04/10,51.0000
BCI,Sell,2015/04/10,20.8000
CYC,Buy,2015/04/10,3.9000
DQC,Buy,2015/04/10,57.5000
GTA,Buy,2015/04/10,16.0000
...
4. Thành phần kết quả được xuất ra có điểm chung: Gồm các cột mặc định: Ticker, Trade, Date và Close
II. Dùng Explorer:
Để dùng Explorer, trong code không dùng các dòng lệnh với Buy, Sell, Short hay Cover mà dùng Filter:
Filter = <điều kiện>;
<điều kiện> cũng là biểu thức lôgích.
Explorer đi kèm với tối thiểu 1 lệnh khai báo cột thông tin xuất ra và cho phép xuất ra các cột dữ liệu như ý muốn. Để xuất ra các cột thông tin, thường có thể dùng thêm các câu lệnh: AddColumn (được dùng xuất dữ liệu số) hoặc AddTextColumn (được dùng xuất dữ liệu chuỗi - text).
AddColumn(<Tên Dữ liệu>,<Tên cột>,<format>);
<Tên Dữ liệu> - Biến hoặc các biểu thức chứa dữ liệu dạng số muốn xuất ra.
<Tên cột> - Tiêu đề của cột sẽ được hiển thị.
<format> - dạng dữ liệu được xuất ra
AddTextColumn(<Tên Dữ liệu>,<Tên cột>);
Thí dụ:
Filter = Cross(EMA(C, 13), MA(C,21)) AND V>50000;
AddColumn(EMA(C, 13),"EMA-13",1.2);
AddColumn(MA(C, 21),"MA-21",1.2);
AddColumn(Ref(C, -4),"Close-4",1.2);
AddColumn(C,"Close",1.2);
Kết quả xuất ra:
Ticker,Date/Time,EMA-13,MA-21,Close-4,Close,
BIC,2015/04/09,16.06,16.02,15.80,17.20
BID,2015/04/08,17.91,17.88,17.90,18.50
BSI,2015/04/10,10.81,10.81,10.50,11.00
CCL,2015/04/09,4.04,4.03,4.00,4.10
CII,2015/04/07,18.57,18.53,18.20,19.30
GTN,2015/04/09,15.99,15.97,15.80,16.40
...
Hai cột đầu Ticker và Date/Time là mặc định (luôn luôn xuất hiện). Trong đó, Date/Time có format phụ thuộc vào khai báo trong Region and Language (Control Panel).
Các cột còn lại EMA-13, MA-21, Close-4 và Close là do 4 lệnh AddColumn đã khai báo ở trên.
Một trong những ứng dụng mà tôi đã dùng để xuất file EOD Upto ....txt là đoạn code sau:
Filter = 1;
AddColumn(O,"Open");
AddColumn(H,"High");
AddColumn(L,"Low");
AddColumn(C,"Close");
AddColumn(V,"Volume", 1.0);
Add Your Comments