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

 
Alexey Viktorov:

А отсутствие подсветки возможных вариантов в этом случае не вызывает подозрений?

:)

 
Igor Zakharov:

:)

Да... Странно, некоторое время взад не подсвечивались переменные несоответствующего типа. Может специально исправили или обратят внимание на этот диалог и исправят ещё раз. Но как бы там ни-было, если функция требует тип переменной double, то double и надо подставлять.

 
Всегда ошибка была
#define MACRO( X, Y )
MACRO( 1, 2, 3) //Warning: too many arguments for function-like macro 'MACRO'
почему предупреждение? Тем более, что они всегда в избыточном количестве и не обратишь внимание иной раз
 
Alexey Viktorov:

Да... Странно, некоторое время взад не подсвечивались переменные несоответствующего типа. Может специально исправили или обратят внимание на этот диалог и исправят ещё раз. Но как бы там ни-было, если функция требует тип переменной double, то double и надо подставлять.

Алексей, я заметил, что вы любите ссылки на документацию, у меня для вас есть одна :)

https://www.mql5.com/ru/docs/basis/types/casting

int в double - это допустимое неявное преобразование без потери данных. законное.

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

вопрос по работе тестера стратегий. 

Запускаю тест. Советник открывает позицию с SL и TP. Затем происходит ролловер и позиция закрывается НЕ переоткрываясь. 

Это что такое? Баг? Какое то время не пользовался тестером и таких проблем не было теперь есть. Ниже лог из тестера. Видим что позиция открылась, а после ролловера закрылась и потом вроде как написано что открылась через BUY, но на самом деле на экране показывает что открытых сделок нет. Вставлял в тестер команду 

PositionSelect(_Symbol) для проверки наличия открытых позиций после ролловера, результат всегда один - открытых позиций нет.


2020.04.28 18:14:14.609 2014.01.09 05:00:00   instant buy 1.00 AUDUSD at 0.88800 sl: 0.88450 tp: 0.89200 (0.88750 / 0.88800 / 0.88750)

2020.04.28 18:14:14.609 2014.01.09 05:00:00   deal #8 buy 1.00 AUDUSD at 0.88800 done (based on order #8)

2020.04.28 18:14:14.610 2014.01.09 05:00:00   deal performed [#8 buy 1.00 AUDUSD at 0.88800]

2020.04.28 18:14:14.610 2014.01.09 05:00:00   order performed buy 1.00 at 0.88800 [#8 buy 1.00 AUDUSD at 0.88800]


2020.04.28 18:14:24.169 2014.01.09 23:59:59   deal #9 sell 1.00 AUDUSD at 0.88980 done (based on order #9)

2020.04.28 18:14:24.169 2014.01.09 23:59:59    rollover deal performed [#9 sell 1.00 AUDUSD at 0.88980]

2020.04.28 18:14:24.170 2014.01.09 23:59:59   deal #10 buy 0.00 AUDUSD at 0.8899950 done (based on order #10)

2020.04.28 18:14:24.170 2014.01.09 23:59:59    rollover deal performed [#10 buy 0.00 AUDUSD at 0.8899950]


 
Igor Zakharov:

Алексей, я заметил, что вы любите ссылки на документацию, у меня для вас есть одна :)

https://www.mql5.com/ru/docs/basis/types/casting

int в double - это допустимое неявное преобразование без потери данных. законное.

Я ссылки на документацию даю для того, чтобы не переписывать документацию в сообщение и чтобы люди привыкали читать документацию. Представьте себе, что здесь на форуме встречались такие, что не знали о существовании документации вообще. Что касается меня лично, я такую картинку в документации видел, но не пытался её досконально понять. Мне достаточно привычки применять переменные того типа какой требует функция. В крайнем случае поставлю принудительное приведение к нужному типу.

 
mox_dimass:

Запускаю тест. Советник открывает позицию с SL и TP. Затем происходит ролловер и позиция закрывается НЕ переоткрываясь.

Первый раз слышу про ролловер в Тестере на форекс-символе. Что за сервер?

 
Просьба обяснить, почему так происходит.
void OnChartEvent( const int id, const long &lparam, const double&, const string& ) 
{         
  if ((id == CHARTEVENT_KEYDOWN) && (lparam != 16) && (lparam != 17)) 
    Print(lparam);
}

Этот советник распечатывает коды нажатых клавиш (кроме CTRL и SHIFT).


Если нажимаю NumLock_0 - выдает 96.

Если нажимаю CTRL+NumLock_0 - выдает 96.

Если нажимаю SHIFT+NumLock_0 - выдает 45. Почему 45?


С другими клавишами (не NumLock) такого несоответствия не заметил.


ЗЫ Похоже, нажатие с SHIFT выключает NumLock. Интересно, что TERMINAL_KEYSTATE_SHIFT не реагирует на нажатую SHIFT, если, например, нажать с ней клавишу INSERT.

 
fxsaber:

Если нажимаю SHIFT+NumLock_0 - выдает 45. Почему 45?

На самой клавише написано почему 45. А если не написано - значит клавиатура допотопная или не соответствует стандарту

 
A100:

На самой клавише написано почему 45. А если не написано - значит клавиатура допотопная или не соответствует стандарту

Там написано на случай, если NumLock не активен.