OK, vì vậy tôi đã có thể tạo một EA có thể xử lý các mô-đun đồng thời với các thông số giao dịch khác nhau có thể chạy cùng một lúc hoặc bật và tắt. Mặc dù tôi đang chạy vào một bức tường với một số lượng đơn đặt hàng xử lý.
Tôi muốn có số lượng MaxTotalPositions EA đối với Tổng số vị trí cho ModuleA và Tổng số vị trí cho ModuleB. EA không được vượt quá Max Total (A = B), nhưng nó cũng không được vượt quá TotalforModuleA và B tương ứng. Ví dụ, nếu MaxTotal là 2, và tổng ModuleA và B là mỗi cái, thì nó không thể vượt quá 2. Phần này rất dễ. Tuy nhiên, nếu Max là 2, và ModuleA là 1, nó vẫn còn giao dịch lên đến 2. Tôi đã thử gọi các đơn đặt hàng bằng phép thuật để làm cho nó dễ dàng hơn để đếm nhưng một nơi nào đó nó vượt quá MaxPerModule. Có ai có bất kỳ ý tưởng làm thế nào để tiếp cận này? Mã được biên dịch đúng cách nên không có lỗi cú pháp. Đây là phần của mã:
/////////////////////////////////////////////////////////////////////////////
TotalMaxPositions được khai báo trên toàn cầu ở trên cùng của EA dưới dạng biến ngoài
extern double TotalMaxPositions = 2;
//////////////////////////////////////////////////////////////////////////////
//------------------------------------------------ - -
//MAX POSITIONS ORDER COUNT
//------------------------------------------------ - -
int TotalCurrentOrders;
int count = 0; int count = 0; tổng số int; int totalB;
TotalCurrentOrders = OrdersTotal ();
nếu (TotalCurrentOrders gt; = TotalMaxPositions) trả về (0);
khác
if (TotalCurrentOrders lt; TotalMaxPositions)
{
nếu (countA gt; = MaxPositionsA) trả về (0);
if (countA lt; MaxPositionsA)
cho (int posA = 0; posA lt; totalA; posA )
{
nếu (OrderSelect (posA, SELECT_BY_POS) == false) tiếp tục;
if (OrderMagicNumber () == MagicA) countA ;
}
nếu (countB gt; = MaxPositionsB) trả về (0);
if (countB lt; MaxPositionsB)
cho (int posB = 0; posB lt; totalB; posB )
{
nếu (OrderSelect (posB, SELECT_BY_POS) == false) tiếp tục;
if (OrderMagicNumber () == MagicB) countB ;
}
nếu (TotalCurrentOrders gt; = TotalMaxPositions) trả về (0);
}