Networks Business Online Việt Nam & International VH2

Ngôn ngữ Metaquotes MQL4 và MQL5: điểm khác nhau và hướng dẫn lập trình

Đăng ngày 07 November, 2022 bởi admin
2022-07-28 2022-07-28
Ngôn ngữ Metaquotes MQL4 và MQL5 : điểm khác nhau và hướng dẫn lập trìnhMQL4 và MQL5. Hướng dẫn lập trình MQL4 và điểm khác biệt của MQL4 so với MQL5 | Litefinance

Michael Chistyukhin

https://vh2.com.vn/vi/blog/authors/michael-chistyukhin/

logo2022 – 07-2820 22-07-28Ngôn ngữ MetaQuotes 4 và 5 là công cụ tăng trưởng ứng dụng cho MetaTrader Client Terminal dựa trên những nền tảng thuộc dòng MetaTrader thế hệ thứ tư và thứ năm. Các ngôn từ này phân phối cho người dùng công cụ để tăng trưởng kế hoạch thanh toán giao dịch tự động hóa phía người mua
Đây là bài hướng dẫn cụ thể về lập trình MetaTrader MQL4 và MQL5. Sau khi đọc bài viết này, bạn sẽ hiểu MQL là gì, sự độc lạ giữa hai phiên bản ngôn từ lập trình mới nhất và cách thao tác với chúng. Tại đây bạn sẽ tìm thấy hướng dẫn chi tiết cụ thể kèm theo hình ảnh về cách viết một EA. Cùng khởi đầu nào !

MQL4 và MQL5 là gì?

Ngôn ngữ MQL4 và MQL5 có nhiều điểm tương đương. Do đó, tất cả chúng ta sẽ bàn riêng về những điểm độc lạ sau, còn hiện tại tất cả chúng ta sẽ thống nhất gọi chung cả hai là MQL và không xác lập phiên bản .MQL là ngôn từ lập trình được tích hợp sẵn trên nền tảng MetaTrader. Môi trường tăng trưởng MetaQuotes Language Editor được cho phép bạn viết robot thanh toán giao dịch, chỉ báo hoặc những ứng dụng khác của riêng mình bằng MQL, cũng như biên dịch và gỡ lỗi cho chúng. Môi trường này được phân phối kèm theo MetaTrader Client Terminal cùng với toàn bộ thông tin tìm hiểu thêm .Nếu bạn đã từng tối thiểu một lần góp vốn đầu tư vào gia tài nào đó, mua đô la để gửi ngân hàng nhà nước ví dụ điển hình, thì bạn sẽ hiểu rằng việc góp vốn đầu tư yên cầu sự trấn áp không ngừng nghỉ. Tôi tin là bạn đã nhiều lần tự hỏi những câu hỏi như :

  • Có nên thoát lệnh giao dịch khi giá đang ở đỉnh không?
  • Làm thế nào để xác định được giá của một tài sản có tiếp tục tăng không hay thị trường sẽ quay đầu?
  • Phải chăng đây là tín hiệu giả và không cần phải chấp nhận rủi ro và vội vàng mở một vị thế?

Bạn cần phải theo kịp thị trường và đưa ra quyết định hành động thanh toán giao dịch kịp thời cả ngày lẫn đêm trong những phiên tích cực nhất. Khi thanh toán giao dịch nhiều gia tài cùng một lúc, nhịp độ việc làm sẽ càng dồn dập hơn .MQL được cho phép bạn tiến hành bất kể kế hoạch hoặc thuật toán thanh toán giao dịch nào dưới dạng một chương trình máy tính. Sau khi được khởi động, chương trình này liên tục chạy trên một máy trạm trong MetaTrader Client Terminal. Ngoài ra, bộ mẫu sản phẩm gồm có 1 số ít robot thanh toán giao dịch, chỉ báo và script từ nhà tăng trưởng nền tảng dưới dạng code nguồn, tạo điều kiện kèm theo thuận tiện cho việc tăng trưởng ngôn từ và những kỹ thuật vốn có. Ngoài ra MQL được phân phối kèm theo thông tin tìm hiểu thêm chi tiết cụ thể trực tuyến và ngoại tuyến. Có một hội đồng lớn những người dùng ngôn từ này .Giả sử bạn nghĩ ra một chỉ báo mê hoặc hoặc một thuật toán thanh toán giao dịch mưu trí để sử dụng trong thanh toán giao dịch hoặc hoàn toàn có thể bạn muốn nghiên cứu và phân tích thị trường bằng cách sử dụng mạng thần kinh ? Không số lượng giới hạn. Với MQL, bạn hoàn toàn có thể tiến hành bất kể sáng tạo độc đáo nào dưới dạng chỉ báo, expert hoặc ứng dụng khác, biên dịch, gỡ lỗi, kiểm tra tài liệu lịch sử dân tộc trong trình thử nghiệm kế hoạch – bạn hoàn toàn có thể làm toàn bộ mà không phải chịu rủi ro đáng tiếc kinh tế tài chính và sử dụng nó một cách tích cực trong thanh toán giao dịch .Tóm lại, MQL được cho phép viết những tiện ích để theo dõi trạng thái của thông tin tài khoản thanh toán giao dịch, giám sát những chỉ báo và mức, nhận tín hiệu thanh toán giao dịch và xác lập điểm vào và thoát thị trường. Các công cụ ngôn từ được cho phép robot thanh toán giao dịch hoặc chỉ báo tổ chức triển khai trao đổi thông tin với máy chủ từ xa bằng giao thức TCP, gồm có mã hóa TLS hoặc giao thức HTTP. Có thể gửi tài liệu qua FTP cũng như thông tin đẩy đến máy khách di động MetaTrader hoặc tới email của người dùng. Một chương trình được viết tốt và gỡ lỗi sẽ hoạt động giải trí cho đến khi bạn quyết định hành động thực thi đổi khác hoặc sửa chữa thay thế trọn vẹn nó bằng một chương trình khác. Bạn chỉ cần đảm nhiệm việc trấn áp chung .

Điểm lại lịch sử của Ngôn ngữ MQL4 và MQL5

MQL sinh ra là tác dụng của sự tăng trưởng tiến hóa của nền tảng MetaTrader. Đây là một công cụ để quản trị tự động hóa những thông tin tài khoản thanh toán giao dịch trong MetaTrader. Tôi sẽ không đi sâu vào cụ thể mà chỉ nhắc lại ngắn gọn .

  • MetaQuotes đã phát hành Ngôn ngữ MetaQuotes cùng với nền tảng MetaTrader, trước đây là ứng dụng FXCharts. MQL đã phát triển lên phiên bản thứ hai cùng với bản cập nhật MetaTrader 3. Trong phiên bản này, MetaQuotes đã triển khai API, được cung cấp cho khách hàng như một lớp bổ sung giữa MetaTrader Client và MetaTrader Server.
  • Thế hệ thứ tư của nền tảng được phát hành vào ngày 1 tháng 7 năm 2005. MQL4 được phát hành kèm theo. Ngôn ngữ lúc này đã không còn khả năng tương thích ngược với phiên bản trước. MetaQuotes cũng ngừng hỗ trợ API terminal khách hàng, nhưng đã mở rộng khả năng của ngôn ngữ và cho phép tích hợp các thư viện DLL tùy chỉnh vào ứng dụng MQL. API chỉ còn có sẵn cho các nhà môi giới ở cấp máy chủ, quản trị và quản lý.

Vào tháng 6 năm 2010, sau nhiều bản phát hành, MetaTrader 5 đã được ra đời. MetaQuotes đã phong cách thiết kế lại logic thanh toán giao dịch, vô hiệu hầu hết những hạn chế do cấu trúc nội bộ của nền tảng. Nhưng cho đến nay MT5 vẫn không hề cạnh tranh đối đầu với thế hệ thứ tư xét về mức độ phổ cập .Vào tháng 2 năm năm trước, MQL4 đã được update cùng với bản dựng 600 của terminal người mua MT4. MetaQuotes đã nâng cấp cải tiến MQL4, đưa vào hầu hết những tính năng từ MQL5, đồng thời tăng cường MQL4 lên Lever của MQL5 .

Tính năng của ngôn ngữ lập trình MQL4 và MQL5

MQL được sử dụng để tạo ra những kế hoạch thanh toán giao dịch tự động hóa. Code MQL được diễn giải sơ bộ thành code C + +, sau đó được biên dịch thành code thực thi hoạt động giải trí bên trong terminal dưới dạng thư viện động nội bộ. Nếu tất cả chúng ta vẽ một đường song song với đường chính, thì sẽ tương tự như như việc đưa thư viện DLL vào trong code thực thi của chương trình chính. Cách tiếp cận này giúp thuận tiện tăng trưởng một ngưỡng thấp để tham gia vào nghành thanh toán giao dịch tự động hóa. Ngôn ngữ này thông dụng trong giới thanh toán giao dịch, mặc kệ khoanh vùng phạm vi trình độ hóa hẹp và sự phụ thuộc vào vào nền tảng .MetaQuotes chăm nom người dùng bằng cách phân phối thông tin trợ giúp chi tiết cụ thể cho tổng thể những ứng dụng của họ. Tài liệu tìm hiểu thêm về lập trình MQL4 và MQL5 được phân phối cùng với MetaEditor bằng nhiều ngôn từ dưới dạng tệp HTM. Do đó, bạn luôn có được hướng dẫn cụ thể kèm theo code ví dụ để tiến hành hành vi mong ước .Một hội đồng lớn những nhà thanh toán giao dịch và lập trình viên đã hình thành xung quanh MQL. Có những công cụ để lập trình viên và nhà thanh toán giao dịch tiếp xúc với nhau. Một lớp ứng dụng tạo sẵn đã được tạo ra để đơn giản hóa quy trình tiến độ thanh toán giao dịch. Chợ trực tuyến để trao đổi những ứng dụng trả phí hoặc không lấy phí có sẵn tại mql5.com. Terminal thanh toán giao dịch tích hợp kho ứng dụng, codebase, những bài viết và tín hiệu từ những nhà thanh toán giao dịch khác. Kho ứng dụng cung ứng hàng trăm giải pháp trả phí và không lấy phí như chỉ báo, advisor, script và đủ loại tiện ích. Mua một chương trình tạo sẵn sẽ thuận tiện hơn là nỗ lực ý tưởng ra thứ đã có sẵn rồi .Nếu bạn quyết định hành động tự học MQL để tạo ứng dụng của riêng mình, hãy đọc bài viết này để tìm hiểu và khám phá về những yếu tố thường gặp khi mới khởi đầu đi theo hướng này. Bài viết chỉ trình làng kỹ năng và kiến thức cơ bản nhập môn và không dành cho fan hâm mộ nâng cao .Các nhà tăng trưởng tương hỗ cung ứng thông tin cho hội đồng MQL bằng cách liên tục xuất bản những bài viết hướng dẫn về nhiều chủ đề khác nhau trong quốc tế thanh toán giao dịch. Tác giả của những bài viết khảo sát những kỹ thuật lập trình mới, trong đó có khởi tạo mạng thần kinh, nghiên cứu và phân tích và giải pháp cho những yếu tố và những hạn chế của ngôn từ, nghiên cứu và phân tích và thử nghiệm những kế hoạch thanh toán giao dịch, tìm kiếm và tiến hành những thuật toán mới .Trình hướng dẫn của MQL cung ứng 8 tùy chọn cho MQL4 và 10 tùy chọn cho MQL5. Dưới đây là ảnh chụp màn hình hiển thị của trình hướng dẫn tệp cho cả hai phiên bản ngôn từ .Cùng xem xét những tùy chọn phổ cập nhất :

  • Expert Advisor/Trading robot (Robot giao dịch);
  • Indicator (Chỉ báo);
  • Script;
  • Include (.mqh).

Sau khi biên dịch, những ứng dụng này ở dạng code thực thi sẽ được lưu trong thư mục thích hợp của MetaTrader Client Terminal ( File -> Open Data Folder ) : Expert, Indicators, Script, v.v. Sau đó, sau khi được khởi tạo trên biểu đồ, chúng sẽ được khởi chạy để cung ứng với những sự kiện tạo bởi MetaTrader Client Terminal trong khi hoạt động giải trí. Sự kiện là tác nhân khởi chạy chương trình tùy chỉnh và được cho phép bạn theo dõi quy trình khởi tạo và hủy khởi tạo, nhận làm giá mới, sự kiện tùy chỉnh trên biểu đồ, v.v.Ngoài ra, bạn hiện đã hoàn toàn có thể tạo ứng dụng bằng Python. Theo đó, những công cụ lập trình Python có sẵn trong terminal thanh toán giao dịch .Các trình xử lý sự kiện sau đây được diễn đạt trong Tài liệu tìm hiểu thêm của MQL4 .Trong MQL5, số lượng trình giải quyết và xử lý đã tăng lên so với MQL4. Danh sách hiện tại như sau :Sau này, list sự kiện đã được lan rộng ra. Hiện tại, list như sau :

Robot giao dịch hay Expert Advisor

Trong hội đồng những nhà thanh toán giao dịch, nó còn được gọi là Expert. Expert Advisor được đính kèm vào biểu đồ trong MetaTrader Client Terminal và hoạt động giải trí liên tục với điều kiện kèm theo là terminal thanh toán giao dịch đang chạy và duy trì liên kết với sever thanh toán giao dịch. EA được sử dụng để tiến hành hàng loạt kế hoạch thanh toán giao dịch bất kể, trấn áp trạng thái thông tin tài khoản, triển khai những hoạt động giải trí thanh toán giao dịch trong 1 số ít điều kiện kèm theo nhất định và quản trị những đối tượng người dùng đồ họa. Mỗi lần nhận được tick mới cho một công cụ, robot thanh toán giao dịch sẽ mở lệnh thanh toán giao dịch. Expert Advisor cũng hoàn toàn có thể được khởi chạy để phân phối một số ít sự kiện khác : OnTimer, OnChartEvent, OnTesterTimer, v.v.EA được sử dụng để tạo giao diện người dùng. Robot, cũng như chỉ báo, có quyền truy vấn vào những đối tượng người tiêu dùng đồ họa .Dưới đây là code của một robot thanh toán giao dịch đơn thuần. Sau mỗi tick mới trên biểu đồ của mã gia tài ( symbol ) mà EA đang hoạt động giải trí, EA sẽ kiểm tra lệnh thị trường. Nếu đã có lệnh mở trên một symbol nào đó, EA sẽ đợi lệnh đó đóng. Nếu không có lệnh, EA sẽ mở một lệnh ngược hướng với lệnh trước đó. Các tham số EA là : khối lượng, mức cắt lỗ và mức chốt lời do người dùng đặt. Trong lần chạy tiên phong, EA sẽ mở một vị thế mua trên một loại tiền tệ. Sau khi vị thế đó đóng, EA sẽ mở tiếp một lệnh bán, rồi sau đó mở một lệnh mua, v.v. Trong trường hợp không mở được lệnh, EA sẽ ghi một thông tin lỗi vào nhật ký và tạm nghỉ 60 giây, sau đó mở lại lệnh. EA không kiểm tra độ đúng chuẩn của những tham số do người dùng nhập, do đó, hãy theo dõi kỹ. Dưới đây là một số ít yếu tố tiềm ẩn hoàn toàn có thể nhận ra ngay :

  • Không kiểm tra được khả năng giao dịch tổng thể. Tính năng này có thể bị tắt bởi người dùng trong terminal hoặc chỉ tắt đối với advisor này. Máy chủ giao dịch cũng có thể đặt ra các hạn chế đối với giao dịch tự động.
  • Khối lượng có thể nhỏ hơn mức tối thiểu hoặc lớn hơn mức tối đa và có thể không phù hợp nếu máy chủ giới hạn bước khối lượng. Ví dụ: người dùng nhập 0,23 lot trong khi máy chủ có bước thay đổi tối thiểu là 0,05 lot. Do vậy EA không mở được lệnh và hàm OrderSend sẽ trả về lỗi.
  • Không kiểm tra được tính chính xác của mức dừng cho lệnh giao dịch. Mức này có thể không phù hợp với giá trị tối thiểu/tối đa cho phép hoặc không phù hợp với giới hạn do các mức đóng băng đặt ra.

Code đơn thuần nhất hoàn toàn có thể dùng làm mẫu để tiến hành những giải pháp ở quy mô lớn hơn .Mã này biên dịch và chạy trong MetaQuotes Language Editor 5 bản dựng 2375 vào ngày 31 tháng 3 năm 2020 .

Chỉ báo

Chỉ báo được sử dụng để hiển thị thông tin về tài liệu giá được quy đổi theo một cách nào đó. Tất cả những loại chỉ báo giao động, đường xu thế, fractal đều là chỉ báo. Chỉ báo có quyền truy vấn vào những công cụ đồ họa. MQL4 có 6 chỉ báo, trong khi MQL5 có đến 18 chỉ báo. Ví dụ : Đường trung bình động hiển thị một số ít giá trị giá trung bình và / hoặc làm mượt cho một period giá trong quá khứ và gián tiếp cho biết hướng giá tương lai của một công cụ. Đường này luôn hoạt động giải trí trên biểu đồ. Chỉ báo được update và thống kê giám sát lại khi nhận được một tick trên biểu đồ của công cụ mà chỉ báo đang hoạt động giải trí hoặc khi nhận được sự kiện từ người dùng .Có một hoặc một số ít bộ đệm được link với chỉ báo bất kể bên trong MetaTrader Client Terminal, tài liệu số sẽ được lưu trong đó. MQL4 cung ứng 32 bộ đệm cho một chỉ báo, trong khi MQL5 có tới 512 bộ đệm .Dưới đây là ví dụ về code nguồn của chỉ báo Bears, được phân phối bởi những nhà tăng trưởng nền tảng cùng với MetaTrader4 .

Script

Các nhà tăng trưởng sử dụng script để tạo ra những thuật toán không nhu yếu giải quyết và xử lý tài liệu thời hạn thực. Ví dụ : tải xuống tài liệu thống kê hoặc xuất thông tin gỡ lỗi. Script được thực thi ngay khi được sự kiện OnStart đính kèm vào biểu đồ bất kể. Đây là việc duy nhất mà script hoàn toàn có thể giải quyết và xử lý .Hình dưới đây là mã script để đóng toàn bộ những lệnh thị trường trên thông tin tài khoản. Script sẽ giải quyết và xử lý toàn bộ những lệnh, bất kể lệnh được khởi chạy trên biểu đồ của symbol nào. Trong trường hợp này, những lệnh chờ sẽ bị bỏ lỡ .Kết quả của việc chạy script này sẽ là đầu ra sau đây trong nhật ký MetaTrader :Nếu muốn script này giải quyết và xử lý những lệnh chờ riêng không liên quan gì đến nhau trong MQL4 thì quy trình tiến độ sẽ phức tạp hơn. Đầu tiên, hãy tạo một Thuộc tính để script hoàn toàn có thể hiển thị một hành lang cửa số tài liệu nguồn vào. Tiếp theo, thêm một Enum chứa 3 tùy chọn để đóng lệnh bằng một script : chỉ lệnh thị trường, chỉ lệnh chờ hoặc tổng thể những lệnh đang mở trên thông tin tài khoản. Sau đó, thêm một mảng để tàng trữ ticket lệnh chờ và điền tương ứng trong vòng lặp For tiên phong. Lúc này nó vẫn sẽ giải quyết và xử lý tùy chọn đóng lệnh do người dùng chọn .Kết quả là, tất cả chúng ta có một script như bên dưới, không riêng gì đóng tổng thể những lệnh mà còn tính đến lựa chọn của người dùng .

Include files (.mqh) library

Như tên gọi, Include (. mqh ) được sử dụng để chèn những loại chương trình khác vào MetaTrader Client Terminal. Nhà tăng trưởng có kinh nghiệm tay nghề sẽ có một bộ công cụ riêng để sử dụng lại nhiều lần trong nhiều ứng dụng khác nhau .Trong MetaQuotes Language Editor, bạn chỉ cần chỉ định đường dẫn đến tệp tiêu đề ( header file ) cần chèn tương quan đến vị trí của tệp đích. Khi biên dịch chương trình, MetaEditor sẽ tìm tệp này và chèn mã từ tệp đó thay vì thông tư # include. Lúc này toàn bộ mã trong thư viện sẽ khả dụng trong ứng dụng .Tương tự, những lập trình viên C và C + + sử dụng lại mã bằng cách chèn những tệp tiêu đề vào trong những dự án Bất Động Sản của họ và link với những tệp nhị phân .Ví dụ dưới đây trình diễn cách diễn giải đơn thuần nhất cho một mảng động hay còn gọi là std :: vector từ thư viện C + + chuẩn. Mã này biên dịch và hoạt động giải trí với phiên bản MetaEditor 5.00 bản dựng 2375 ngày 31 tháng 3 năm 2020 .

Loại dữ liệu và cú pháp của ngôn ngữ MQL4 và MQL5

Các loại tài liệu và cú pháp của ngôn từ được thừa kế từ C + +. Trước khi biên dịch, mã MQL được giải quyết và xử lý trước và được diễn giải thành mã C + + tương ứng, do đó, những cấu trúc hợp lệ trong bản nhiệm kỳ trước đó rất hoàn toàn có thể sẽ được biên dịch và hoạt động giải trí trong MQL. Lập trình viên biết ngôn từ C, C + + hoặc C # hoàn toàn có thể thuận tiện học được cách viết mã code MQL .

Loại dữ liệu

MQL có những loại tài liệu cơ bản sau :

  • Giá trị boolean;
  • Số thực chính xác đơn và kép;
  • Số nguyên chính xác đơn và kép, có dấu và không dấu;
  • Char để lưu trữ dữ liệu ký tự;
  • Kiểu liệt kê Enum, nhưng không hỗ trợ enum class;
  • Cấu trúc, lớp (class) và mẫu lớp.

Đồng thời, có tương hỗ thêm về sắc tố, chuỗi và ngày giờ như những loại tích hợp sẵn để giúp đơn giản hóa việc làm của nhà tăng trưởng. Cách thao tác với những loại này được tổ chức triển khai theo kiểu ngôn từ C bằng cách sử dụng những hàm global. Hành vi của một chuỗi MQL về cơ bản khác với họ std :: string của những mẫu C + + 03. Đừng nhầm lẫn .

Cú pháp của ngôn ngữ MetaQuotes

MQL có cú pháp tựa như như C + +. MQL thừa kế ngữ nghĩa từ bản nhiệm kỳ trước đó là tiêu chuẩn C + + 03 với một số ít đổi khác nhỏ. Hiện tại, MQL tuân thủ tiêu chuẩn C + + 03 xét về tính năng .Sự độc lạ chính giữa MQL và C + + là ngữ nghĩa khác nhau của con trỏ. Trong C + +, con trỏ là một địa chỉ ảo của tài liệu. Trong MQL, con trỏ là một descriptor, tựa như như descriptor theo chuẩn POSIX, một mã định danh dạng số, một loại vỏ bọc bên trên một con trỏ thô, mà nhờ đó những đối tượng người dùng được tạo trong bộ nhớ động và được link với mã định danh này sống sót. Toán tử mũi tên “ -> ” không được tương hỗ cho con trỏ MQL, dereferencing ( lấy giá trị biến con trỏ trỏ tới ) được thực thi bằng cách sử dụng toán tử dấu chấm “. ”. Descriptor cũng giống như con trỏ, phải bị xóa sau khi chương trình kết thúc. Tuy nhiên, nếu bạn quên hủy đối tượng người tiêu dùng mà trình giải quyết và xử lý này đề cập đến thì thời hạn chạy sẽ thực thi việc đó cho bạn khi chương trình được khủy khởi tạo .Ngôn ngữ MQL không có khái niệm biến trong thời điểm tạm thời và hoạt động tài liệu. MQL truyền tham chiếu và truyền giá trị những biến theo cách khác với C + +. Đối tượng phức tạp hoặc lớp tùy chỉnh sẽ được truyền tham chiếu cho hàm mặc dầu bạn có sử dụng toán tử Ampersand hay không .Có 1 số ít hạn chế so với bản nhiệm kỳ trước đó. Bạn không hề viết những hàm và mẫu với số lượng đối số đổi khác. Tuy nhiên, điều đáng chú ý quan tâm là 1 số ít hàm tích hợp sẵn như iCustom ( tất cả chúng ta sẽ nghiên cứu và phân tích ở phần sau của bài viết này ), printf, StringFormat, PrintFormat có số lượng đối số đổi khác. Đây là một nghịch lý !Làm việc với tài liệu và tham chiếu đối tượng người dùng trong MQL khác với C + + ở 1 số ít góc nhìn, nhưng những độc lạ này thuận tiện bị vô hiệu bằng cách sử dụng những thông tin từ trình biên dịch. Chữ ký của hàm tạo sao chép và toán tử gán sao chép khác nhau do sự khác nhau về ngữ nghĩa truyền tham chiếu những biến. Ngoài ra, không có move semantics để chuyển dời những biến và những instance của đối tượng người tiêu dùng trong MQL .

Sự khác biệt giữa mã code MQL4 và MQL5

Sự độc lạ giữa ngôn từ MQL thế hệ thứ tư và thứ năm xuất phất từ sự độc lạ giữa hai nền tảng MetaTrader4 và MetaTrader5. Cần quan tâm rằng kể từ khi phát hành MT4 bản dựng 600, chỉ có phiên bản thứ năm của MetaQuotes Language Editor được sử dụng để viết và biên dịch những chương trình trong MQL4 và MQL5. Đặc biệt, những ngôn từ hoạt động giải trí khác nhau với những hoạt động giải trí thanh toán giao dịch, vì nền tảng thứ năm có nhiều chính sách thanh toán giao dịch hơn và những khái niệm lệnh, thanh toán giao dịch và vị thế được tách riêng .Để gửi nhu yếu thì chỉ hoàn toàn có thể sử dụng hàm OrderSend, điều này trái ngược với phiên bản thứ tư, trong đó được cho phép sử dụng những tính năng riêng không liên quan gì đến nhau để sửa đổi hoặc xóa lệnh .

  MQL4 MQL5
Khung thời gian     9 (M1, M5, M15, M30, H1, H4, D, W, MN)     21 (M1, M2, M3, M4, M5, M6, M10, M12, M15, M20, M30, H1, H2, H3, H4, H6, H8, H12, D1, W1, MN1)
Kiểu vẽ 6DRAW_NONEDRAW_LINEDRAW_SECTIONDRAW_HISTOGRAMDRAW_ARROWDRAW_ZIGZAGWith build 600, the number has become consistent with the fifth version 18DRAW_NONEDRAW_LINEDRAW_SECTIONDRAW_HISTOGRAMDRAW_HISTOGRAM2DRAW_ARROWDRAW_ZIGZAGDRAW_FILLINGDRAW_BARSDRAW_CANDLESDRAW_COLOR_LINEDRAW_COLOR_SECTIONDRAW_COLOR_HISTOGRAMDRAW_COLOR_HISTOGRAM2DRAW_COLOR_ARROWDRAW_COLOR_ZIGZAGDRAW_COLOR_BARSDRAW_COLOR_CANDLE
Mô hình khởi chạy theo sự kiện OnInitOnStartOnDeinitOnTickOnCalculateOnTimerOnChartEventOnTester OnInitOnStartOnDeinitOnTickOnCalculateOnTimerOnTradeOnTradeTransactionOnBookEventOnChartEventOnTesterOnTesterInitOnTesterDeinitOnTesterPass
Giao dịch OrderSendOrderModify

OrderDelete

Hành vi được chỉ định bởi một tập hợp những tham số riêng không liên quan gì đến nhau cho từng công dụng. Điều này làm phức tạp thêm việc viết và gỡ lỗi chương trình .

OrderSendMột tính năng dùng cho mọi hoạt động giải trí. Hành vi bắt buộc được chỉ định trong cấu trúc MqlTradeRequest. Phản hồi được trả về cấu trúc MqlTradeResult. Việc phong cách thiết kế hành vi, kiểm tra tác dụng và gỡ lỗi chương trình sẽ trở nên thuận tiện hơn .
Bộ đệm dữ liệu chỉ báo     32 512
Chỉ báo tích hợp     Số lượng: 30 Số lượng : 38Các chỉ báo được tạo bằng cách sử dụng trình giải quyết và xử lý. Số lượng sao chép và mức tiêu thụ bộ nhớ được giảm bớt .
Chế độ giao dịch Hedging     NettingHedgingStock
Công cụ đồ họa OpenCL và DirectX Không
Thế hệ robot giao dịch Không Có. Đồng thời, bạn có thể chỉ định các mô-đun tín hiệu tùy chỉnh.

Vậy là có 1 số ít điểm độc lạ. Sau update trong bản dựng 600, MQL4 chỉ khác MQL5 ở tên nền tảng. Blog LiteFinance có một bài viết so sánh MetaTrader 4 và MetaTrader 5, bạn nên đọc bài viết nếu muốn tìm hiểu và khám phá sâu hơn về chủ đề này .

Lập trình chỉ báo MQL4: Cách viết Expert Advisor bằng MQL4 hoặc MQL5

Trước khi khởi đầu viết EA, cần hiểu rằng bạn phải có một kế hoạch thanh toán giao dịch. Chỉ khi đó, bạn mới hoàn toàn có thể mở màn hiện thực hóa ý tưởng sáng tạo dưới dạng một thuật toán chính thức. Code chỉ cung ứng những công cụ ngôn từ để triển khai một ý tưởng sáng tạo nhất định .Vì vậy, điều tiên phong bạn cần là một kế hoạch thanh toán giao dịch hiệu suất cao. Vấn đề tăng trưởng một kế hoạch thanh toán giao dịch hiệu suất cao nằm ngoài khoanh vùng phạm vi của bài viết, thế cho nên tối sẽ lấy một ví dụ đơn thuần. Giả sử trong những period có mức độ hoạt động giải trí thấp của công cụ “ trong vùng giá đi ngang ”, bạn hoàn toàn có thể mở lệnh ngược hướng với những mức số lượng giới hạn nhỏ. Điều này sẽ được cho phép bạn tận dụng những hoạt động thị trường đi ngang nhỏ để kiếm doanh thu .Chúng ta sẽ viết một Expert Advisor để tự động hóa việc mở lệnh thủ công bằng tay và trấn áp những số lượng giới hạn lệnh, sau đó khởi chạy EA trên thông tin tài khoản thanh toán giao dịch trong những period mà giá đi ngang .Lúc đầu, quá trình sẽ như nhau trong cả hai phiên bản ngôn từ. Để viết chương trình bằng MQL, bạn cần setup MetaTrader Client Terminal, gói mẫu sản phẩm đã gồm có MetaEditor. Lúc này bạn hoàn toàn có thể khởi chạy MetaEditor trực tiếp từ thư mục thao tác của terminal hoặc trải qua menu chính trong terminal thanh toán giao dịch : Công cụ ( Tools ) và sau đó trong MetaQuotes Language Editor ( F4 ). Trong hành lang cửa số MetaEditor ở menu chính, nhấp vào Tệp -> Mới ( File -> New ). Cũng hoàn toàn có thể nhấp vào Mới ( New ) trong menu đồ họa .

Cách tạo robot giao dịch MQL4

Trong Trình hướng dẫn của ứng dụng tạo EA MQL4, chọn Expert Advisor ( template ) và nhấp vào Tiếp theo ( Next ) .Tiếp theo, nhập những tham số để cung ứng cho người dùng giao diện tương tác với chương trình rồi xác nhận bằng cách nhấp vào OK. Ở đây tất cả chúng ta thêm :

  1. Công cụ giao dịch
  2. Lựa chọn hướng cho giao dịch đầu tiên mà robot sẽ mở. Tạm thời, đây là kiểu số nguyên, nhưng sau này chúng ta sẽ sửa code để chỉ chọn Mua hoặc Bán.

MetaEditor sẽ tự động hóa chèn trình xử lý sự kiện OnTick vào code. Bạn tự chọn phần còn lại. Như bạn hoàn toàn có thể thấy, tất cả chúng ta cũng có quyền truy vấn vào OnTimer, được cho phép gọi mọi lúc với tần suất được đặt cho bộ hẹn giờ, và OnChartEvent được gọi để phản hồi hành vi của người dùng với biểu đồ. Ở đây bạn hoàn toàn có thể thấy MQL5 có nhiều trình giải quyết và xử lý hơn .Tiếp tục và chọn những trình giải quyết và xử lý sự kiện ở chính sách thử nghiệm. MQL5 được cho phép chọn nhiều sự kiện hơn trong chính sách trình thử nghiệm và theo đó, có nhiều trình xử lý sự kiện hơn .Trong hai bước trước, tôi đã để trống toàn bộ những tùy chọn. Tất cả logic của tất cả chúng ta sẽ được thực thi với hàm OnTick. Hàm này được gọi mỗi khi có tick mới cho một symbol .Sau khi nhấp vào nút Kết thúc ( Finish ), MetaEditor sẽ tạo một mẫu cho Expert Advisor với tên và tham số được chỉ định. Các trình xử lý sự kiện đã chọn cũng sẽ được chèn vào code. Tôi sẽ không đi sâu vào chi tiết cụ thể của từng trình giải quyết và xử lý. Mọi thông tin thiết yếu đều có trong hướng dẫn tìm hiểu thêm .Code này hoàn toàn có thể đã được biên dịch và chạy trong terminal thanh toán giao dịch. Nhưng sẽ không có gì xảy ra. Chúng ta có những biến đầu vào chưa sử dụng. Hàm OnInit luôn thông tin cho terminal về khởi tạo thành công xuất sắc, trong khi OnTick và OnDeinit không chứa bất kể hướng dẫn nào .Cùng mở màn viết code nhé .Đầu tiên, hãy quét dọn một chút ít. Loại bỏ những khoảng chừng trắng thừa và rút ngắn nhận xét xuống còn một dòng. Sau đó, tất cả chúng ta định nghĩa enum TradeCmd ( dòng 11-14 ) để chỉ xu thế cho thanh toán giao dịch tiên phong theo cách tự nhiên chứ không phải là một số lượng. Sau đó, đổi khác kiểu nguồn vào của biến FirstTradeDirection từ int thành TradeCmd ( 20 ). Bước tiếp theo là tạo biến static global Direction với kiểu TradeCmd xét hướng của thanh toán giao dịch trước đó và mở thanh toán giao dịch tiếp theo ngược hướng .Lúc đầu, tôi đã quên thêm những biến cho khối lượng thanh toán giao dịch, mức cắt lỗ và chốt lời trong trình hướng dẫn. Giờ tất cả chúng ta sẽ thêm chúng với từ khóa đầu vào và với những setup bên ngoài còn lại .Hãy chuyển sang hàm OnTick. Chúng ta sẽ nghiên cứu và phân tích tính khả dụng của những thanh toán giao dịch mở. Để làm điều này, tất cả chúng ta lặp lại toàn bộ những thanh toán giao dịch đang mở bằng cách sử dụng một chu kỳ luân hồi đơn trong khoanh vùng phạm vi [ 0, TotalTrades ). Chúng ta kiểm tra lần lượt xem symbol của thanh toán giao dịch đã chọn có khớp với symbol được chỉ định trong InputSymbol hay không. Nếu có tối thiểu một thanh toán giao dịch như vậy thì không cần phải làm gì cả. Và tất cả chúng ta thoát khỏi hàm OnTick trước hạn với Return ( dòng 29-35 ). Hãy chờ lần khởi chạy tiếp theo .Nếu không, bạn cần phải mở một thanh toán giao dịch. Hãy tìm hiểu thêm hướng dẫn sử dụng MQL4 để sử dụng đúng hàm OrderSend và gửi nhu yếu đến sever thanh toán giao dịch. Khai báo có dạng như sau :Hãy xem xét những tham số theo thứ tự :

  1. Symbol. Chúng ta đã có tham số này, nhưng sẽ không kiểm tra tính chính xác và chỉ dựa vào đầu vào chính xác từ người dùng.
  2. CMD. Đối với tham số này, chúng ta sử dụng biến global static Direction.
  3. Volume (Khối lượng). Do người dùng chỉ định. Bạn cần phải kiểm tra giá trị đã nhập cho các giới hạn: tối thiểu, bước thay đổi khối lượng tối đa và tối thiểu.
  4. Price (Giá). Giá Ask nếu là mua, giá Bid nếu là bán.
  5. Slippage (Độ trượt). Trong trường hợp này, tham số này không quan trọng. Đặt tham số này thành 2 pips.
  6. Stoploss. Tham số này phụ thuộc vào hướng của giao dịch. Giá trị phải thấp hơn giá mở cửa nếu mua và lớn hơn giá mở cửa nếu bán.
  7. Takeprofit. Giống như stop loss, tham số này phụ thuộc vào hướng của giao dịch.

Chúng ta chưa cần chăm sóc đến 4 tham số có giá trị mặc định còn lại. Do đó, để mở một thanh toán giao dịch, tất cả chúng ta có : InputVolume ( khối lượng ), Direction ( hướng của thanh toán giao dịch ), InputSymbol ( mã gia tài ), đặt độ trượt thành 1 điểm. Những gì tất cả chúng ta cần thống kê giám sát tùy thuộc vào Direction : price ( giá Open ), sl ( cắt lỗ ) và tp ( chốt lời ). Nếu tất cả chúng ta mua, thì price là Ask, Cắt lỗ thấp hơn giá hiện tại, Chốt lời cao hơn, ngược lại nếu tất cả chúng ta bán thì price là Bid, Cắt lỗ cao hơn giá hiện tại và Chốt lời thấp hơn. Chúng ta cũng cần 2 biến bổ trợ. Một biến là để quy đổi mức số lượng giới hạn từ điểm thành điểm giá trị danh nghĩa, tức là giá trị tối thiểu mà làm giá của một symbol hoàn toàn có thể biến hóa. Biến thứ hai là để chuẩn hóa những giá trị là số thực, cũng là số những chữ số có ý nghĩa trong phần thập phân của làm giá .Chuyển đổi mã sau sang MQL .Chúng ta trực tiếp mở một thanh toán giao dịch. Chúng ta đặt lại biến mạng lưới hệ thống _LastError bằng hàm tích hợp ResetLastError. Sau đó gửi nhu yếu bằng OrderSend và ghi hiệu quả vào biến tác dụng. Có hai lựa chọn để tăng trưởng những sự kiện :

  1. Giao dịch đã được mở thành công nếu kết quả chứa giá trị lớn hơn 0, ticker của giao dịch. Vì vậy, cần thay đổi giá trị Direction để mở giao dịch theo hướng ngược lại vào lần sau.
  2. Nếu kết quả chứa giá trị âm, thì giao dịch chưa được mở. Bạn cần kiểm tra lỗi trước đó bằng GetLastError, phân tích và xử lý: thử lại, nghỉ một lúc, xuất thông tin gỡ lỗi vào nhật ký, v.v. Để đơn giản, tôi sẽ xuất giá trị của lỗi trước đó vào nhật ký.

Cùng xem lỗi này .Chúng ta đã viết vài chục dòng code và robot thanh toán giao dịch đã sẵn sàng chuẩn bị. Tôi thừa nhận là nó chưa hữu dụng lắm, nhưng đây hoàn toàn có thể là một ví dụ tuyệt vời cho thấy viết code không yên cầu quá nhiều kỹ năng và kiến thức và nỗ lực .Đây là list vừa đủ nếu bạn cần .Chúng ta biên dịch code và khởi chạy Expert Advisor trong terminal thanh toán giao dịch .

Cách tạo EA trong MQL5

Ở đây MQL5 có một ưu điểm rõ ràng so với MQL4. Bạn hoàn toàn có thể tạo robot thanh toán giao dịch trong phiên bản thứ năm chỉ sau một vài cú nhấp chuột mà không thực sự viết một dòng code nào .Trong MetaEditor, nhấp vào New và chọn Expert Advisor ( generate ) trong trình hướng dẫn của ứng dụng .Đặt tên cho Expert Advisor này là MQL5_Generated_Robot. Không bắt buộc chỉ định tác giả và website hoặc hồ sơ của tác giả. Thêm những tham số của advisor nếu cần : symbol và khung thời hạn thanh toán giao dịch. Nhấp đúp để kích hoạt tham số, nhấp vào tên hoặc giá trị của biến để biến hóa những giá trị mặc định được đề xuất kiến nghị. Bạn hoàn toàn có thể đặt bất kể symbol nào tùy ý. Tôi đã chọn symbol trên biểu đồ hiện tại để EA hoạt động giải trí. Tôi đặt khung thời hạn ở M15 để tăng năng lực Open tín hiệu thanh toán giao dịch .Tiếp theo, tất cả chúng ta cần chọn một tín hiệu và thiết lập của nó. Tại đây, bạn hoàn toàn có thể ứng biến và thử phối hợp những tín hiệu do nhà tăng trưởng yêu cầu theo nhiều cách. Những tín hiệu này sẽ tạo ra những sự kiện để Expert triển khai thanh toán giao dịch .Bạn hoàn toàn có thể thêm những tín hiệu tùy chỉnh vào phần này, gồm có cả những tín hiệu từ trình giám sát trên mql5.com. Các tùy chọn sau được cung ứng trong nền tảng theo mặc định :Tôi đã chọn ” Trading at the intersection of two averages ” ( Giao dịch tại điểm giao nhau của hai đường trung bình ) và đặt period thành 21 và 55. Không nên chọn period quá ngắn nếu muốn giảm tín hiệu giả. Giữ nguyên symbol hiện tại. Ví dụ : tất cả chúng ta sẽ thanh toán giao dịch EURJPY và nhận tín hiệu từ những đường trung bình vận dụng cho tài liệu giá của cặp EURJPY. Chọn một symbol khác ở đây nếu kế hoạch của bạn thanh toán giao dịch công cụ nhờ vào vào hành vi của một công cụ khác. Tôi cũng đặt khung thời hạn ở M15 .

Xác nhận. Chúng ta thấy rằng một tín hiệu đã được thêm vào symbol và khung thời gian hiện tại để tạo ra các sự kiện cho EA.

Chuyển sang chính sách Trailing Stop. Ở đây tôi đã chọn số lượng giới hạn kích cỡ cố định và thắt chặt. Tôi cũng đặt lệnh cắt lỗ ở 150 điểm và chốt lời ở 200 điểm .Tiếp theo, tất cả chúng ta hoàn toàn có thể chọn một trong năm chính sách quản trị tiền cho thông tin tài khoản thanh toán giao dịch. Giao dịch có sẵn với :

  • Khối lượng giao dịch cố định;
  • Ký quỹ cố định;
  • Rủi ro cố định;
  • Khối lượng giao dịch cho phép tối thiểu;
  • Khối lượng giao dịch được tối ưu hóa.

Tôi đã chọn thanh toán giao dịch với rủi ro đáng tiếc cố định và thắt chặt là 1 % số tiền trong thông tin tài khoản .Nhấp vào Xong ( Done ) và thu doanh thu ! Vậy là tất cả chúng ta vừa tạo một Expert Advisor mà không cần viết một dòng code nào .Hãy xem xét kỹ hơn và thực thi nghiên cứu và phân tích nguồn một chút ít .Phần đầu bảng và những thuộc tính đều quen thuộc. Tiếp đến là chèn những mô-đun thư viện. Expert là robot của tất cả chúng ta. MACross là trình tạo tín hiệu cho sự giao cắt của Đường trung bình động, TrailingFixedPips là mô-đun trấn áp mức số lượng giới hạn, MoneyFixedRisk là mô-đun quản trị rủi ro đáng tiếc. Sau đó là thiết lập gồm có những biến nguồn vào để xác lập giao diện tương tác với ứng dụng. Trông rất quen phải không ? Dĩ nhiên rồi ! Chúng ta đã thiết lập chúng trong Trình hướng dẫn tạo Expert Advisor. Các giá trị mặc định hoàn toàn có thể được biến hóa sau tại đây .Tiếp theo, một biến global tự động hóa kiểu CExpert sẽ được khai báo, biến này được khởi tạo với giá trị mặc định. Đối với một đối tượng người tiêu dùng, điều này có nghĩa là hàm tạo mặc định đã được gọi. Trong phần nội dung của OnInit, EA được khởi tạo, những tín hiệu và bộ lọc được tạo và khởi tạo với những giá trị được chỉ định trong setup. Dưới đây là code sau khi vô hiệu toàn bộ những mục kiểm tra hiệu quả khởi tạo thành công xuất sắc và những descriptor kiểm tra tính hợp lệ để giảm bớt số lượng code trực quan .Dưới đây bạn hoàn toàn có thể thấy những hàm OnDeinit, OnTick, OnTimer, OnTrade. Mỗi hàm chỉ gọi phương pháp tương ứng của lớp CExpert .Nếu bạn quan sát kỹ, trong trình điều hướng bên trái trong thư mục Bao gồm -> Expert, bạn hoàn toàn có thể thấy những tín hiệu và mô-đun có sẵn trong trình tạo. Theo đó, bạn hoàn toàn có thể thêm 1 số ít giải pháp chuyên biệt vào trình tạo và tạo ra một số ít giải pháp cho bất kể nhu yếu nào chỉ sau vài cú nhấp chuột .Hãy thử biên dịch code. 0 lỗi và 0 cảnh báo nhắc nhở tức là bạn đã thành công xuất sắc. Để khởi chạy chính sách thử nghiệm kế hoạch, hãy nhấn đồng thời Ctrl và F5 hoặc nhấp vào nút trong menu đồ họa ở trên cùng .Quyền trấn áp được chuyển đến MetaTrader Client Terminal trong thiết lập của trình thử nghiệm kế hoạch. Sau đó, tất cả chúng ta chọn tệp để kiểm tra và định thông số kỹ thuật những tham số còn lại : symbol, khung thời hạn, độ sâu lịch sử vẻ vang, số dư và đòn kích bẩy của thông tin tài khoản thanh toán giao dịch, v.v. Có nhiều setup và mỗi thiết lập đều được miêu tả trong tệp tìm hiểu thêm. Để biết thông tin chi tiết cụ thể về những thiết lập và chính sách thử nghiệm, hãy chọn trình thử nghiệm và nhấn F1 .Để khởi đầu, hãy nhấn Bắt đầu ở góc dưới bên phải của trình thử nghiệm và nếu thử nghiệm xảy ra mà không tối ưu hóa, thì bạn hoàn toàn có thể chọn chính sách trực quan hóa cho kế hoạch của mình .Các nhà tăng trưởng đã diễn đạt từng mô-đun được tích hợp sẵn và tín hiệu trong https://www.mql5.com/en/docs/standardlibrary/expertclasses. Hãy tìm hiểu thêm tài liệu để có thêm kiến thức và kỹ năng về yếu tố này .

Ưu và nhược điểm của ngôn ngữ MQL4 và MQL5

Nhược điểm chính là mục tiêu của những ngôn từ này. Ngôn ngữ Truy vấn MetaQuotes là ngôn từ viết ứng dụng chỉ dành cho MetaTrader. Chỉ hoàn toàn có thể biên dịch và gỡ lỗi code MQL trong thiên nhiên và môi trường MetaEditor. Chỉ MetaTrader Client Terminal mới hoàn toàn có thể khởi chạy chương trình để thực thi. Không thể quản trị bộ nhớ thủ công bằng tay. Bạn vẫn phải tạo nhiều biến hoặc tạo biến trong khoanh vùng phạm vi động, nhưng sẽ không có quyền truy vấn vào địa chỉ ảo của nó .Có nhiều giá trị hơn. Ngưỡng đầu vào thấp, đặc biệt quan trọng nếu bạn đã có kinh nghiệm tay nghề tăng trưởng bằng những ngôn từ tĩnh statically typed. Hiệu suất cao ở Lever C và C + +. Hỗ trợ phong thái lập trình hướng đối tượng người dùng : tính ngắn gọn và năng lực lan rộng ra, tính thừa kế, tính đa hình và những phương pháp lớp ảo. Có thể tạo những mẫu cho những lớp và hàm, tức là tính đa hình xét về tham số. Tất cả những điều này được cho phép code được tái sử dụng nhiều lần. Cơ sở hạ tầng không tính tiền gồm có terminal thanh toán giao dịch, thiên nhiên và môi trường tăng trưởng, trình thử nghiệm kế hoạch, thư viện tích hợp .

Chuyển đổi MQL4 sang MQL5

Cùng xem xét việc update để quy đổi một chương trình từ phiên bản này sang phiên bản khác qua ví dụ về một robot, đã được trình diễn ở phần trên của bài viết trong phần năng lực của ngôn từ. Để triển khai việc này, hãy tạo một Expert Advisor trống trong MetaEditor 5 và sao chép code nguồn của Expert Advisor MQL4_Example_EA vào đó. Bạn sẽ không hề biên dịch code này mà không biến hóa, rất nhiều lỗi sẽ xảy ra khi bạn triển khai .Lúc đầu, phần nhiều sẽ không có gì biến hóa, ngoại trừ một vài điểm :

  1. Xóa #property strict khỏi các chỉ thị tiền xử lý để có thể biên dịch code MQL4.
  2. Chuyển quy trình tạo biến static Direction phía trên hàm khởi tạo EA thành khởi tạo trong OnInit theo cách đặc biệt, tùy thuộc vào các vị thế có sẵn. Điều này sẽ cho phép thay đổi cài đặt EA trong quá trình giao dịch sau này.

Lưu ý rằng giờ đây việc chọn thanh toán giao dịch cho bất kể symbol nào trong MQL5 đều thuận tiện hơn khi sử dụng hàm PositionSelect tích hợp sẵn mà không cần phải tìm kiếm trong toàn bộ những thanh toán giao dịch đang mở .Hãy xem xét tổng lực hàm OnTick. Chúng ta sẽ sử dụng PositionSelect để kiểm tra vị thế mở cho một symbol. Nếu không có, hãy vào bên trong phần nội dung if và chuẩn bị sẵn sàng gửi nhu yếu mở thanh toán giao dịch. MQL5 cung ứng cấu trúc MqlTradeRequest để tạo nhu yếu, trái ngược với một loạt những tham số trong MQL4. Tôi sẽ không xem xét riêng từng nghành. Xin chú ý quan tâm rằng giống như trong MQL4, tất cả chúng ta có 4 trong 7 tham số bắt buộc : symbol thanh toán giao dịch, khối lượng, hướng và độ lệch so với giá nhu yếu. Chúng ta giám sát 3 tham số còn lại ( giá Open, cắt lỗ và chốt lời ) tùy thuộc vào hướng thanh toán giao dịch. Chúng ta điền vào cấu trúc theo thứ tự. Tạm thời không cần chuẩn hóa những số thực, thế cho nên không cần biến chữ số .Gửi nhu yếu bằng phiên bản ngôn từ mới nhất sẽ ngắn gọn hơn nhiều. Tất cả thông tin về tác dụng thực thi hàm OrderSend đã được trả về trong MQLTradeResult .Tôi đã có được code bên dưới sau khi gỡ lỗi và một loạt những thử nghiệm. Kích thước không đổi khác, mặc dầu tất cả chúng ta đã đổi khác logic nhu yếu những hành vi bổ trợ ở quy trình tiến độ khởi tạo trong OnInit .Tóm lại, tăng cấp những ứng dụng từ MQL4 lên MQL5 rất thuận tiện. Nếu bạn có kỹ năng và kiến thức cơ bản về MQL thì sẽ không khó để tự thực thi .Hơn nữa, tôi đã chọn ra 1 số ít câu hỏi thường gặp nhất về MQL và nỗ lực vấn đáp ngắn gọn thấu đáo .

Hỏi đáp về MQL4 và MQL5

Lập trình MQL4 là gì?Ngôn ngữ MetaQuotes là một ngôn từ lập trình cấp cao được sử dụng để viết ứng dụng cho nền tảng thanh toán giao dịch MetaTrader với kiểu gõ tĩnh yếu có cú pháp gần giống với cú pháp của ngôn từ C + + nhiệm kỳ trước đó. Ngôn ngữ MetaQuotes thực thi khái niệm đa quy mô. Trong quy trình viết code, bạn hoàn toàn có thể sử dụng cách tiếp cận hướng đối tượng người dùng, hàm, theo quy trình tiến độ hoặc hỗn hợp. OOP tương hỗ tính ngắn gọn, thừa kế và đa hình. Có sẵn nhiều mẫu hàm và lớp. Tuy nhiên bạn không hề sử dụng metaprogramming với đo lường và thống kê thời hạn biên dịch .Làm thế nào để viết code MQL4?

Để viết chương trình bằng MQL, bạn cần cài đặt MetaTrader Client Terminal. Gói sản phẩm bao gồm một môi trường MetaEditor để phát triển các ứng dụng trong MQL. Khởi chạy MetaEditor bằng cách sử dụng menu chính Tools -> MetaQuotes Language Editor (F4). Vậy là bạn đã sẵn sàng để viết chương trình MQL đầu tiên của mình.

Kết quả của việc chạy một chương trình như vậy trong terminal thanh toán giao dịch sẽ là đầu ra sau :

Làm thế nào để chuyển đổi từ ex4 sang MQL4?

Mq4 là một tệp văn bản đơn giản. Tiện ích mở rộng này cho phép hệ điều hành tự động liên kết tệp với môi trường phát triển MetaEditor. Tệp ex4 là tệp thực thi không thể đọc dưới dạng văn bản và chứa dữ liệu ở dạng code nhị phân.

Trong quá trình biên dịch, code chương trình mq4 được chuyển đổi thành code ex4 thực thi. Quy trình chuyển đổi rất đơn giản và xảy ra rất thường xuyên khi tạo chương trình. Đây chính xác là nhiệm vụ của trình biên dịch.

Quá trình ngược lại là dịch ngược code ex4 thực thi về code văn bản mq4, quá trình này hiếm khi xảy ra và thường không có cơ sở pháp lý. Các dự án nguồn mở thường cung cấp code nguồn cho bất kỳ ai đồng ý với các quy tắc phân phối, chuyển đổi và sử dụng. Các dự án còn lại bảo vệ tất cả các phát triển bằng luật bản quyền. Không có công cụ tiêu chuẩn nào để thực hiện dịch ngược.

Điều gì sẽ xảy ra nếu bạn thực sự cần chuyển đổi code thực thi của tệp ex4 thành code chương trình? Dưới đây là một số câu trả lời cho câu hỏi này, xếp theo thứ tự tăng dần độ phức tạp khi triển khai:

  1. Liên hệ với tác giả của chương trình và tìm hiểu các điều kiện để lấy được code.
  2. Tìm một lập trình viên có thể triển khai logic trong chương trình ex4 của bạn và thương lượng.
  3. Học MQL và tự viết một chương trình tương đương với chương trình bạn đang có nhưng ở dạng ex4. Con đường này không dễ dàng, nhưng chỉ như vậy mới có thể nâng cao khả năng của bạn.
  4. Tự mình dịch ngược hoặc nhờ ai đó giúp đỡ. Lưu ý về trách nhiệm pháp lý theo luật bản quyền.

Làm thế nào để bảo vệ MQL4?

Các tệp Mq4 và mq5 là tệp văn bản đơn giản chứa code MQL ở dạng văn bản. Nếu bạn không muốn chia sẻ code nguồn của riêng mình, thì tốt nhất là không phân phối tệp ở định dạng này.

Cách đơn giản để bảo vệ code là phân phối nó ở định dạng ex4 (ex5). Tệp ở định dạng này được tạo bởi MetaEditor khi biên dịch code mq4 (mq5). Theo các quy tắc của ngôn ngữ này, hướng dẫn trong văn bản được chuyển đổi thành code nhị phân thực thi, được thực thi bởi terminal khi bạn thêm một advisor, script hoặc chỉ báo vào biểu đồ.

Dịch ngược code thực thi về nguyên bản không phải là một tác vụ thông thường, và giúp bảo vệ code nguồn của bạn. Trong mọi trường hợp, khi dịch ngược về code nguồn, tên biến có ý nghĩa của code sẽ bị mất và gây khó khăn hơn cho việc hiểu logic chương trình.

MQL5 là gì?MetaQuotes là ngôn từ lập trình OOP cấp cao với năng lực gõ tĩnh yếu, được thừa kế từ C + +. MQL5 được tăng trưởng theo logic từ MQL4, được phát hành cùng với nền tảng MetaTrader 5. Sau đó, nó đã có ảnh hưởng tác động đáng kể đến sự tăng trưởng của MQL4 và góp thêm phần vào việc update phiên bản này .Làm thế nào để viết code trong MQL5?Trong MQL5 có một công cụ để tạo EA, giúp bạn trọn vẹn không cần phải tự viết code bằng tay. Chỉ sau một vài cú nhấp chuột, bạn sẽ có được một robot thanh toán giao dịch cùng với code nguồn. Việc thiết lập robot để thanh toán giao dịch được triển khai bằng cách sử dụng tín hiệu. Việc trấn áp trạng thái của thông tin tài khoản thanh toán giao dịch dựa trên những kế hoạch quản trị rủi ro đáng tiếc và quản trị tiền được cung ứng cùng với terminal thanh toán giao dịch .Làm thế nào để tải xuống chỉ báo từ MQL5?Tải xuống chỉ báo giống như tải bất kể tệp nào khác xuống máy tính của bạn. Tác vụ này phải được triển khai trên máy tính, vì MQL chỉ khả dụng với phiên bản MetaTrader Client Terminal dùng trên máy tính. Mở thư mục thao tác của terminal ( File -> Open Data Folder ). Tiếp theo, chuyển đến thư mục MQL / indicator rồi dán chỉ báo đã tải vào đây. Sau khi bạn khởi động lại terminal, chỉ báo sẽ có sẵn trong Trình điều hướng. Bạn chỉ cần vận động và di chuyển chỉ báo vào biểu đồ và kiểm soát và điều chỉnh những thông số kỹ thuật nguồn vào là xong .MQL5 có thể dùng trên MetaTrader 4 không?Trên trong thực tiễn, tổng thể những chương trình MQL4 hoặc MQL5 đều được tạo bằng phiên bản thứ năm của MetaQuotes Language Editor. Có sự thích hợp ngược giữa những phiên bản chính và phụ của ngôn từ này. Hạn chế duy nhất là Máy chủ MetaQuotes. Một số hàm và cấu trúc không có trong phiên bản thứ tư của nền tảng. Logic giải quyết và xử lý những hoạt động giải trí thanh toán giao dịch trong phiên bản thứ năm của sever đã được biến hóa phần nào. Cấu trúc bên trong của những chỉ báo cũng có sự độc lạ. Ở phiên bản thứ tư, không hề sử dụng nhiều hơn 8 bộ đệm chỉ báo. Trong MetaTrader 5, số lượng bộ đệm đã tăng lên thành 21 .Làm thế nào để sử dụng iCustom MQL4?

Hàm iCustom tích hợp sẵn cho phép bạn sử dụng tín hiệu từ các chỉ báo để thực hiện logic giao dịch bên trong EA. Nếu bạn có chỉ báo của riêng mình và muốn tạo tín hiệu giao dịch trong advisor để thực hiện các hoạt động giao dịch thì hãy sử dụng iCustom. Hãy xem tài liệu hướng dẫn. Ở đây bạn có thể thấy định nghĩa sau của MQL4:

Định nghĩa MQL5 :

Về cơ bản, chức năng của hàm là như nhau, mặc dù chữ ký của nó trong phiên bản thứ tư khác với trong phiên bản thứ năm của ngôn ngữ. Hãy xem xét kỹ hơn từng tham số:

  1. Dòng symbol chuỗi. Đây là symbol sẽ được tính toán.
  2. Khung thời gian. Trong MQL4 nó là một int kiểu số nguyên, trong MQL5 nó cũng là một số nguyên nhưng enum chứa các kiểu liệt kê khung thời gian.
  3. Tên tham số chuỗi. Bạn cần truyền đường dẫn đến chỉ báo vào nó (ví dụ: nếu nó nằm trong một thư mục khác) và cả tên chỉ báo cùng với phần mở rộng mà chúng ta muốn tính toán. Tiếp theo, các tham số bắt buộc được truyền cho chỉ báo mà chúng ta muốn sử dụng.
  4. Danh sách các tham số của chỉ báo, sẽ được khởi chạy bởi hàm iCustom. Số lượng tham số phụ thuộc vào số lượng đối số cần thiết để nhận được giá trị cần thiết từ chỉ báo. Có nghĩa là hàm có số lượng tham số thay đổi. Ví dụ: đối với Alligator (được bao gồm trong gói cài đặt MetaTrader Client Terminal):Hoặc, ví dụ : so với Ichimoku thì sẽ là một tập hợp những biến khác :

    Do đó, trong trường hợp đầu tiên, bạn cần truyền 6 tham số cho hàm để nhận giá trị chính xác và 3 tham số trong trường hợp thứ hai.

  5. Có thêm hai tham số trong MQL4 phiên bản thứ tư. Đầu tiên là chế độ số nguyên biểu thị chỉ mục đường chỉ báo và được thời gian chạy sử dụng để bộ đệm dữ liệu lập chỉ mục nội bộ.
  6. Sự dịch chuyển số nguyên tiếp theo cho biết sự dịch chuyển tiến hoặc lùi của chỉ báo dọc theo dòng thời gian.

Về cơ bản, tính năng của hàm là như nhau, mặc dầu chữ ký của nó trong phiên bản thứ tư khác với trong phiên bản thứ năm của ngôn từ. Hãy xem xét kỹ hơn từng tham số :MQL4 dựa trên ngôn ngữ nào?MQL là bản thừa kế của ngôn từ C + +, sever thanh toán giao dịch MetaTrader và toàn bộ những ứng dụng tương quan, gồm có Client Terminal và Language Editor, đều được viết bằng C + +. Tuy nhiên, nếu tất cả chúng ta so sánh MQL với bản nhiệm kỳ trước đó thì rõ ràng là ngôn từ này tăng trưởng với một độ trễ. Hiện tại, những năng lực MQL tương ứng với tiêu chuẩn C + + 2003. Điều đáng chú ý quan tâm là MQL là một ngôn từ khá mạnh và hoàn toàn có thể cung ứng 99 % nhu yếu hiện tại của những lập trình viên và nhà tăng trưởng .Code MQL4 giống với MQL5 như thế nào?

Thoạt nhìn, code của các chương trình trong phiên bản 4 và 5 chỉ khác nhau một chút. Trong phiên bản thứ năm, tất cả các macro từ phiên bản thứ tư được thay thế bằng kiểu liệt kê.

Mô hình sự kiện để khởi chạy các ứng dụng tùy chỉnh đã được mở rộng. Một loạt trình xử lý sự kiện như OnTrade, OnTradeTransaction, OnTesterInit, OnTesterDeinit, OnTesterPass đã ra đời. Hành vi không chính xác của OnTick và OnTimer trong chế độ trình kiểm tra chiến lược đã được khắc phục. Hàm OnTimer hiện có thể chạy với tốc độ lấy mẫu bộ hẹn giờ cao gấp 1000 lần so với trong MQL4. Một lần trên micro giây so với mili giây.

MQL5 đã thay đổi logic để gửi lệnh giao dịch và cơ chế phản hồi lệnh. Một số hàm giao dịch trong MQL4 đã được hợp nhất với các chế độ hoạt động khác nhau được gọi là OrderSend. Quá trình giao dịch trong MetaTrader 5 đã bắt đầu khác với giao dịch trên nền tảng thứ tư. Chế độ netting vị thế đã được áp dụng cùng với một hàm cho phép các giao dịch hedge. Ngoài lệnh, vị thế và giao dịch đã xuất hiện trong MT4. Ngôn ngữ này hiện có hàm OrderSendAsync để gửi yêu cầu đến máy chủ giao dịch ở chế độ không đồng bộ.

Tất cả các macro MQL4 trong MQL5 được thay thế bằng kiểu liệt kê, do đó, trình biên dịch hiện chỉ ra các chuyển đổi kiểu ngầm cho nhà phát triển.

MetaTrader 5 cho phép bạn làm việc với 21 khung thời gian tiêu chuẩn so với 9 khung thời gian ở MetaTrader 4. Các chỉ báo trong MQL5 có số lượng bộ đệm lớn hơn trên biểu đồ.

Làm thế nào để chuyển đổi MQL4 sang MQL5?

Chuyển đổi MQL4 sang MQL5 là một tác vụ thông thường đối với một lập trình viên nhập môn, nhưng đòi hỏi sự chú ý và kiên nhẫn. Trình biên dịch sẽ hiển thị cho bạn hầu hết những thứ không tương thích với MQL5.

Cần chú ý đến việc xử lý các lệnh giao dịch và gửi chúng đến máy chủ.

Trong MQL4, một yêu cầu giao dịch được thực hiện bằng cách sử dụng hàm OrderSend và một tập hợp các tham số. Việc sửa đổi lệnh và xóa lệnh chờ được thực hiện bởi các hàm riêng biệt. Kết quả của truy vấn được xác định bởi giá trị Boolean được trả về ở cuối hàm. Việc phân tích kết quả được rút ngắn để xác định code trả về của máy chủ bằng cách sử dụng hàm GetLastError.

MQL5 có cấu trúc MqlTradeRequest đặc biệt để gửi lệnh giao dịch đến máy chủ. Bạn cần điền loại hoạt động và loại lệnh thích hợp. Để nhận được kết quả, bạn cần khai báo và truyền tham chiếu một instance của cấu trúc MqlTradeResult khi gọi OrderSend để nhận phản hồi từ máy chủ, kết hợp các tham số khác nhau đã truyền trước đó khi gọi OrderSend thành một cấu trúc MqlTradeRequest duy nhất rồi gửi đến máy chủ. Chúng ta sẽ phân tích cấu trúc MqlTradeResult nhận được trong phản hồi. Mọi thông tin cần thiết sẽ có sẵn trong phản hồi từ máy chủ.

Cần đặc biệt chú ý đến các trình xử lý sự kiện trong code. Ngoài ra MQL5 còn có OnTesterTick, OnTesterTimer, OnBookEvent. Các ứng dụng khác nhau được khởi chạy để đáp ứng các sự kiện từ terminal giao dịch.

Đối với Expert:

  • OnInit
  • OnDeinit
  • OnTimer
  • OnTick
  • OnChartEvent
  • OnTester

Đối với chỉ báo :

  • OnInit
  • OnDeinit
  • OnTimer
  • OnCalculate
  • OnChartEvent
  • OnTester

Đối với script :

  • OnStart (trình xử lý này không sử dụng được trong chỉ báo và script).

Không thể khởi chạy những thư viện tích hợp, vì chúng dành riêng cho những dự án Bất Động Sản lớn hơn khác .

Một điểm khác biệt khác là các biến xác định trước Ask, Bid, cũng như các mảng Open [], High [], Low [], Close [], Volume [], Time [] không có trong MQL5. Do đó, phải sửa code chương trình để có được dữ liệu này một cách độc lập bằng cách sử dụng các hàm tích hợp sẵn để truy cập các chuỗi thời gian CopyRates, CopyOpen, CopyHigh, v.v. Khai báo một mảng động và lưu dữ liệu vào đó. Hàm cung cấp kết quả sẽ tự thay đổi kích thước mảng.Một điểm độc lạ khác là những biến xác lập trước Ask, Bid, cũng như những mảng Open [ ], High [ ], Low [ ], Close [ ], Volume [ ], Time [ ] không có trong MQL5. Do đó, phải sửa code chương trình để có được tài liệu này một cách độc lập bằng cách sử dụng những hàm tích hợp sẵn để truy vấn những chuỗi thời hạn CopyRates, CopyOpen, CopyHigh, v.v. Khai báo một mảng động và lưu dữ liệu vào đó. Hàm phân phối hiệu quả sẽ tự biến hóa size mảng .P.S. Bạn có thích bài viết của tôi ? Chia sẻ nó trong những mạng xã hội : đó sẽ là lời cảm ơn tốt nhất của bạn ” :)Hãy hỏi tôi những câu hỏi và phản hồi dưới đây. Tôi sẽ vui mừng vấn đáp thắc mắc của bạn và đưa ra những lời lý giải thiết yếu .

Liên kết hữu ích:

  • Tôi khuyên bạn nên thử giao dịch với một nhà môi giới đáng tin cậy tại đây. Hệ thống cho phép bạn tự giao dịch hoặc sao chép các nhà giao dịch thành công từ khắp nơi trên thế giới.
  • Trò chuyện trên Telegram với đội ngũ hỗ trợ Việt Nam cho những nhà giao dịch LiteFinance có sẵn ở đây https://t.me/blogforexchocacnhagiaodich
  • Kênh Telegram với các phân tích chất lượng cao, đánh giá Forex, bài viết đào tạo và những thứ hữu ích khác cho các nhà giao dịch https://t.me/blogforexchocacnhagiaodich

Nội dung của bài viết này phản ánh ý kiến của tác giả và không nhất thiết phản ánh vị trí chính thức của LiteFinance. Tài liệu được xuất bản trên trang này chỉ được cung cấp cho mục đích thông tin và không được coi là cung cấp tư vấn đầu tư cho các mục đích của Directive 2004/39 / EC.

Đánh giá bài báo này :{ { value } } ( {{count}} {{title}} )
( { { count } } { { title } } )

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