![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какие комментарии вы ждете, когда фраза "запрещены любые DLL" была несколько раз скопирована сюда?
Ни одна программа, которая содержит в себе import блоки, не будет принята даже на техническом уровне.
Да не дурак же я, про ДЛЛ давно ясно, я же спрашиваю про другое.
Импорт библиотек .ex4 и .ex5 тоже запрещен? Про это в правилах ни слова. И в этой ветке тоже никто не говорил об этом. Такой код будет считаться запрещенным или нет?
#import "Strategy3.ex4"
bool GetParamsCount3(int& intCount[], int& doubleCount[], int& stringCount[], int& boolCount[], int& datetimeCount[], int& colorCount[]);
void SetParams3(int &iArr[], double &dArr[], string &sArr[], bool &bArr[], datetime &dtArr[], color &clArr[], int index, bool init, bool showAlert);
int start3();
int init3();
int deinit3();
#import
...эта битовая операция нужна один раз на 16 млн. итераций... - это ваще о чем?
Признаюсь, в этом цикле содержится сильная магия Древних, простите, я не имел права раскрывать ее непосвященным, поэтому и непонятно. Продолжайте используйте if, и да прибудет с вами Сила ))
...эта битовая операция нужна один раз на 16 млн. итераций... - это ваще о чем?
Потому что от 0 до 0xFFF будет столько итераций. И там нужен не if, а вложенный цикл.
Потому что от 0 до 0xFFF будет столько итераций.
Круто! А чему равен 0xFFF в десятичном представлении?
Ок, ошибся. Могли бы и поправить. Вы же, надеюсь, понимаете, что суть не в цифре.
Конечно, понимаю. Суть в том, что операция if медленнее. Вот два варианта, как они выглядят на асме, сгенерировано VS 2013 SP3, C++, оптимизация по скорости. В первом варианте одна ассемблерная инструкция, во втором 3. Все, тема закрыта, спорить не о чем.
Я ассемблер прокомментировал, чтобы было понятно. Вообще, полезно в ассемблерный код иногда заглядывать, улучшает карму )) В MQL он не генериться, но должно быть близко к коду VC++
А это с if, 3 иструкции на сравнение
Конечно, понимаю. Суть в том, что операция if медленнее. Вот два варианта, как они выглядят на асме, сгенерировано VS 2013 SP3, C++, оптимизация по скорости. В первом варианте одна ассемблерная инструкция, во втором 3. Все, тема закрыта, спорить не о чем.
Я ассемблер прокомментировал, чтобы было понятно. Вообще, полезно в ассемблерный код иногда заглядывать, улучшает карму )) В MQL он не генериться, но должно быть близко к коду VC++
А это с if, 3 иструкции на сравнение
Да и сама по себе эта замена не равнозначна if, об этом я тоже писал уже несколько раз.
Если изначально значение tbIdx будет больше TICK_BUF_MAX_IDX, то if обнулит переменную, а &= не обнулит (точнее может обнулить, а может и нет, в зависимости от младших битов, короче как повезёт. Поэтому я сначала и не врубился, зачем оно вообще там.
Конечно, понимаю. Суть в том, что операция if медленнее. Вот два варианта, как они выглядят на асме, сгенерировано VS 2013 SP3, C++, оптимизация по скорости. В первом варианте одна ассемблерная инструкция, во втором 3. Все, тема закрыта, спорить не о чем.
Я ассемблер прокомментировал, чтобы было понятно. Вообще, полезно в ассемблерный код иногда заглядывать, улучшает карму )) В MQL он не генериться, но должно быть близко к коду VC++
А это с if, 3 иструкции на сравнение
Сравнение на ассемблере займет все равно одну инструкцию CMP (хотя при оптимизации кода можно и без нее обойтись) все остальное - организация цикла(если он нужен).
К примеру:
Только чем оно Вам поможет? К слову операция CMP, отнимает столько же времени как и любая равнозначная математическая/логическая операция (SUB/ADD/AND/OR/XOR), поскольку CMP есть ни что иное как вычитание. Под термином "равнозначная" я имею ввиду второй операнд инструкции (константы или регистры). Жаль, конечно что MQL не поддерживает ассемблерных вставок, но видимо есть на то причины )).