Xin chào! Để tính profit trong n lệnh trên MT4, bạn có thể sử dụng hàm OrderSelect()
lấy thông tin về từng lệnh, sau đó tính tổng lợi nhuận của các lệnh đó.. Sau đó, bạn có thể sử dụng hàm OrderProfit()
OrderSwap()
OrderCommission()
để tính ra lợi nhuận . Dưới đây là một ví dụ đơn giản:
double profit(string type) { double profit=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY && type== "OP_BUY") { profit+=OrderProfit()+OrderSwap()+OrderCommission(); } if(OrderType()==OP_SELL && type== "OP_SELL") { profit+=OrderProfit()+OrderSwap()+OrderCommission(); } } } return(profit); }
Hàm profit
có chức năng tính toán lợi nhuận (hoặc lỗ) của các lệnh mở có cùng cặp tiền và mã Magic như được chỉ định, với loại lệnh được chỉ định (OP_BUY hoặc OP_SELL). Dưới đây là mô tả chi tiết về hàm này:
- Tham số đầu vào:
type
: Một chuỗi string, chỉ định loại lệnh mà bạn muốn tính toán lợi nhuận (OP_BUY hoặc OP_SELL).
- Biến cục bộ:
double profit = 0
: Biến này được khởi tạo với giá trị mặc định là 0. Nó sẽ lưu tổng lợi nhuận (hoặc tổng lỗ) của các lệnh đạt điều kiện.
- Vòng lặp qua các lệnh đã mở:
- Vòng lặp
for
chạy qua tất cả các lệnh đã mở bằng cách sử dụng hàmOrdersTotal()
để lấy tổng số lệnh hiện tại. - Với mỗi lệnh, sử dụng hàm
OrderSelect()
để chọn lệnh hiện tại theo vị trí (SELECT_BY_POS
) trong danh sách lệnh. - Sau đó, kiểm tra nếu lệnh được chọn có cùng cặp tiền (
OrderSymbol()
) và mã Magic (OrderMagicNumber()
) với cặp tiền và mã Magic được chỉ định trong hàm. - Tiếp theo, kiểm tra nếu loại lệnh của lệnh hiện tại là OP_BUY và
type
được truyền vào cũng là “OP_BUY”, hoặc nếu loại lệnh của lệnh hiện tại là OP_SELL vàtype
là “OP_SELL”, thì tính toán tổng lợi nhuận bằng cách cộng thêm lợi nhuận của lệnh, phí swap và phí hoa hồng vào biếnprofit
.
- Vòng lặp
- Trả về tổng lợi nhuận:
- Khi kết thúc vòng lặp, hàm sẽ trả về tổng lợi nhuận (hoặc tổng lỗ) của các lệnh mở phù hợp. Nếu không có lệnh nào được tìm thấy hoặc không phù hợp với loại lệnh được chỉ định, hàm sẽ trả về giá trị mặc định là 0.
Lưu ý rằng bạn cần chắc chắn gọi hàm này với loại lệnh thích hợp và kiểm tra kết quả trước khi sử dụng tổng lợi nhuận trả về trong chiến lược giao dịch của bạn.[block_content id=”3041″]