Я конечно прошу прощения за мой французский, но что за массовый "индусс-стайл" в OrderSend() ?
_SL == 0 ? 0.0 : _SL _TP == 0 ? 0.0 : _TPЭто какая-то особая магия?
Я конечно прошу прощения за мой французский, но что за массовый "индусс-стайл" в OrderSend() ?
Это какая-то особая магия?Равносильно:
if(_SL == 0) _SL=0.0; else _SL=_SL;
- www.mql5.com
Виталий, вопрос не в том как работает примитивная булева логика тернарного оператора ?, Вопрос в том зачем эта логика конкретно в таком выражении, какую полезную нагрузку несёт ?
OrderSend(symbol, OP_SELLLIMIT, _volume, price, slp, _SL == 0 ? 0.0 : _SL, _TP == 0 ? 0.0 : _TP, cmnt, magic, expir)
Кроме варианта поклонения богам индусского погроммирования, есть разумные идеи? ;)
З.Ы. И кмк ваш пример не совсем корректен, _SL ничего присваиваться не будет, с каких пор "==" стал оператором присвоения значения?Виталий, вопрос не в том как работает примитивная булева логика тернарного оператора ?, Вопрос в том зачем эта логика конкретно в таком выражении, какую полезную нагрузку несёт ?
Кроме варианта поклонения богам индусского погроммирования, есть разумные идеи? ;)
З.Ы. И кмк ваш пример не совсем корректен, _SL ничего присваиваться не будет, с каких пор "==" стал оператором присвоения значения?OrderSend(symbol, OP_SELLLIMIT, _volume, price, slp, _SL == 0 ? 0.0 : _SL (если выбрано значение стопа "0",то стоп равен "0": или значение стопа), _TP == 0 ? 0.0 : _TP, cmnt, magic, expir)
Вполне достойная и краткая конструкция, без каких либо переопределений
Вполне достойная и краткая конструкция, без каких либо переопределений
OrderSend(symbol, OP_SELLLIMIT, _volume, price, slp, _SL, _TP, cmnt, magic, expir)
Какой еще раз, повторюсь, смысл в конструкции возвращающей ровно себя:
_SL == 0 ? 0.0 : _SL
Что тут проверять, если _SL изначально 0, то он и вернёт себя, то есть 0.
Я думал изначально, может это хитрый "финт ушами" из-за какого-то нестандартного поведения MT, но это косяк в базовом понимании что есть булева логика. За ненужный if() даже школьникам на олимпиадах баллы снижают. Просто пока еще удивительно видеть в официально публикуемых либах подобные вещи... наверное скоро привыкну.
Я конечно прошу прощения за мой французский, но что за массовый "индусс-стайл" в OrderSend() ?
Это какая-то особая магия?Это был вопрос/замечание 50/50. Так как сам неоднократно сталкивался, с тем что из-за багов или неудачного расположения "звёзд на небе" работая со сторонним фрейморком, драйвером или рантаймом приходилось не то что лишнее выражение, а целые строки добавлять, чтобы например принудительно обновить не обновляющийся должным образом GUI или кэш записи БД. И без пояснения, причина появления в коде таких строк для стороннего человека с вероятностью близкой к 100% будет не ясна, так как с точки зрения нормальной логики кода эти строчки/выражения будут ничем не обоснованы. В MT4 1160 например поломали не сокращённый AND для выражений вида bool MyFunc() & bool MyFunc2(), компилятору теперь дополнительное сравнение ==/!= подавай, хотя обещали пофиксить.
Но с другой стороны, скачивая библиотеку (предполагающую по-умолчанию более тщательно спроектированный, протестированный и оформленный код + скилл разработчика выше среднего + набор рекомендуемых практик от человека с опытом в данной технологии) тем более с официального сайта производителя, а не с абстрактного форума домохозяек-любительниц программирования, предполагаешь всё-таки как минимум отсутствие ляпов в вещах уровня 2*2 (и тем более практики индуизма), ибо при этом автоматически дальнейшее обсуждение рекомендуемых подходов, практик и скиллов автора делится на 0 и становится бессмысленным. Написано не глумления ради, всё-таки MQL это DSL. А вот в более серьезных промышленных вещах могут и тапками больно закидать ;)
Это был вопрос/замечание 50/50.
Виталий, вопрос не в том как работает примитивная булева логика тернарного оператора ?, Вопрос в том зачем эта логика конкретно в таком выражении, какую полезную нагрузку несёт ?
Кроме варианта поклонения богам индусского погроммирования, есть разумные идеи? ;)
З.Ы. И кмк ваш пример не совсем корректен, _SL ничего присваиваться не будет, с каких пор "==" стал оператором присвоения значения?Одной из идей может быть автозамена
Допустим, раньше было
SL == 0 ?
_globalSL : _SL
а потом, от глобальной решили уйти в пользу безвариантного 0, ну и быстро сделать это можно с помощью автозамены
Не факт, что это тот самый случай, но все же
Одной из идей может быть автозамена
Допустим, раньше было
а потом, от глобальной решили уйти в пользу безвариантного 0, ну и быстро сделать это можно с помощью автозамены
Не факт, что это тот самый случай, но все же
допустим _SL==0, в этом случае присваивается _SL=0
а если _SL!=0, то в этом случае присвоится _SL=_SL
т.е, условие _SL == 0 ? 0.0 : _SL оставляет все как было
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Simple Trading:
Простая библиотека для MT4, содержащая базовый инструментарий для выполнения торговых операций. Разместите файл "Trade.mqh" в каталоге Include, после чего библиотеку можно использовать, включив её в основной исходный код при помощи #inlcude <Trade.mqh>
Автор: Sergey Vasilev