Ồ 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á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).
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
EmQuynh=HHV(H,60); EmChi=LLV(L,60); Plot(EmQuynh,”Dinh cao voi voi”,colorWhite,styleDashed); Plot(EmChi,”Vuc sau muon trung”,colorWhite,styleDashed);
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.
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.
Thêm cú pháp phân đoạn vào để phân đoạn hiển thị em Quỳnh và em Chi. Save lại và kéo sang biểu đồ giá.
Nhấp chuột phải, chọn Delete Indicator và đá em Quỳnh ra khỏi cuộc đời mình. Bằng cách phân tách các Section, chúng mình đã tạo ra các Indicator riêng rẽ để có thể làm việc tốt hơn với chart. Cuối cùng, hãy so sánh trên và dưới. Đoạn văn rõ ràng và mạch lạc hơn so với để trần một cục như đoạn dưới.
Tập mổ xẻ, phanh thây và học hỏi các tiền bối Nền y học của thế giới sẽ không phát triển như hiện tại nếu không có những thí nghiệm vô nhân tính trên chính con người của những nhà khoa học điên thời cổ. Họ sẵn sàng mổ phanh một người sống chỉ để xem có gì bên trong cơ thể người. Có những người bị kết cho tội phù thủy và bị thiêu sống sau đó. May mắn thay, chúng ta cũng có thể học tập theo cách đó. Trừ phần vô nhân tính. Vọc code của các tiền bối là một cách tích lũy kinh nghiệm thật hữu hiệu.
Đọc từng đoạn code ICHIMOKU Phần đầu: Thiết lập các thông số cơ bản.
Đoạn thứ nhất, n1 n2 n3 quy định 3 mốc thời gian là 9, 26, 52. Đoạn thứ 2 là viết công thức theo quy tắc ở trên. Ví dụ đường Tenkan = trung bình của giá cao nhất và giá thấp nhất trong 9 phiên có công thức:
Đường Senkou Span A
Các bạn tự đọc những dòng còn lại. Đoạn SpA, SpB và DL tôi không hiểu ý của tác giả và có xuất hiện ở bên dưới. Sau bài viết mọi người có thể suy nghĩ thêm!
Đoạn điều kiện Từ phần Cond1 Cond2 đến hết vòng lặp for{} (kết thúc ngay trước Alert). Các điều kiện ở phần này làm tiền đề cho những điều kiện và hành động ở sau. Tôi sẽ thử đọc vài dòng. Cond2 = Ref(Close < Min(SenkouSpanA,SenkouSpanB),-1); Ref(…,-1) nghĩa là điều kiện dựa trên dữ liệu phiên liền trước. So sánh giá đóng cửa của phiên đó phải nhỏ hơn giá trị nhỏ nhất (Min) giữa SenkouSpanA và SenkouSpanB của phiên đó.
Cond3 = Ref(Cross(TenkanSen,KijunSen),-1); Ở đây, xuất hiện công thức Cross. Cross (cắt qua) có công thức là Cross( ARRAY1, ARRAY2 ): Array 1 cắt lên trên Array2 Ví dụ: Cross(C,MA(C,20)) có nghĩa là Giá đóng cửa CẮT LÊN TRÊN đường MA20 Nếu giá đóng CẮT XUỐNG DƯỚI thì sẽ đặt C ở sau MA(C,20): Cross(MA(C,20),C) Như vậy, điều kiện Cond3 là ở phiên liền trước, đường Tenkan đã cắt lên trên đường Kijun Nhân tiện đây cũng nói thêm: Trong quá trình mổ xẻ các code đã có sẵn của các tiền bối chúng ta sẽ gặp nhiều công thức hay cấu trúc rất lạ. Và câu trả lời cho hầu hết tình huống thường là:
Câu lệnh Alertif để có chuông thông báo nếu một điều kiện xảy ra. Cái này chủ yếu dùng cho Intraday trading (giao dịch trong ngày) nêu tôi không đi vào phần này do ở thị trường chứng khoán Việt Nam do T+3 nên giao dịch trong ngày có nhiều hạn chế.
Phần hiển thị Anh em ta chịu khó kéo xuống, trang dưới. Trang này chật chội quá. Hừm
Các điều kiện và lệnh BUY và SELL Ồ xem ra đây đã là gần hết rồi
2 câu lệnh cuối cùng chính là để hiển thị dải Ruy-băng ở bên dưới. À giờ thì đã hiểu câu lệnh IIF màu sắc ColSenk ở phía trên rồi!
Stochastic, … được xây dựng theo một công thức nào đó do ông Robert Williams John Kevin Rayer gì đấy nghĩ ra. Nói chung hầu hết những thứ các bạn sử dụng, nhìn thấy trên biểu đồ. Mấy anh bạn phân tích thì vì RSI đã đi từ vùng quá mua sang vùng trung tính, kết hợp với giá chạm bật MA50 và MACD, Stochastic đều cho tín hiệu mua, v.v… rồi cho vào báo cáo môi giới đều sử dụng indicator cũng là dạng này. Hãy nhìn tranh bên dưới!
Từ trên xuống dưới: RSI, đồ thị giá, ADX và MACD.
Đầu tiên, chúng ta phải nghĩ ra ta muốn xem cái gì trên con người cô ấy, nghĩa là muốn hiểu cái gì về biểu đồ giá. Như ở bài 1, chúng ta đã cùng nhau tạo ra sự hiển thị các mức giá cao/thấp nhất trong 3 tháng hay biểu đồ “làm mềm” khối lượng. Bước 1: Tạo ra công thức dựa trên những dữ liệu gốc là giá (O,H,L,C) và khối lượng (V) Bước 2: Hiển thị bằng lệnh PLOT Ở ví dụ trên, RSI(), ADX(), MACD() là những hàm tính toán có sẵn trong Amibroker, chúng ta chỉ việc thêm thông số vào trong dấu ngoặc () như RSI(14) – cho 14 ngày. Đối với RSI mình cho thêm 2 đường quá mua, quá bán (tôi đặt là 80-20) là nét gạch. Thêm vào đơn giản trong code (các bạn có thể sửa 80-20 thành thông số khác tùy theo): Plot(80,”Overbought”,colorYellow,styleDashed); Plot(20,”Oversold”,colorYellow,styleDashed);
2. Hệ thống giao dịch Một hệ thống giao dịch gồm những điều kiện để vào lệnh và thoát lệnh. Theo một cách máy móc – vì chúng ta đang lập trình cho máy thực hiện, chỉ cần đạt đủ các điều kiện là ok, phát tín hiệu. Ở đây chém gió một chút, mặc dù máy móc rất kỷ luật nhưng lại chính là điểm yếu – đó chính là khó thích nghi với những thay đổi của thị trường. (ví dụ như tùy từng loại robo hay hệ thống giao dịch mà phù hợp với thị trường có xu hướng hay thị trường trong khung giao động). Con người dễ thích nghi nhưng cũng chính là điểm yếu – thiếu kỷ luật. Có lẽ nhiều người đã từng nhìn thấy những dạng biểu đồ như thế này:
Ừ thì ông nói thế biết thế chứ tôi biết thế nào. Lúc đầu đọc mấy dòng này cũng thấy hợp lý mà có hiệu quả không nhỉ? Mở chát, vẽ MA rồi nheo mắt nhìn, a chỗ này cắt, giá lên. A chỗ kia cắt, sao giá không giảm? Nhiều chỗ loạn mắt quá, sao phân biệt? Viết thử code đơn giản giao dịch bằng đường trung bình động (Moving Average) – Đầu tiên, chúng ta xác định đường nhanh và chậm. Tôi sẽ thử với nhanh – 20 ngày. Chậm – 50 ngày. o Các anh em còn nhớ cách đặt thông số chứ? Nhanh = Param(“Thoi gian nhanh”,20,1,200,1); Cham = Param(“Thoi gian cham”,50,1,200,1); Tiếp theo sẽ thiết lập 2 đường MA (tôi sẽ dùng EMA – MA lũy thừa thay cho MA đơn giản) MAnhanh=EMA(C,Nhanh); MAcham=EMA(C,Cham); Điều kiện 2 đường cắt nhau: Ở đây có 2 cách Cách 1: Dùng Cross (Cắt nhau) DieukienMua= Cross(MAnhanh,MAcham); DieukienBan= Cross(MAcham,MAnhanh); Buy = DieukienMua; Sell = DieukienBan;