Bạn có thể đã nghe điều này trước đây, nhưng việc chọn kích thước lô phù hợp cho hệ thống giao dịch của bạn là yếu tố then chốt để phát triển một hệ thống tốt. Tìm hiểu cách sử dụng rủi ro, quy mô lô, quản lý tiền và hơn thế nữa trong bài viết về thông số lô MQL4 này Các biến lập trình Expert Advisor của bạn.
Bạn có thể chỉ định kích thước lô đơn giản như khai báo kích thước lô trong một biến nội bộ dưới dạng kích thước lô cố định cho mỗi đơn hàng, nhưng chúng ta sẽ khám phá một phương pháp dựa trên Tỷ lệ phần trăm số tiền ký quỹ khả dụng Cách dễ dàng để tính số lô.
Có một chút tính toán đằng sau hậu trường, nhưng về cơ bản nếu bạn chọn cài đặt rủi ro tùy chỉnh là 1, bạn sẽ giao dịch 0,01 microlot trên mỗi quy mô vốn chủ sở hữu 1K. Vì vậy, với cài đặt rủi ro tùy chỉnh kích thước tài khoản 2 và 10K, bạn sẽ bắt đầu với 0,2 lô và nó sẽ tự động cộng/trừ 0,01 lô cho mỗi 100 USD lãi/lỗ. Kỹ thuật tự động điều chỉnh kích thước lô này rất đơn giản nhưng rất hiệu quả để tự động tăng lợi nhuận, giảm lỗ hoặc tự động điều chỉnh tiền gửi và rút tiền của tài khoản.
Thông số
MM
Bool: Liệu bạn có sử dụng quản lý tiền hay không.
Rủi ro
Nhân đôi: Cài đặt rủi ro được xác định trước của bạn.
Lô
Cặp: Đây là kích thước lô thủ công mà bạn sẽ sử dụng nếu MM bị tắt.
Kích thước lô
Nhân đôi: Đây là số chữ số thập phân cho kích thước lô do nhà môi giới của bạn cung cấp. Hầu hết có hai chữ số thập phân, nhưng một số chỉ có một.
Đoạn mã MT4
Boolean bên ngoài MM = TRUE;
Rủi ro kép bên ngoài = 2;
nhân đôi bên ngoài LotDigits = 0,1;
nhân đôi bên ngoài LotDigits =2;
Double GetLots()
< p >{double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
Đòn bẩy gấp đôi = AccountLeverage();
kích thước lô gấp đôi = MarketInfo(Symbol(), MODE_LOTSIZE);
cấp dừng kép = MarketInfo(Symbol(), MODE_STOPLEVEL);
Số lô tối thiểu gấp đôi = 0,01;
Số lô tối đa gấp đôi = 50,0;
Nếu (MM)
{
Cả hai tay = tay;
Nhân đôi số tay = NormalizeDouble(AccountFreeMargin() * Rủi ro/100 / 1000.0, Số lô);
If (Số lô < minlot) LotNumber = minlot;
Nếu (Số lô > Số lô tối đa) LotNumber = Số lô tối đa; < /p>
if (AccountFreeMargin() < Hỏi * rất nhiều * kích thước / đòn bẩy) {
In("Chúng tôi không có tiền. Rất nhiều = ", rất nhiều, ", Ký quỹ miễn phí = ", AccountFreeMargin());
Comment("Chúng tôi không có tiền. Rất nhiều = ", rất nhiều, ", Số tiền ký quỹ miễn phí = ", AccountFreeMargin());
}
Nếu không thì nhiều = NormalizeDouble(many, number);
return(many);
>
Bạn sẽ Hãy xem, nếu chúng ta nên bật quản lý (đúng) hoặc tắt (sai), trước tiên chúng ta phải khai báo một số biến bên ngoài để xác định, nếu được bật, cài đặt rủi ro tùy chỉnh của chúng ta sẽ là gì và nếu không, lô mặc định sẽ là gì kích cỡ.
LotDigits là số vị trí thập phân mà nhà môi giới của bạn cho phép (ví dụ: nếu nó cho phép các lô vi mô như 0,01 thì nó sẽ có 2 chữ số hoặc vị trí thập phân).
GetLots() là tên chúng tôi đặt cho hàm tùy chỉnh để tất cả chữ o (có thể là bất kỳ tên nào) và tất cả chữ o chứa trong dấu ngoặc đơn của nó. nội dung là tính toán của chức năng này. Bạn chỉ cần đặt GetLots() vào tham số thứ ba của hàm OrderSend() để gọi nó, thay thế biến lô cố định trước đó.
Chúng tôi tạo một biến minlot để tham chiếu hàm MarketInfo(). Hàm MarketInfo() là hàm chúng ta cần để truy xuất nhiều dữ liệu thị trường khác nhau cho một loại tiền tệ nhất định, chẳng hạn như giá Mua hoặc Giá bán, giá trị Hoán đổi, chữ số và vì mục đích của chúng ta, nó cũng cho chúng ta biết kích thước lô tối thiểu cho loại tiền đó. Chúng tôi muốn đảm bảo rằng bất kỳ phép tính lô nào chúng tôi thực hiện đều lớn hơn lô tối thiểu của nhà môi giới, nếu không nó nhỏ hơn minlot thì sẽ là minlot.
Việc tính toán lô MM tự động chính diễn ra trên một dòng:
lô kép = NormalizeDouble(AccountEquity() * Risk/100 / 1000.0, LotDigits);
AccountEquity() là một trong nhiều hàm thông tin tài khoản trả về tài khoản hiện tại công bằng. Chúng tôi muốn trả lại vốn chủ sở hữu của tài khoản thay vì AccountBalance() vì vốn chủ sở hữu thể hiện một bức tranh hợp lệ hơn về trạng thái của tài khoản (tức là vốn chủ sở hữu của tài khoản). Chúng tôi muốn giá trị vốn chủ sở hữu được tính toán theo quy mô lô thích hợp. Chúng tôi sẽ nhân số vốn chủ sở hữu này với rủi ro, sau đó chia cho 100 và chia cho 1000 để xác định kích thước lô thích hợp.
Hiệu ứng tỷ lệ thuận với quy mô lô tùy thuộc vào cài đặt rủi ro đã chọn: cài đặt rủi ro là 0,01 lô cho mỗi 1 giao dịch trên vốn chủ sở hữu 1K, cài đặt rủi ro là 0,01 lô trên mỗi vốn chủ sở hữu 1K Vốn chủ sở hữu 2 giao dịch 0,02 lô, v.v. Có nhiều khả năng, tùy thuộc vào cài đặt rủi ro đã chọn. Khi kích thước tài khoản tăng hoặc giảm, số lượng giao dịch sẽ tăng hoặc giảm. Ví dụ: cài đặt rủi ro là 2 sẽ giao dịch 0,2 lô trên tài khoản 10K, tăng/giảm 0,01 lô trên 100 đô la lãi hoặc lỗ vốn cổ phần. Người dùng có thể dễ dàng điều chỉnh cài đặt rủi ro cho phù hợp với mức độ chấp nhận rủi ro, phong cách giao dịch EA và quy mô tài khoản của họ.
Nếu MM được đặt thành true, chúng tôi sẽ tính toán kích thước lô dựa trên vốn chủ sở hữu và gán giá trị này cho biến lô. Nếu MM sai, chúng ta chỉ cần gán giá trị của lô cho kích thước lô cố định của Lô.
Như bạn có thể thấy, đoạn mã trên tương đối đơn giản nhưng nó có thể tạo ra sự khác biệt lớn trong việc điều chỉnh lô tự động dựa trên việc thay đổi quy mô vốn chủ sở hữu. Có nhiều cách phức tạp hơn để xác định kích thước lô, nhưng đôi khi những phương pháp đơn giản nhất lại hiệu quả nhất.
Lưu ý:
Các nhà phát triển EA hoặc người dùng cuối phải xác định cài đặt rủi ro thích hợp cho EA dựa trên quá trình kiểm tra ngược nghiêm ngặt, đặc biệt chú ý đến rủi ro Số liệu thống kê liên quan (giao dịch thua trung bình, giao dịch thua liên tiếp và thua lỗ tối đa). Thông thường, việc phân tích rủi ro này được thực hiện trước tiên với kích thước lô cố định, ví dụ 0,1 đối với tài khoản 5K. Khi tất cả số liệu thống kê liên quan đến rủi ro được tổng hợp cho một kích thước lô cố định, bạn có thể xác định rõ hơn cài đặt rủi ro nào bạn có thể giao dịch dễ dàng.