Вопросы от "чайника" - страница 64

 
Europa:
Подскажите пожайлуста, почему алерт выдает Orders_Total=1, когда на самом деле есть одна позиция и один ордер, т.е. по идее должен выдавать 2, а не 1

Попробуйте цикл запустить в обратную сторону, с конца.

string Symb="EURUSD";
  for(i=OrdersTotal()+PositionsTotal()-1;i>=0;i--)
     {
      if(Symb==PositionGetSymbol(i)) Orders_Total++;
     }
     Alert(Orders_Total);
 
tol64:

Попробуйте цикл запустить в обратную сторону, с конца.

 

Не помогло ;(
 
Europa:
Не помогло ;(

А, у Вас проверка только на позиции: 

if(Symb==PositionGetSymbol(i)) Orders_Total++;
Вот и считаются только позиции.
 
tol64:

А, у Вас проверка только на позиции: 

Вот и считаются только позиции.
ТОЧНО!!!! Спасибо огромное!!!
 
tol64:

В справке сказано, что: 

Может опускаться либо дата (год, месяц, число), либо время (часы, минуты, секунды), либо все вместе. Диапазон значений от 1 января 1970 года до 31 декабря 3000 года.

Примеры:

D'2004.01.01 00:00' // Новый Год
D'1980.07.19 12:30:27'
D'19.07.1980 12:30:27'
D'19.07.1980 12' //равнозначно D'1980.07.19 12:00:00'
D'01.01.2004' //равнозначно D'01.01.2004 00:00:00'
D'12:30:27' //равнозначно D'[дата компиляции] 12:30:27'
D'' //равнозначно D'[дата компиляции] 00:00:00'

 ...

Или я неправильно понимаю?  

В справку будут внесены изменения, чтобы такие вопросы не возникали впредь. Спасибо.
 
Europa:
Не помогло ;(

А что это Вы мухи с котлетами складываете, а потом определяете, сколько всего котлет ?

Ордера считайте отдельно, позиции отдельно. PositionGetSymbol() возвращает только наличие позиции по символу и ничего не говорит про ордера. Так как позиция одна, то и выдаёт 1. И это Вам ещё повезло, так как параметр цикла выходит за рамки допустимых значений (PositionsTotal), то можно получить вообще, что угодно.

P.S. Уже ответили, опоздал.

 
 Что-то я не нашёл внутренней функции или свойства, как придать графическому объекту свойство selectable (по умолчанию программно рисуется объект без возможности выделить мышкой), обнаружил только в прилагающейся графической библиотеке. Вопрос, очевидно, следующий: есть ли возможность придать графическому объекту такое свойство штатно, без дополнительных библиотек и прочих премудростей?
 
x100intraday:
 Что-то я не нашёл внутренней функции или свойства, как придать графическому объекту свойство selectable (по умолчанию программно рисуется объект без возможности выделить мышкой), обнаружил только в прилагающейся графической библиотеке. Вопрос, очевидно, следующий: есть ли возможность придать графическому объекту такое свойство штатно, без дополнительных библиотек и прочих премудростей?

ObjectSetInteger

с prop_id=OBJPROP_SELECTABLE

 
Valmars:

ObjectSetInteger

с prop_id=OBJPROP_SELECTABLE

Большое мерси.
 
bool ExtFunc (string str, int P, int i)
  {
   if (high[i] < high[i-1]) return(false);
   return(true);   
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i=0;
   if ExtFunc("s",60,i) == 1)
     Buffer[i] = high[i];
  }

 В OnCalculate я с лёгкостью могу использовать элементы массива вроде high по индексу. Возможно ли так же доступиться к индексным элементам этого массива в ExtFunc? При вызове моей функции передать массив-аргумент по ссылке, через указатель или как-то ещё? Пока удалось минимизировать сообщения об ошибках до: "'high' - parameter conversion is not allowed" и "'high' - constant variable cannot be passed as reference" в отношении одной и той же строки вызова моей функции с аргументом-массивом из OnCalculate. Безнадёжно или есть решение?

 Пока в OnCalculate прибегаю к копированию high в другой массив:

ArrayCopy(CopyOfHigh,high,0,0,WHOLE_ARRAY);
а затем использую CopyOfHigh в ExtFunc вместо прямого использования high-массива.