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

 

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

Обновились мобильные приложения MetaTrader 4 и MetaTrader 5 для Android

pav36krs, 2014.12.20 10:21

Друзья помогите!!! Скачал метатрейдер ,а он не запускается 32 бит а у меня винда 64 бит в первые с таким сталкнулся до этого устанавливал метатрейдер от альфа-форекс все нормально работало помогите может кто знает как устранить проблему разные способы пробовал и от имени администратора запускать не получается буду очень благодарен кто поможет

 

Ошибки в битовых операциях.

Print(int(1)<<34);

Получаем 4, а должно быть 0.   Уж сколько лет шлифуют МТ, а до сих пор такие ляпы.

 

И что, компилятор не выругался из за такого смещения? Сомневаюсь.

А вообще что хотели то и получили 

00000000000000000000000000000001 << 34
00000000000000000000000000000100
 
GVladimir:

И что, компилятор не выругался из за такого смещения? Сомневаюсь.

А вообще что хотели то и получили 

Вы видимо плохо знаете, как работает битовый сдвиг. В младших разрядах там ничего не может возникнуть.  Если сомневаетесь, С++ вам в помощь.
 
meat:
В младших разрядах там ничего не может возникнуть.
В MQL как мне кажется все битовые сдвиги реализованы как циклические (ROL/ROR), (о которых Вы наверное не подозревайте, ведь ни в C ни в C++ их нет) как раз для таких ситуаций 
 
GVladimir:
В MQL как мне кажется все битовые сдвиги реализованы как циклические (ROL/ROR), (о которых Вы наверное не подозревайте, ведь ни в C ни в C++ их нет) как раз для таких ситуаций 

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

Не рекомендуется производить сдвиг на большее или равное число битов, чем разрядность сдвигаемой переменной, так как результат такой операции не определен.

Это неверно. В битовых операциях не может быть неопределённого результата. Просто уходящий бит либо сохраняется в специальном флаге, либо не сохраняется, но это не влияет на алгоритм работы сдвига, т.е. биты справа всё-равно заполняются нулями.  Если же это циклический сдвиг, то это нужно явно указать (хотя правильней был бы обычный сдвиг, совместимый с С++).

 

возможно ли подключить индикатор откомпилированный старым билдом в виде ресурса к другому индикатору?

что-то у меня не получается, делаю так:

 

........ 

#resource "\\Indicators\\тфьу.ex4"

........ 

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[])

  {

........ 

ExtLimeBuffer[i]=iCustom(_Symbol,0,"::Indicators\\тьфу.ex4",pr1,pr2,pr3,pr4,pr5,pr6,pr7,2,i);

........ 

  return(rates_total);

}


 

компилятор пишет так:

unknown resource type 'C:\Program Files\MT4\MQL4\Indicators\тфьу.ex4' тфьу1.mq4 10 1

 

 


 
meat:

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

Это неверно. В битовых операциях не может быть неопределённого результата. Просто уходящий бит либо сохраняется в специальном флаге, либо не сохраняется, но это не влияет на алгоритм работы сдвига, т.е. биты справа всё-равно заполняются нулями.  Если же это циклический сдвиг, то это нужно явно указать (хотя правильней был бы обычный сдвиг, совместимый с С++).

Может быть.

При сдвиговых операциях должно участвовать не более 5 бит для 32-битных целых (или 6 бит для 64-битных целых). Если значение сдвига занимает больше, чем 5 (или 6) бит, то разные процессоры обрабатывают эту ситуацию по-разному. В документации мы как раз и отобразили этот факт, сказав, что результат операции неопределён.

Документация по MQL5: Торговые функции / OrderCalcProfit
Документация по MQL5: Торговые функции / OrderCalcProfit
  • www.mql5.com
Торговые функции / OrderCalcProfit - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
sanyooooook:

...
компилятор пишет так:

unknown resource type 'C:\Program Files\MT4\MQL4\Indicators\тфьу.ex4' тфьу1.mq4 10 1

Видимо компилятор умнее, чем кажется. Он хочет найти исходник тфьу1.mq4, а потом его вложить в качестве ресурса.