OK, así que he podido crear un EA que puede manejar módulos simultáneos con diferentes parámetros comerciales que pueden ejecutarse al mismo tiempo o activarse y desactivarse. Aunque estoy corriendo en una pared con un manejo de conteo de pedidos.

Quiero que el EA cuente MaxTotalPositions contra Total Positions para ModuleA y Total Positions para ModuleB. El EA no debe exceder el Total máximo (A = B), pero tampoco debe exceder TotalforModuleA y B respectivamente. Por ejemplo, si el MaxTotal es 2, y el total de ModuleA y B es uno cada uno, entonces no puede exceder de 2. Esta parte es fácil. Sin embargo, si el Máx es 2 y el Módulo A es 1, todavía se está negociando hasta 2. He intentado llamar a las órdenes por magia para que sea más fácil de contar, pero en algún lugar está superando el MaxPerModule. ¿Alguien tiene alguna idea de cómo abordar esto? El código se está compilando correctamente, por lo que no hay errores de sintaxis. Aquí está la parte del código:

///////////////////////////////////////////////////////////////////////////////

TotalMaxPositions se declara globalmente en la parte superior de la EA como una variable externa

extern total TotalMaxPositions = 2;

////////////////////////////////////////////////////////////////////////////////////

//------------------------------------------------ -
//MAX POSICIONES ORDEN CUENTA
//------------------------------------------------ -

int TotalCurrentOrders;
cuenta int = 0; cuenta int = 0; int total; int totalB;

TotalCurrentOrders = OrdersTotal ();
if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);

más

if (TotalCurrentOrders lt; TotalMaxPositions)

{

if (countA gt; = MaxPositionsA) return (0);
if (countA lt; MaxPositionsA)
para (int posA = 0; posA lt; totalA; posA )
{
si (OrderSelect (posA, SELECT_BY_POS) == falso) continúa;
if (OrderMagicNumber () == MagicA) countA ;
}

if (countB gt; = MaxPositionsB) return (0);
if (countB lt; MaxPositionsB)
para (int posB = 0; posB lt; totalB; posB )
{
si (OrderSelect (posB, SELECT_BY_POS) == falso) continúa;
if (OrderMagicNumber () == MagicB) countB ;
}

if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);

}