OK, więc udało mi się stworzyć EA, które może obsługiwać jednocześnie moduły o różnych parametrach handlowych, które mogą być uruchamiane w tym samym czasie lub włączane i wyłączane. Chociaż wpadam na ścianę z obsługą zamówień.
Chcę mieć licznik EA MaxTotalPositions względem Total Positions dla ModuleA i Total Positions dla ModuleB. EA nie może przekroczyć Max Total (A = B), ale również nie może przekroczyć odpowiednio TotalforModuleA i B. Na przykład, jeśli MaxTotal wynosi 2, a suma modułów A i B wynosi jeden, to nie może przekroczyć 2. Ta część jest łatwa. Jednakże, jeśli Max wynosi 2, a ModuleA to 1, to nadal handluje się do 2. Próbowałem wywoływać zamówienia za pomocą magii, aby ułatwić liczyć, ale gdzieś jest to przekroczenie MaxPerModule. Czy ktoś ma jakiś pomysł, jak do tego podejść? Kod kompiluje się poprawnie, więc nie ma błędów w składni. Oto część kodu:
///////////////////////////////////////////////////////////////////////////////////////////////////////////
TotalMaxPositions jest deklarowany globalnie u góry EA jako zmienna zewnętrzna
extern double TotalMaxPositions = 2;
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------------------ -
//MAKSYMALNE POZYCJE ZAMÓWIENIA
//------------------------------------------------ -
int TotalCurrentOrders;
int count = 0; int count = 0; int całkowity; int totalB;
TotalCurrentOrders = OrdersTotal ();
if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);
jeszcze
if (TotalCurrentOrders lt; TotalMaxPositions)
{
if (countA gt; = MaxPosesA) return (0);
if (countA lt; MaxPositionsA)
for (int posA = 0; posA lt; totalA; posA )
{
if (OrderSelect (posA, SELECT_BY_POS) == false) kontynuuj;
if (OrderMagicNumber () == MagicA) countA ;
}
if (countB gt; = MaxPositionsB) return (0);
if (countB lt; MaxPositionsB)
for (int posB = 0; posB lt; totalB; posB )
{
if (OrderSelect (posB, SELECT_BY_POS) == false) kontynuuj;
if (OrderMagicNumber () == MagicB) countB ;
}
if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);
}