Множественное открытие ордеров одновременно MQL5 - страница 4

 
Evgeniy Zhdan:

Это вот сюда ее надо засунуть?

Просто в той функции что я предложил можно на всех символах позиции посчитать, используйте как я дал
ExCheckPositions(_Symbol, Magic);

Если изменить на эту строчку, то по сути останется то же самое, только будет считать на одном своём символе.

if( _Symbol != PositionGetSymbol(p)) continu
 
Alexey Valeev:
Просто в той функции что я предложил можно на всех символах позиции посчитать, используйте как я дал

Согласен, спасибо)

 
Evgeniy Zhdan:

Это вот сюда ее надо засунуть?

Ну если быть более точным, то строкой

if( _Symbol != PositionGetSymbol(cnt) ) continue;

Я пользуюсь при работе совы на одном символе. Если нужно проверять мультивалютно в цикле, то использую

class CAllSymbols
{
private:
     string symbols[];
     uint allSymbols;
public:
     CAllSymbols();
     bool testSymbol(const string str);
};
CAllSymbols::CAllSymbols() 
{
     allSymbols = ArraySize(WorkPosition);
     if( ArrayResize(symbols, allSymbols) == allSymbols )
          for(uint i=0; i<allSymbols; i++)
               symbols[i] = WorkPosition[i].getSymbol();
}
bool CAllSymbols::testSymbol(const string str)
{
     for(uint cnt=0; cnt<allSymbols; cnt++)
          if( str == symbols[cnt] ) return( true );
     return( false );
}
//+------------------------------------------------------------------+
CAllSymbols *AllSymbols;

int OnInit()
{
     AllSymbols = new CAllSymbols;
}

void OnTick()
{
     for(int cnt=0; cnt<PositionsTotal(); cnt++)
     {
          if( !AllSymbols.testSymbol( PositionGetSymbol(cnt) ) ) continue;
          if( PositionGetInteger(POSITION_TYPE)!=ORDER_TYPE_BUY && PositionGetInteger(POSITION_TYPE)!=ORDER_TYPE_SELL ) continue;
          if( PositionGetInteger(POSITION_MAGIC) != Magic ) continue;
          /*...................*/
}

Конечно все подрезано. Кому надо тот разберется ;)
P.S. У меня class CWorkPosition чтоб работать по позициям каждого символа. Откуда и собираю массив всех символов, с которыми работает сова.

Причина обращения: