Hàm này có một tham số là orderType
, đại diện cho loại lệnh mà bạn muốn tính trung bình giá (OP_BUY
hoặc OP_SELL
). Hàm sử dụng vòng lặp for để duyệt qua từng lệnh trong tài khoản, tương tự như hai hàm trước đó. Nếu loại lệnh của lệnh hiện tại là orderType
, hàm tính tổng giá trị của các lệnh và tổng số lượng của loại lệnh đó. Cuối cùng, hàm trả về giá trị trung bình của loại lệnh được chỉ định, bằng cách chia tổng giá trị cho tổng số lượng. Nếu tổng số lượng bằng 0, thì hàm code mt4 hàm trả về giá trị 0.
// Hàm tính trung bình giá cho lệnh Buy và Sell // orderType = "OP_BUY" (lệnh Buy) hoặc "OP_SELL" (lệnh Sell) double GetAveragePrice(string orderType ) { // Lấy tổng số lệnh trong tài khoản int totalOrders = OrdersTotal(); // Nếu không có lệnh nào thì trả về giá trị 0 if (totalOrders < 1) { Print("Không có lệnh nào trong tài khoản."); return 0; } // Khởi tạo biến tổng giá trị và tổng số lượng double totalOrderPrice = 0; double totalOrderLots = 0; // Duyệt qua từng lệnh trong tài khoản for (int i = 0; i < totalOrders; i++) { // Chọn lệnh theo vị trí i if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; // Nếu loại lệnh của lệnh hiện tại là orderType if (OrderType() == orderType )//"OP_BUY", "OP_SELL" { // Tính tổng giá trị của các lệnh và tổng số lượng của loại lệnh đó totalOrderPrice += OrderOpenPrice() * OrderLots(); totalOrderLots += OrderLots(); } } // Nếu tổng số lượng bằng 0 thì trả về giá trị 0 if (totalOrderLots == 0) { Print("Không có lệnh ", (orderType == OP_BUY ? "Buy" : "Sell"), " trong tài khoản."); return 0; } // Trả về giá trị trung bình của loại lệnh được chỉ định double averagePrice = totalOrderPrice / totalOrderLots; Print("Trung bình giá của lệnh ", (orderType == OP_BUY ? "Buy" : "Sell"), " là: ", DoubleToStr(averagePrice, Digits)); return averagePrice; }
Đây là một hàm được viết để tính toán Average Price mt4 của các lệnh mua hoặc bán trong tài khoản giao dịch. Dưới đây là mô tả chi tiết của từng phần trong hàm:
- Tham số đầu vào: Hàm nhận một tham số kiểu integer để xác định loại lệnh cần tính giá trung bình (
OP_BUY
hoặcOP_SELL
). - Lấy tổng số lệnh: Hàm sử dụng
OrdersTotal()
để lấy tổng số lệnh hiện có trong tài khoản. - Kiểm tra số lượng lệnh: Nếu không có lệnh nào trong tài khoản, hàm sẽ in ra thông báo và trả về giá trị 0.
- Khởi tạo biến tổng giá trị và tổng số lượng: Các biến này được sử dụng để tính toán giá trung bình.
- Duyệt qua từng lệnh: Sử dụng một vòng lặp để duyệt qua từng lệnh trong tài khoản.
- Chọn lệnh và kiểm tra loại lệnh: Sử dụng
OrderSelect()
để chọn lệnh theo vị trí và kiểm tra loại lệnh của lệnh đó có trùng khớp với loại lệnh được chỉ định hay không. - Tính tổng giá trị và số lượng: Nếu lệnh hiện tại là loại lệnh cần tính giá trung bình, hàm sẽ tính tổng giá trị của các lệnh và tổng số lượng của loại lệnh đó.
- Kiểm tra tổng số lượng: Nếu tổng số lượng bằng 0, tức là không có lệnh cần tính giá trung bình, hàm sẽ in ra thông báo và trả về giá trị 0.
- Trả về giá trị trung bình: Tính giá trung bình bằng cách chia tổng giá trị của các lệnh cho tổng số lượng của loại lệnh đó. In ra thông báo với giá trị trung bình tính được và trả về giá trị đó.
Với mỗi lệnh trong tài khoản, hàm này tính tổng giá trị của các lệnh và tổng số lượng của loại lệnh được chỉ định. Sau đó, nó tính giá trung bình bằng cách chia tổng giá trị cho tổng số lượng lệnh. Cuối cùng, hàm in ra thông báo về giá trung bình và trả về giá trị đó.
[block_content id=”3041″]