Ошибки, баги, вопросы - страница 1885

 

Долгое ожидание копитиков исправим - это проявляется на мертвых символах, у которых давным давно нет тиков.

Будет все мгновенно отрабатывать

 
Renat Fatkhullin:

Долгое ожидание копитиков исправим - это проявляется на мертвых символах, у которых давным давно нет тиков.

Будет все мгновенно отрабатывать

Какие временные издержки надо считать за норму?

Проверил SymbolInfoTick (96 символов)

#define _CS(A) ((!IsStopped()) && (A))
#define TOSTRING(A) #A + " = " + (string)(A)

void OnStart()
{
  ulong MaxInterval = 0;
  MqlTick Tick;
  
  while (_CS(true))
  {
    const ulong StartTime = GetMicrosecondCount();
    
    for (int i = SymbolsTotal(true) - 1; _CS(i >= 0); i--)
      SymbolInfoTick(SymbolName(i, true), Tick);

    const ulong Interval = GetMicrosecondCount() - StartTime;              
    
    if (Interval > MaxInterval)
    {
      MaxInterval = Interval;
      
      Print(TOSTRING(MaxInterval));
    }
  }
}

Получил

MaxInterval = 7631

Норм?

 
fxsaber:

Какие временные издержки надо считать за норму?

Проверил SymbolInfoTick (96 символов)

Получил

Норм?

45 секунд на каждый мертвый инструмент.
 
Andrey Khatimlianskii:
45 секунд на каждый мертвый инструмент.
Интересуют только живые. Один за другим 100 штук.
 

Это вообще нормально?

На разные ситуации возвращается одинаковое значение.

Понимаю, что нужно проверять, но всякое бывает...

позиции

распечатка результата


Файлы:
posi.mq5  2 kb
 
Alexandr Bryzgalov:

Это вообще нормально?

На разные ситуации возвращается одинаковое значение.

Понимаю, что нужно проверять, но всякое бывает...

позиции

распечатка результата



И в чём вопрос?

Где видно, что под номером "i" находится позиция с тикетом таким-то, по символу такому-то? В общем кроме простого вывода порядкового номера выводите ещё и тикет и символ.


 
Vladimir Karputov:


И в чём вопрос?

Где видно, что под номером "i" находится позиция с тикетом таким-то, по символу такому-то? В общем кроме простого вывода порядкового номера выводите ещё и тикет и символ.


Нормално ли то, что бы на разные ситуации одна функция дает одинаковое значение?

ЗЫ: кстати в посте был вопрос.

суть в том, что если выбрать покупку, то функция(PositionGetInteger(POSITION_TYPE)) возвращает 0

и если выбрать не существующую позицию, функция так же вернет 0

 
Alexandr Bryzgalov:
Нормално ли то, что бы на разные ситуации одна функция дает одинаковое значение?


Что есть "разные ситуации"? И сделайте как я рекомендовал выше:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Vladimir Karputov, 2017.05.12 11:15

...

В общем кроме простого вывода порядкового номера выводите ещё и тикет и символ.


 
Alexandr Bryzgalov:

Понимаю, что нужно проверять, но всякое бывает...

PositionGetInteger

Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной при помощи функцииPositionGetSymbolилиPositionSelect. Свойство позиции должно быть типа datetime, int. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

long  PositionGetInteger(
   ENUM_POSITION_PROPERTY_INTEGER  property_id      // идентификатор свойства
   );

2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool  PositionGetInteger(
   ENUM_POSITION_PROPERTY_INTEGER  property_id,     // идентификатор свойства
   long&                           long_var         // сюда примем значение свойства
   );

Параметры

property_id

[in]  Идентификатор свойства позиции. Значение может быть одним из значений перечисленияENUM_POSITION_PROPERTY_INTEGER.

long_var

[out]  Переменная типа long, принимающая  значение запрашиваемого свойства.

Возвращаемое значение

Значение типаlong. В случае неудачного выполнения возвращает 0.

Тоньше ситуация с мэджиком. Поэтому логично делать проверку (PositionGetInteger(POSITION_TICKET) > 0).
Документация по MQL5: Торговые функции / PositionGetInteger
Документация по MQL5: Торговые функции / PositionGetInteger
  • www.mql5.com
Торговые функции / PositionGetInteger - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
Тоньше ситуация с мэджиком. Поэтому логично делать проверку (PositionGetInteger(POSITION_TICKET) > 0).

Да, вкусре что нужно делать проверку.

но при написании функции всегда стараешься, что бы при разных ситуациях возвращалось разное значение.

считаю неверным, что при разных ситуациях из функци выходит одно значение.