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, 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(int 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)
{
// 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;
}
👉 Group ZALO hỏi đáp và trao đổi CODE:
TẠI ĐÂY
image quote pre code