Bài 20: Hàm Average Price – Tính Trung Bình Giá MT4

by TonyJay

Bài 20: Hàm Average Price - Tính Trung Bình Giá MT4
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(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 giá trung bình 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:

  1. 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ặc OP_SELL).
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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 đó.
  8. 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.
  9. 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ị đó.
 


???? Group ZALO hỏi đáp và trao đổi CODE: TẠI ĐÂY ???? ???? Group TELEGRAM hỏi đáp và trao đổi CODE: TẠI ĐÂY

You may also like

Leave a Comment

FOREX FORUM CODE là nền tảng tổng hợp, chia sẻ và cập nhật kiến thức lập trình, cung cấp những thông tin hữu ích giúp bạn học và phát triển robot giao dịch. Website hiện đang trong giai đoạn thử nghiệm và chờ cấp phép hoạt động, hướng đến việc trở thành nguồn tài nguyên tin cậy cho cộng đồng lập trình viên.

Ý kiến bạn đọc

FOREX FORUM CODE rất hoan nghênh độc giả gửi thông tin và góp ý cho chúng tôi!
Email: tonyjay.trade@gmail.com

Chịu trách nhiệm nội dung

  • Mr Tony Jay
  • Telegram: @tony_ntp

Liên hệ quảng cáo

  • Telegram: @tony_ntp
  • tonyjay.trade@gmail.com

Hợp tác nội dung

  • Telegram: @tony_ntp
  • tonyjay.trade@gmail.com

Website Links

  • Latest News
  • MQL5 Source Code
  • MQL4 Source Code
  • Forex News

Chia sẽ và ủng hộ FOREX FORUM CODE

  • BTC: EFLbMPhSjuETHDpXw5T9tHTPwVi51rYYD
  • USDT TRC20:
    TKbahyoCceKSVZNKk46c1hsZFh3aYNPB75
  • USDT BEP20:
    0x8324d5346D6b3760a4A679Cf0cD674d7e4aa7995
  • USDT ERC20:
    0x8324d5346D6b3760a4A679Cf0cD674d7e4aa7995
Miễn trừ trách nhiệm: – Tất cả thông tin, bài viết, nhận định hay chia sẻ trên website của tôi chỉ nhằm mục đích cung cấp kiến thức và hỗ trợ tham khảo. Tôi không đưa ra bất kỳ lời khuyên đầu tư, tín hiệu giao dịch hay cam kết lợi nhuận nào trong thị trường này. Giao dịch ngoại hối tiềm ẩn rủi ro cao và không phù hợp với tất cả mọi người. Mọi quyết định đầu tư đều thuộc về cá nhân bạn, và bạn phải tự chịu trách nhiệm hoàn toàn với kết quả giao dịch của mình. Bằng việc tham gia vào website này, bạn đồng ý rằng tôi không chịu trách nhiệm cho bất kỳ tổn thất hay thiệt hại nào phát sinh từ việc bạn sử dụng thông tin được chia sẻ tại đây.

@2024 – All Right Reserved. Designed and Developed by TonyJay