-
22-07-2010 08:37 PM #1
Phần 1: Xây dựng index ngành của thị trường chứng khoán VN cho Amibroker.
Phần 1: Xây dựng index ngành của thị trường chứng khoán VN cho Amibroker.
Xuất phát từ nhu cầu là làm thế nào để có được các chỉ số index của các ngành trên thị trường niêm yết của VN cho database của amibroker, tôi đã lên mạng lục lọi xem đã có ai đã xây dựng xong chỉ số các ngành và sẵn lòng share dữ liệu đó ko. Mất hết 1-2 buổi ngồi với google tôi cũng tìm thấy được một số nguồn cung cấp dữ liệu. Tuy nhiên những nguồn này lại ko đáp ứng được nhu cầu của tôi. Tôi muốn dữ liệu index ngành với các yêu cầu sau:
- Dữ liệu đó phải tương thích với Amibroker vì tôi là người sử dụng Amibroker.
- Dữ liệu đó phải đầy đủ và đáng tin cậy.
- Dữ liệu đó phải được cập nhật một cách tự động vào amibroker.
- Quan trọng hơn hết là tôi có quyền thay đổi danh sách cổ phiếu được dùng để tính index của ngành đó và tôi có khả năng cập nhật lại index theo danh sách cổ phiếu mới đó một cách tự động.
Với những yêu cầu như vậy đã buộc tôi phải tự tìm ra phương pháp để xây dựng index ngành cho riêng mình. Tôi đã quyết định xây dựng index ngành dựa trên phương pháp xây dựng VN-Index. Bạn có thể tham khảo cách xây dựng VN-index tại các nguồn sau:
http://vi.wikipedia.org/wiki/Vn-Index
http://www.ssc.gov.vn/portal/pls/portal ... anguage=us
Điều này có nghĩa tôi phải phân loại được các ngành của các cổ phiếu niêm yết. Việc này ko phải là việc dễ làm vì có nhiều cổ phiếu kinh doanh đa ngành và việc xác định ngành của các cp đó rất khó khăn. Cuối cùng tôi tạm chấp nhận với việc phân loại ngành theo sự phân loại của http://www.cophieu68.com (một số cp niêm yết sau này vẫn chưa được cophieu68 cập nhật ngành. Có lẽ họ cũng gặp những khó khăn như tôi đang gặp phải?! ). Bằng việc sử dụng sự phân ngành sẳn có cophieu68, tôi đã có nhiều thơi gian hơn cho việc lập phương pháp xây dựng index ngành trên Amibroker. Tuy nhiên, tôi cũng đang rất mong được hợp tác với những bạn có cùng đam mê để hoàn thiện việc phân loại này.
Nếu bạn nào đã từng sử dụng Metastock và cả Amibroker thì bạn sẽ thấy Amibroker cung cấp cho bạn nhiều sức mạnh và sự tự do hơn trong việc xậy dựng cho mình hệ thống trading mà Metastock không thể nào làm được. Trong khi việc viết các hàm, indicators, explorer, scaning …. khá khó khăn với Metastock thì bạn có thể làm được tất cả những việc đó với Amibroker chỉ với bằng một vài dòng lệnh nhỏ. Ngoài ra, nếu bạn là người có khả năng lập trình bạn sẽ cảm thấy Amibroker chính là sự lựa chọn chính xác nhất. Ami cung cấp cho bạn khả năng can thiệp sâu vào trong hệ thống của nó bằng nhiều cách khác nhau. Bạn có thể dung ngôn ngữ AFL (Amibroker formula language) tương tự như Java Script để xây dựng cho mình các công cụ hỗ trợ trading như tôi đã đề cập ở trên. Bạn cũng có thể sử dụng VBScript or Jscript để viết vì cả 2 đều được tích vào Ami. Với những ai có kiến thức lập trình tốt (đặc biệt với ngôn ngữ C++) thì Ami cung cấp cho người đó khả năng can thiệp rất sâu vào hệ thống của Ami bằng việc viết các thư viện động (dll: dynamic linking library) với tốc độ chạy nhanh như các hàm trực tiếp của Ami. Và cuối cùng là một khả năng của Ami mà tôi đang dùng để xây dựng index ngành là tương tác với các đối tượng OLE (Objects linking embeded) của Ami. Những đối tượng này giống như là những cánh tay nối dài giúp bạn làm được những việc mà có thể lúc đầu bạn không nghĩ là mình sẽ làm được.
Trở lại với việc xây dựng index ngành. Sau khi bỏ ra một thời gian tìm hiểu tôi quyết định là mình sẽ tổ chức các ngành nghề trong database của ami theo danh mục ngành nghề của VSIC 2007 của tổng cục thống kê VN vì tôi thấy đây là bản ngành nghề hoàn chỉnh nhất mà trong tương lai tôi nghĩ các công ty ck sẽ phải sử dụng (http://www.gso.gov.vn/Modules/Doc_Downl ... DocID=6422). (Tôi chỉ mới tạo ra được danh sách các ngành nghề và ngành con (sector và industry) tương ứng trên ami. Tôi vẫn chưa phân loại chi tiết các cổ phiểu đang niêm yết vào từng ngành vì việc này rất mất nhiều thời gian và cũng rất khó khăn để làm. Tôi mong là sẽ được hợp tác với một số bạn cùng đam mê để hoàn thành việc này).
Tạm chấp nhận với việc là mình sẽ sắp xếp lại danh sách cp theo ngành nghề vào một thời điểm khác, tôi chọn ra một vài cổ phiếu và đưa vào một ngành (tạm gọi là testing) để phát triển chương trình xây dựng index ngành cho Ami. Sau khi tìm hiểu kỹ lại các hạn chế và khả năng có thể của Ami, của bản thân cũng như quỹ thơi gian tôi có thể dành cho việc này, tôi quyết định mình sẽ xây dựng index ngành bằng vbscript thông qua việc tương tác với các OLE của Ami. Mất gần 2 tuần nghiên cứu và coding, giờ đây tôi đã xây dựng được một hệ thống có thể giúp tôi tạo index ngành theo như các yêu cầu mà tôi đã đặt ra ở trên. Một điều đáng chú ý ở hệ thống này là nó hoàn toàn miễn phí cho người dùng cũng như nó tạo ra một môi trường mà người sử dụng có thể tự do phát triển các ý tưởng của mình bằng việc viết các script và đưa vào hệ thống để nó thực hiện. đây cũng chính là cách mà tôi xây dựng index ngành cho riêng mình. Tôi viết một đoạn vbscript tương tác với OLE của Ami và thông quá nó tôi tạo đã tạo index ngành một cách hoàn toàn tự động. Thật thích thú phải ko bạn? Bây giờ bạn chỉ bị giới hạn ở khả năng tưởng tượng và khả năng hiểu biết của chính bạn thân mà thôi. Tôi sẽ dành ra một bài viết khác để hướng dẫn bạn cách sử dụng hệ thống đó.
Xin lỗi các bạn vì tôi phải tạm ngừng ở đây để ngủ bù một chút cho những ngày thức khuya vừa qua . Trong các bài viết tiếp theo tôi sẽ viết về các vấn đề sau:
- Tạo danh mục ngành cho Amibroker theo danh mục ngành của cục thống kê VN (VSIC 2007) một cách tự động
- Hướng dẫn download và sử dụng hệ thống chương trình mà tôi đã để cập ở trên để tạo index ngành trên Amibroker
- Sau khi hoàn thành 2 việc trên, nếu còn thời gian tôi sẽ trao đổi cùng mọi người việc sử dụng amibroker trong trading cũng như phân tích ck: cả về phân tích cơ bản và phân tích thuật vì Amibroker có khả năng làm được những việc đó rất dễ dàng.
- Và nếu còn thời gian, tôi sẽ hướng dẫn để giúp những bạn nào chưa hiểu và đang muốn tìm hiểu về amibroker cũng như phát triển các ứng dụng trên amibroker cũng như sẽ trao đổi để cùng nâng cao kiến thức với những bạn có cùng đam mê.
Các vấn đề mà hiện tại tôi rất cần sự giúp đỡ của mọi người để có thể giái quyết được chúng là:
- Sắp xếp các cp đang niêm yết vào đúng ngành nghề đã được tạo ra ở trên
- Sự phản hồi của các bạn về hệ thống mà tôi phát triển để tôi có thể hoàn thiện chúng ngày càng
tốt hơn.
-
23-07-2010 01:14 PM #2
Phần 2: Tạo danh mục ngành cho Amibroker theo danh sách ngành của cục thống kê - VSIC
Phần 2: Tạo danh mục ngành cho Amibroker theo danh sách ngành của cục thống kê (VSIC 2007)
Amibroker tổ chức theo cấu trúc cây. Một dabase của Ami có thể có nhiều market (thị trường). Mỗi market có thể có nhiều group (nhóm) cổ phiếu và nhiều industry (ngành nghề). Mỗi industry thuộc về một sector (lĩnh vực). Có thể hiểu nôm na như mỗi ngành nghề thì thuộc về một lĩnh vực nào đó (ví dụ như sản xuất điện gia dụng thì thuộc về lĩnh vực sản xuất. ngân hàng, công ty ck thì thuộc về lĩnh vực tài chính). Khi người sử dụng khởi tạo 1 database, amibroker sẽ dựa trên một thiết lập về ngành nghề có sẳn của nó để khởi tạo database đó. Khi dabase mới được tạo ra thì nó chỉ là một database rỗng với các ngành nghề và lĩnh vực đã được thiết lập mặc định. Người dùng sẽ phải tự tạo ra danh sách các cổ phiếu và dữ liệu cho các cổ phiếu vừa tạo. Ngoài ra người dùng cũng sẽ phải tự phân loại và sắp xếp các cp vào đúng ngành nghề phù hợp. Ami chứa các thiết lập mặc định về lĩnh vực và ngành nghề trong 2 file tại thư mục cài đặt của ami như sau:
- broker.sectors: chứa danh sách sectors
- broker.industries: chứa danh sách ngành nghề
Như vậy ta có thể can thiệp vào việc thiết lập các ngành nghề mặc định của Ami bằng cách thay đổi giá trị của 2 files này. Trước hết hãy xem qua các giá trị mặc định ban đầu của 2 files ấy:
- Sector file có các giá trị ban đầu như sau:
Basic Materials
Capital Goods
Conglomerates
Consumer Cyclical
Consumer/Non-Cyclical
Energy
Financial
Healthcare
Services
Technology
Transportation
Utilities
Mỗi sector có một id number được đánh dấu từ 0 đến n. Như vậy sector “Basic Materials” sẽ có id number =0, “Capital Goods” sẽ có id number=1,…
- industry file có giá trị ban đầu như sau:
8 Advertising
1 Aerospace & Defense
10 Air Courier
10 Airline
3 Apparel/Accessories
3 Appliance & Tool
3 Audio & Video Equipment
3 Auto & Truck Manufacturers
3 Auto & Truck Parts
4 Beverages (Alcoholic)
4 Beverages (Non-Alcoholic)
7 Biotechnology & Drugs
8 Broadcasting & Cable TV
8 Business Services
8 Casinos & Gaming
0 Chemical Manufacturing
0 Chemicals - Plastics & Rubber
5 Coal
9 Communications Equipment
8 Communications Services
9 Computer Hardware
9 Computer Networks
9 Computer Peripherals
9 Computer Services
9 Computer Storage Devices
2 Conglomerates
1 Constr. & Agric. Machinery
1 Constr. - Supplies & Fixtures
1 Construction - Raw Materials
1 Construction Services
6 Consumer Financial Services
0 Containers & Packaging
4 Crops
11 Electric Utilities
9 Electronic Instruments & Controls
0 Fabricated Plastic & Rubber
4 Fish/Livestock
4 Food Processing
3 Footwear
0 Forestry & Wood Products
3 Furniture & Fixtures
0 Gold & Silver
7 Healthcare Facilities
8 Hotels & Motels
6 Insurance (Accident & Health)
6 Insurance (Life)
6 Insurance (Miscellaneous)
6 Insurance (Prop. & Casualty)
6 Investment Services
0 Iron & Steel
3 Jewelry & Silverware
7 Major Drugs
7 Medical Equipment & Supplies
0 Metal Mining
1 Misc. Capital Goods
0 Misc. Fabricated Products
6 Misc. Financial Services
10 Misc. Transportation
1 Mobile Homes & RVs
6 Money Center Banks
8 Motion Pictures
11 Natural Gas Utilities
0 Non-Metallic Mining
9 Office Equipment
4 Office Supplies
5 Oil & Gas - Integrated
5 Oil & Gas Operations
5 Oil Well Services & Equipment
0 Paper & Paper Products
4 Personal & Household Prods.
8 Personal Services
3 Photography
8 Printing & Publishing
8 Printing Services
10 Railroads
8 Real Estate Operations
8 Recreational Activities
3 Recreational Products
6 Regional Banks
8 Rental & Leasing
8 Restaurants
8 Retail (Apparel)
8 Retail (Catalog & Mail Order)
8 Retail (Department & Discount)
8 Retail (Drugs)
8 Retail (Grocery)
8 Retail (Home Improvement)
8 Retail (Specialty)
8 Retail (Technology)
6 S&Ls/Savings Banks
8 Schools
9 Scientific & Technical Instr.
8 Security Systems & Services
9 Semiconductors
9 Software & Programming
3 Textiles - Non Apparel
3 Tires
4 Tobacco
10 Trucking
8 Waste Management Services
10 Water Transportation
11 Water Utilities
Tương tự như sector, mỗi industry sẽ có 1 id number và cũng được đánh số từ 0 đến n. Vì mỗi industry phải thuộc về một sector nên bạn thấy trước industry name có một sô chính là sector id mà industry thuộc về. Ví dụ “8 Advertising” có nghĩa là ngành Advertising (quảng cáo) thuộc về sector có id là 8 (sector “Services”). Tương tự ngành “Iron & Steel” thuộc về sector 0: Basic Materials.
Vậy nếu bạn thay đổi giá trị của 2 file này và khởi tạo một database mới thì database đó sẽ có cấu trúc ngành nghề ban đầu theo những thay đổi của bạn. Nếu sau khi đã tạo xong database mà bạn cảm thấy cần phải thay đổi tên ngành nghề nào đó thì bạn có thể thay đổi trực tiếp trong database vừa tạo. Việc thay đổi này sẽ ko ảnh hưởng đến 2 file sector và industry ở trên. Như vậy tác dụng của 2 file trên chỉ là giúp bạn khỏi tạo ngành nghề cho một database mới mà thôi.
Tận dụng đặc điểm này bạn có thể tạo ra một dabase theo danh sách ngành, nghề của riêng bạn. Nếu muốn bạn có thế backup 2 file trên và tạo ra 2 file industry và sector mới theo yêu cầu của bạn và sau khi tạo xong database theo các ngành nghề bạn muốn, bạn có thể phục hồi lại 2 file sector và industry cũ. Một chú ý là tên các ngành nghề trong 2 file trên ko được dài hơn 38 ký tự vì phần dư đó sẽ bị cắt mất khi bạn tạo database. Đây là một hạn chế của Ami trong việc khỏi tạo database. Bạn có thể đặt tên cho một sector or industry dài hơn 38 ký tự nhưng bạn phải nhập bằng tay từng cái trực tiếp vào dabase mà bạn vừa tạo ra.
Riêng trường hợp của bản thân, tôi đã dùng danh sách ngành nghề của tổng cục thống kê vn VSIC 2007 để khởi tạo database với Sector được xây dựng từ danh mục ngành nghề cấp 1 và industry được xây dựng từ danh mục ngành nghề cấp 2. Còn cấp 3, 4, và 5 thì tôi thấy quá chi tiết nên ko dùng đến. Nếu bạn muốn tham khảo danh sách này của cục thống kê (file excel) bạn có thể download từ link sau:
http://www.gso.gov.vn/Modules/Doc_Downl ... DocID=6422
Tất nhiên tôi phải thay đổi một ít để tạo ra danh sách ngành nghề tương thích với Ami. Thứ nhất, phải loại bỏ dấu vì Ami ko hiểu được unicode có dấu như tiếng Việt. Thứ 2, phải tạo danh sách có tên ko quá 38 ký tự. Nếu bạn muốn thì có thể dùng 2 file sector và industry mà tôi đã tạo ra từ VSIC 2007 để khởi tạo database cho bạn. Địa chỉ để bạn lấy 2 file đó là:
http://cid-24b045babe1439c1.office.live ... industries
http://cid-24b045babe1439c1.office.live ... er.sectors
Sau khi đã khởi tạo xong database, bạn sẽ cần phải tạo dữ liệu cho nó. Việc tạo dữ liệu cho thị trường chứng khoán VN cho Ami khá dễ dàng vì có nhiều người sằn sàng cung cấp nó cho bạn miễn phí. Riêng ý kiến bản thân thì tôi khuyên bạn nên dùng dữ liệu của bạn BinhBean tại viewforum.php?f=31 (Một lần nữa, cám ơn bạn Binhbean rất nhiều vì lòng tốt và sự nhiệt tình của bạn trong việc cung cấp dữ liệu ami cho mọi người). Tốt nhất bạn nên download dữ liệu đã hiệu chỉnh và import nó vào database vừa tạo. Trong bài viết của bạn Binhbean bạn cũng sẽ tìm được nhiều thông tin có ích khác cũng như những hướng dẫn cần thiết để bạn có thê import dữ liệu cho riêng mình. Bạn ko cần phải lo lắng gì vì việc tạo database rất an toàn. Trong trường hợp bạn làm sai or bạn thấy database chưa đúng với yêu cầu bạn có thể xóa nó và tạo lại database mới trong giây lát mà thôi.
Như vậy bạn đã xong phần tạo database có danh sách ngành nghề cần thiết cũng như bạn đã có được toàn bộ dữ liệu của thị trường ck vn. Việc tiếp theo là bạn phải sắp xếp các cp vào đúng ngành nghề của nó. Việc này đòi hỏi nhiều thơi gian để làm và điều khó khăn nhất là bạn phải biết được ngành nghề chính mà cty đó đang hoạt động để phân loại cho chính xác. Bản thân tôi cũng đang gặp phải khó khăn này. Hiện tại tôi đang dùng tạm sự phân ngành của www.cophieu68.com. tuy nhiên sự phân ngành này vẫn chưa đầy đủ và hoàn toàn chính xác. Rất mong sẽ nhận được sự giúp đỡ của mọi người để tôi có thể hoàn chỉnh được phần việc khó khăn này. Hiện tại tôi đã viết xong chương trình sắp xếp danh sách cổ phiếu vào đúng ngành nghề. tuy nhiên cái mà tôi chưa có là danh sách cổ phiếu đã được phân ngành. Nếu có danh sách đó thì chương trình của tôi sẽ thực hiện việc phân loại theo danh sách đó trong giây lát mà thôi. Điều này sẽ tiết kiệm rất nhiều thơi gian so với bạn phải sắp xếp trực tiếp bằng tay vào database. Và tôi cũng sẽ cung cấp chương trình sắp xếp đó cho bạn (hoàn toàn miễn phí) nếu bạn muốn.
Có thể bạn sẽ hỏi tại sao chúng ta lại phải phân ngành và tại sao cần phải phân ngành cho chính xác. Từ trước đến giờ chúng ta đã có phân ngành đâu và vẫn mua bán bình thường đó thôi. Vâng, những điều bạn nó ko có gì sai cả. Tuy nhiên, nếu chúng ta có một database được phân ngành chính xác thi khả năng ra quyết định đầu tư chính xác của ta sẽ được nâng cao hơn. Ở các thi trường ck tại các nước phát triển, họ đều xây dựng hệ thống chỉ số các ngành nghề và thông qua các chỉ số này người ta sẽ biết nên đầu tư vào ngành nghề nào sẽ cho lợi nhuận nhiều hơn và nếu trong ngành nghề đó bạn tìm được những cp có performance cao nhất thì xem như bạn đã nắm chắc được thành công rồi. Như vậy việc phân loại ngành nghề là cần thiết vì dựa vào sự phân loại đó chúng ta sẽ tạo được index ngành mà tôi sẽ đề cập cách thức cũng như cung cấp cho bạn các công cụ hoàn toàn miễn phí để bạn có thể làm được đều đó trong bài viết tiếp theo. Có thể bạn sẽ hỏi, tại sao tôi làm như vậy? Tôi có mục đích gì? Cái mà tôi muốn nhận được là sự phản hồi của bạn cũng như sự đóng góp của bạn để tôi có thế hoàn thiện đứa con tin thần của mình. Ngoài ra, trong quá trình trao đổi chắc chắn là tôi sẽ được học hỏi rất nhiều từ mọi người (ông bà ta thường khuyên: nếu bạn muốn nhận thì bạn phải học cách cho đó sao?). Và cuối cùng, biết đâu sau này khi về lại vn tôi sẽ có được một số người bạn tâm giao mà từ đó chúng tôi có thể làm được nhiều việc khác tốt đẹp hơn.
-
Những thành viên sau đã cám ơn :
huong47 (25-07-2010)
-
24-07-2010 12:23 PM #3
Phần 3: VBScriptRunner và index ngành trên Amibroker
Phần 3: VBScriptRunner và index ngành trên Amibroker
Index ngành là gì?
Chúng ta đều biết VN-Index là chỉ số index của sàn HCM và HNXindex là chỉ số index của sàn Hà nội. Các chỉ số index này cũng có ý nghĩa tương tự như chỉ các chỉ số Dow Jones, NASDAQ tại thị trường chứng khoán Mỹ vậy. Nói cách khác, chỉ số index được dùng để phản ánh sự biến động của thị trường chứng khoán cũng như tâm lý của nhà đầu tư. Tuy nhiên cách xây dựng chỉ số index ở mỗi thị trường có thể giống hoặc khác nhau. Theo tìm hiểu của bản thân tôi, chỉ số VN-Index được tính toán theo phương pháp chỉ số Paasche. Ý nghĩa của cách tính cũng như phương pháp tính các bạn có thể tham khảo tại links sau:
http://vi.wikipedia.org/wiki/Vn-Index
http://www.ssc.gov.vn/portal/pls/por...&p_language=us
Bạn cũng có thể tham khảo một ví dụ về cách tính VN-Index từ đề tài nghiên cứu của một bạn khi bạn ấy còn là sinh viên trên một website (xin lỗi vì tôi ko nhớ tên bạn ấy cũng như đã lấy từ nguồn website nào vì lúc đó tôi chỉ dùng google để tìm ví dụ về cách tính index nhưng lại quên lưu lại website cũng như người gửi. Thành thật xin lỗi bạn ấy). Bạn có thể tham khảo ví dụ của bạn ấy thông qua bản sao tôi giữ tại links:
http://cid-24b045babe1439c1.office.l...ts/vnindex.ppt
http://cid-24b045babe1439c1.office.l...%20Vnindex.xls
Như vậy tôi đã quyết định xây dựng index theo phương pháp xây dựng VN-Index và từ những hiểu biết mà tôi góp nhặt được ở trên. Như bạn đã biết ở bài viết trước, tôi đang gặp khó khăn ở việc sắp xếp các cp vào trong một ngành nhất định. Để vượt qua khó khăn này tôi tạm lấy 3 cổ phiếu có ngày giao dịch ít là MIH, NHS và LCS làm nguồn dữ liệu đầu vào để tôi phát triển bộ ứng dụng của mình. Đầu tiên tôi đưa dữ liệu từ ami của 3 cp trên ra excel để tính toán thử bằng tay. Sau khi viết chương trình, chạy thử và so sánh với kết quả trong excel thì thấy khớp với nhau. Nếu bạn muốn tham khảo cách tính index của tôi bạn có thể down file excel đó về qua link sau:
http://cid-24b045babe1439c1.office.l...20vnindex.xlsx
Như vậy tôi đã trình bày cho bạn về phương pháp xây dựng vn-index và nó cũng chính là phương pháp tôi dùng để xây dựng index ngành của mình. Còn về hệ chương trình tôi viết để giúp tôi thực hiện được việc đó thì gồm những phần như sau:
- Chương trình VBScriptRunner đươc dùng để làm nền chạy các VBScript mà tôi viết. Và thông qua các script đó, tôi tương tác với các OLE của Ami để xây dựng các chỉ số index. Tôi sẽ có một bài viết khác để nói chi tiết hơn về chương trình này cũng như những đặc điểm của nó. Theo đánh giá của bản thân, tôi thấy nó rất có ích ko chỉ cho người sử dụng Amibroker mà còn cho cả những ai viết và chạy các VBScript cho bất kỳ mục đích nào khác. Chương trình này cũng cho phép chạy các đoạn VBScript đã được mã hóa. Tại sao lại phải mã hóa các đoạn VBScript? Có một số lý do để làm thực hiện việc mã hóa đó. Khi bạn viết chương trình bằng Script và muốn chia sẽ nó với những người khác, bạn ắt hẳn là bạn muốn người ta ko được thay đổi các script bạn viết vì bạn muốn nhận được phản hồi một cách chính xác các lỗi có thể xãy ra. Việc mã hóa sẽ giúp người khác ko thể sửa chữa or thêm bớt gì vào code của bạn vì nếu họ làm như vậy thì đoạn script mã hóa đó sẽ bị hỏng và trở nên vô dụng. Việc thay đổi script đã mã hóa cũng giống như bạn thay đổi nội dung của một file .exe vậy. Nó sẽ làm hỏng cấu trúc của file exe và vì vậy sẽ ko chạy được file ấy. Một lý do nữa là có thể bạn muốn chia sẽ thành quả làm việc của mình nhưng lại muốn đảm bảo quyền sở hữu trí tuệ của bạn và việc mã hóa code bạn viết là một trong những cách giúp bạn làm được điều đó. Trong tương lai, tôi sẽ nâng cấp chương trình ấy để nó có thể hỗ trợ cả JScript và như vậy nó sẽ giúp cho những bạn vốn ko biết nhiều về VBScript nhưng lại giỏi về JScript sẽ chạy được các Jscript đó và an toàn chia sẽ các chúng với người khác. Bạn có thể download chương trình này tại link sau:
http://cid-24b045babe1439c1.office.l...riptRunner.rar
- Một file VBScript thực hiện các tác vụ để xây dựng index ngành (đã được đính kèm trong gói cài đặt)
- Một file text tên danhsach.txt chứa danh sách ngành và các cổ phiếu tương ứng với ngành đó theo một format được quy định (đã được đính kèm trong gói cài đặt). Format này như sau:
<Industry ID>::<Industry name>::<TickerList>
Một ví dụ cho file text này có 2 dòng như sau:
115::Testing::MIH,LCS,NHS
3::KHAI THAC NUOI TRONG THUY SAN::AGF,ABT
Như vậy bạn đã có trong tay tất cả những công cụ cần thiết để tiến hành tạo index ngành cho riêng mình. Sau đây là các bước hướng dẫn để bạn có thể thực hiện được việc đó.
1. Cài đặt chương trình VBScriptRunner.
Bạn chạy file setup.exe từ files mà bạn download về với quyền Administrator và theo các hướng dẫn trên màn hình để hoàn thành việc cài đặt này. Việc cài đặt này hoàn toàn tương tự như việc cài đặt các chương trình khác trước đây của bạn. Trong trường hợp bạn chương trình cài đặt thông báo lỗi không thể copy file .dll or .ocx vào hệ thống, cứ click ignore để bỏ qua việc copy đó vì hệ thống của bạn đã có sẳn rồi. Một trường hợp khác là chương trình cài đặt thông báo có sẳn file trong hệ thống của bạn (xãy ra khi bạn cài đặt nhiều lần) và nó hỏi bạn có giử những file có sẵn trong hệ thống của bạn ko thì bạn cứ chọn “no to all” để cài đè lên tất cả. Nếu hệ thống yêu cầu phải khởi động lại để cập nhật thì bạn cứ khởi động lại (hầu hết các trường hợp cài đặt không yêu cầu phải khởi động lại)
2. Sau khi cài đặt xong, bạn nên kiểm tra xem là file danhsach.txt và IndustryIndexUpdating.vbs.vbn đã có trong thư mục mà bạn vừa cài đặt xong hay ko. Nếu vẫn chưa có thì bạn có thể download 2 file trên và lưu vào thư mục cài đặt đó. Links để bạn download 2 file trên là:
http://cid-24b045babe1439c1.office.l...s/DanhSach.txt
http://cid-24b045babe1439c1.office.l...dating.vbs.vbn
3. Sau khi thực hiện các bước trên xong, chạy chương trình Amibroker.
3. Chạy chương trình VBScriptRunner bạn sẽ thấy xuất hiện mạng hình sau:
4. Click nút “Read Script” và chọn file type là vbn như hình vẽ và chọn file IndustryIndexUpdating.vbs.vbn để Open
5. Sau đó click nút “Run Script” để tiến hành tạo index ngành. Khi hoàn thành màn hình sẽ báo cho bạn biết là đã hoàn thành
Một số lưu ý:
- Trong trường hợp danh sách ngành của bạn dài và có nhiều cố phiếu. Trong lần chạy đầu tiên có thể bạn sẽ đợi lâu một chút vì chương trình file tao index ngành kể từ ngày cổ phiếu đầu tiên trong ngành đó được niêm yết. Do đó số liệu chương trình phải xử lý là khá lớn. Tuy nhiên ở những lần chạy sau thì sẽ rất nhanh vì chương trình chỉ phải cập nhật những ngày mới mà thôi. Do đó bạn cũng có thể customize file danh sách để nó chỉ tạo index cho những ngành mà bạn quan tâm
- Trong trường hợp bạn loại bỏ một cổ phiếu ra khỏi 1 ngành nào đó (vì lý do nào đó như cổ phiếu ko còn niêm yết nữa) thì bạn phải cập nhật lại file danhsach.txt và xóa index ngành đó đi. Sau đó bạn chạy chương trình để tạo lại index mới cho ngành đó.
- Trường hợp bạn thêm mới một cổ phiếu vào một ngành thì bạn cũng thực hiện tương tự như trên ( cập nhật lại danhsach.txt, xóa index ngành đó và chạy lại chương trình để tạo lại index mới).
- Index ngành được tạo ra được gắn ticker (symbol) theo dạng “~industry id” và có fullname chính là tên ngành trong file danhsach.txt mà bạn tạo.
Như vậy bạn đã có được danh sách index ngành như bạn muốn rồi đó. Hi vọng rằng chương trình này sẽ có ích cho bạn. Rất mong nhận được sự phản hồi của mọi người để tôi có thể hoàn thiện chương trình ngày càng tốt hơn.
Thân mếnCho đi để được nhận về
http://llhhllhh.spaces.live.com/blog/
-
26-07-2010 01:51 PM #4
Phần 4: Hướng dẫn sử dụng VBScriptRunner
Phần 4: Hướng dẫn sử dụng VBScriptRunner
Ở bài viết trước tôi đã nói về cách sử dụng VbscriptRunner để tạo index ngành trong Amibroker. Ở bài viết này tôi sẽ đề cập sâu hơn về các đặc điểm mà VbscriptRunner có thể hỗ trợ cho người dùng.
Chắc bạn cũng đã biết rằng vbscript hoặc jscript được viết dưới dạng text và được chạy trực tiếp mà ko pải thông qua gia đoạn trung gian để biên dịch ra thành mã lệnh như các ngôn ngữ lập trình khác. Như vậy người viết script bằng vb hoặc java có thể soạn thảo code với bất kỳ chương trình soạn thảo văn bản nào như notepad hoặc word. Sau khi viết xong thì cứ đặt tên cho phần mở rộng của file là vbs cho vbscript hoặc js cho jscript. Sau đó thì cứ chạy trực tiếp bằng double click hoặc chạy từ cửa sổ Dos. Thông thường người viết script sẽ gặp khó khăn ở việc theo dõi quá trình chạy và debug (gỡ rối) chương trình vì bản thân vbscript hoặc jscript ko hỗ trợ nhiều về tương tác với người dùng ngoài một ít lệnh hỗ trợ tương tác như msgbox. Với những người có ít nhiều kinh nghiệm, họ sẽ dùng các chương trình soạn thảo chuyên dụng như visual studio. Tuy nhiên, các chương trình này thường ko miễn phí và cồng kềnh. Ở vbscriptRunner, tôi ko có tham vọng thay thế những chương trình chuyên dụng đó vì biết khả năng giới hạn của mình. Với đánh giá của bản thân, vbscriptRunner hỗ trợ cho bạn tốt hơn trong việc soạn thảo code, debug, và theo dõi quá trình chạy trong trường hợp bạn ko có các công cụ chuyên dụng như tôi đã đề cập ở trên. Ngoài ra, có 1 điểm đáng quan tâm ở vbsriptRunner là khả năng chạy script dưới dạng đã được mã hóa (vì một lý do nào đó như tôi đã đề cập ở bài viết trước). Điều này giúp người dùng VBScriptRunner an tâm hơn trong việc chia sẽ thành quả làm việc của mình.
Ở chương trình của vbscriptRunner, bạn sẽ thấy có 3 phần chính:
- display board: là phần trên cùng có chức năng hiển thị quá trình thực hiện lệnh. Người dùng có thể can thiệp vào thành phần này để hiển thị những thông tin mà anh ta muốn.
- phần nút lệnh: gồm 2 nút lệnh, "load script" và "run script". Nút lệnh "load script" dùng để load một file script (đã được mã hóa hoặc chưa được mã hóa) vào cửa sổ soạn thảo.
- phần cửa sổ soạn thảo: là phần dùng để soạn thảo script code hoặc dùng để hiển thị script được load từ file. Khi người dùng click nút lệnh "run script" những codes (đã được mã hóa hoặc chưa được mã hóa) trong cửa sổ này sẽ được thực hiện.
Như vậy bạn đã hiểu cách thức mà vbscriptRunner làm việc. Tiếp theo tôi sẽ hướng dẫn cho bạn cách sử dụnh display broad để hiện thị thông tin mà bạn muốn. Thông thường những người viết script sẽ dùng lệnh msgbox để hiển thị thông tin. Tuy nhiên, trong trường hợp hiển thị thông tin ở trong một vòng lặp thì cách này rất bất tiện vì người dùng phải click ok nhiều lần. Những trường hợp như vậy bạn có thể dùng display board để thay thế. Ví dụ sau sẽ minh hoạ điều đó:
For i=0 to 5
Displayboard.text=i
Next
Như vậy nếu bạn chạy đoạn code trên trong vbscriptRunner bạn sẽ thấy display board lần lượt hiển thị giá trị từ 0 đến 5. Tuy nhiên nếu bạn lưu đoạn code trên vào file có đuôi là .vbs và chạy trực tiếp bằng cách double click bạn sẽ thấy xuất hiện thông báo lỗi. Lỗi này là do hệ điều hành ko hiểu được đối tượng Displayboard vốn chỉ có thể được tương tác thông qua vbscriptRunner. Nếu bạn muốn script của bạn có thể vừa chạy được trực tiếp cũng như thông qua vbscriptRunner thì bạn phải thay đổi đoạn code trên khác đi một chút như sau:
For i=0 to 5
If isobject(displayBoard) then
displayBoard.text=i
Else
Msgbox i
End if
Next
Bây giờ nếu bạn save và sau đó double click để chạy trực tiếp thì bạn sẽ thấy ko bị báo lỗi nữa. Thay vào đó bạn phải click ok 6 lần. Nhưng nếu bạn chạy lại chính script đó bằng vbscriptRunner thì bạn chỉ thấy displayboard hiển thị giá trị lần lượt từ 0 đến 5 mà ko cần bạn phải click chuột một lần nào cả. Đến đây chắc là bạn đã hiểu được tác dụng của displayboard rồi phải ko?
Ngoài việc hỗ trợ người dùng theo dõi quá trình chạy như tôi vừa trình bày ở trên, VbscriptRunner cũng hỗ trợ bạn trợ bạn gỡ rối (debug) khi chương trình gặp lỗi. Mỗi khi chương trình bạn viết phát sinh lỗi, vbscriptRunner sẽ cung cấp cho bạn các thông tin sau:
- error number: mã lỗi
- error descrisption: diễn giải lỗi
- line of error: dòng lệnh phát sinh lỗi.
Với các thông tin đó, mỗi khi nhận được lỗi, bạn sẽ dễ dàng xác được dòng lệnh gây ra lỗi thông qua các số thứ tự dòng lệnh mà vbscriptRunner cung cấp cho bạn ở bên lề trái của cửa sổ soạn thảo và từ đó giúp bạn tìm ra nguyên nhân phát sinh lỗi dễ dàng hơn. Bạn cũng có thể kết hợp chức năng này với việc sử dụng DisplayBoard để hiện thị giá trị của biến cần gỡ rối hoặc kết hợp với lệnh msgbox để ngừng tạm thời chương trình tại dòng lệnh cần gỡ rối. Như vậy là bạn đã có được một bộ công cụ để phát triển các ứng dụng viết bằng Script rồi đó.
Một đặt điểm đáng quan tâm ở vbscriptRunner là khả năng chạy được các script đã mã hóa. Trong quá trình làm việc, có thể một lúc nào đó bạn cần phải mã hóa code bạn viết như tôi đã đề cập ở bài viết trước. Trong phần tiếp theo tôi sẽ hướng dẫn bạn cách mã hóa code cũng như cung cấp cho bạn công cụ để bạn mã hoá code của mình.
Việc mã hóa code rất đơn giản và nhanh chóng. Sau khi soạn thảo xong script bạn dùng chương trình mã hoá để chọn file script đó rồi click nút encrypt code là xong. File đã mã hóa có phần đuôi ( phần mở rộng) là .vbn và tên file chính là tên file đầy đủ của script chưa được mã hoá. Ví dụ: tên file script chưa được mã hóa là test.vbs thì tên file của script đã được mã hóa là test.vbs.vbn và được lưu cùng thư mục với file gốc. Bạn có thể download chương trình mã hóa tại link sau:
http://cid-24b045babe1439c1.office.l...es/Encrypt.exe
Thông thường chương trình mã hóa này có thể chạy trực tiếp mà ko cần cài đặt. Tuy nhiên tôi vẫn cung cấp link để bạn download chương trình cài đặt trong trường hợp hệ điều hành của bạn chưa hỗ trợ đầy đủ các chức năng của chương trình. Bạn có thể download chương trình cài đặt đó tại link sau:
http://cid-24b045babe1439c1.office.l...es/Encrypt.rar
Như vậy tôi đã giới thiệu cho bạn về vbscriptRunner và việc mã hóa code. Mong rằng chúng sẽ có ích cho bạn. Nếu bạn có bất kỳ ý kiến đóng góp hoặc thắc mắc nào về chương trình bạn cứ tự nhiên gửi mail cho tôi hoặc cứ post comment trên diễn đàn hoặc trên blog của tôi. Trong khả năng của mình, tôi sẽ tiếp thu và cố gắng trả lời cho bạn trong thời gian sớm nhất có thể.
Thân mến.Cho đi để được nhận về
http://llhhllhh.spaces.live.com/blog/
-
26-07-2010 01:53 PM #5
VBScriptRunner: Một số lỗi phát sinh trong quá trình sử dụng và cách khắc phục
lmd2286 đã viết:
Xin chân thành cảm ơn bác đã chia sẻ ý tưởng và phần mềm hữu ích!
Em cài đặt VBScript runner thì thấy báo lỗi An access violation occured while coppying the file msscript.ocx
Em ignor thì cũng cài đặt xong, nhưng khi Run script thì lại bị báo lỗi: Error number 424, Line 77, Object required. Bác hướng dẫn thêm cho em nhé!
Many thanks.
hi bạn,
Lỗi đó là do chương trình ko tạo được đối tượng để truy cập vào một mã chứng khoán. Bạn hãy check xem mình đã làm những việc sau chưa nghen:
- Khi cài đặt thì bạn cần chạy ở quyền Administrator để chương trình cài đặt có thể cập nhật hệ thống.
- File danhsach.txt phải được lưu cùng thư mục bạn chạy chương trình. Và có đúng format như đã hướng dẫn (IndustryID::IndustryName::Tickerlist). Bạn có thể download file danhsach.txt về để xem format.
- Tốt nhất sau khi bạn cài xong thì dùng explorer để đến thư mục cài đặt và double click lên file vbscriptRunner.exe để chạy.
Nếu được xin bạn hãy gửi cho tôi file danhsach.txt mà bạn dùng để tạo index nghen. Và nếu có thể thì bạn cứ add nick của tôi vào list của bạn để trao đổi dễ dàng hơn. Mail và nick của tôi là llhhllhh@live.com
Riêng bản thân, tôi sẽ cập nhật lại chương trình và cũng sẽ cập nhật lại file script để ngăn chặn lỗi tương tự. Sau khi xong tôi sẽ upload lại chương trình lên blog và thông báo cho mọi người trong thời gian sớm nhất.
Thân mến
--------------------------
hi lmd2286
Tôi đã cập nhật lại script để ngăn ngừa những lỗi tương tự như bạn đã cung cấp. Xin bạn vui lòng download lại phiên bản vbScriptRunner mới được cập nhật (ngày 27-06-2010) về để cài đặt lại. Hoặc bạn cũng có thể download lại 2 file vbscriptRunner.exe và IndustryIndexUpdating.vbs.vbn và copy đè vào thư mục đã cài đặt.
Rất cám ơn sự đóng góp của bạn và mong rằng sẽ tiếp tục nhận được sự đóng góp của bạn trong tương lai để tôi có thể tiếp tục hoàn thiện chương trình của mình.
Thân mếnCho đi để được nhận về
http://llhhllhh.spaces.live.com/blog/
Thông tin của chủ đề
Users Browsing this Thread
Có 1 thành viên đang xem chủ đề này. (0 thành viên và 1 khách vãng lai)
Similar Threads
-
Mã chứng khoán NSN - Công ty cp xây dựng 565
By cafe09 in forum Công ty chiến ở HNXTrả lời: 1Bài viết cuối: 21-05-2010, 11:43 AM -
Xây dựng lòng tin cho thị trường
By linhlong in forum Giải pháp phát triển TTCKTrả lời: 0Bài viết cuối: 16-07-2006, 03:58 PM -
Phần mềm nào dùng cho Chứng khoán???
By sieunhan in forum CLB Chứng khoánTrả lời: 0Bài viết cuối: 28-02-2006, 07:48 AM -
Xin ba con cho toi biet quy trinh dua 1 cong ty co phan tham gia thi truong chung khoan!
By hoathan81 in forum Kiến thức Chứng khoánTrả lời: 0Bài viết cuối: 06-02-2006, 03:49 PM -
Cùng sinh viên xây dựng thị trường chứng khoán
By in forum CLB Chứng khoánTrả lời: 0Bài viết cuối: 01-01-1970, 07:00 AM
Bookmarks