Пока нет объявлений.
500 результатов за 0.0711 секунд.
Ключевые слова
Участники
Метки
-
это делает PositionGetTicket пример из справки можете посмотреть: https://www.mql5.com/ru/docs/constan...qltraderequest Модификация Stop Loss и Take Profit позиции... -
вроде он косвенно указал, в качестве примера
не все документируют MQ , особенно поведение, все на форумах в обсуждении только можно узнать, и не факт, что правильно подсказали
ЗЫ: в копилку знаний, вчера разработчик описал немного про поведение индикаторных буферов https://www.mql5.com/ru/forum/369007#comment_22335899
суть, что индикаторный буфер, это массив, но с поведением так себе - что вздумается терминалу, и работать с индикаторным буфером исключительно из OnCalculate() ..... ох перемудрили MQ с оптимизацией, кто там лазит по моим индикаторам не понятно, прям как на работе - положил ручку на стол, отошел, пришел, а обратно в руки ручку и не возьмешь, кто то уже помог ей ноги приделать ...Прокомментировать:
-
это не совсем так
для индикатора будет работать как Вы пишете
а вот для советника все работает без проблем - хочешь переключай ТФ, глобально описанные переменные и переменные с модификатором static не будут сброшены, но вызов OnDeinit() и Init() быдет произведен...Прокомментировать:
-
Тут не может быть однозначного ответа, зависит от логики кода, ну и всегда получается, что если расходуешь память, то увеличиваешь быстродействие, и наоборот - меньше используешь памяти. но жертвуешь быстродействием
Если вопрос все таки про ООП, то самая затратная операция это выделение памяти под экземпляр класса, все остальное - конструкторы или вызов методов, вообще не будет заметно по скорости
Выделение памяти происходит если создается экземпляр объекта - все один в один как с обычной переменной - создали в локальной области...Прокомментировать:
-
можно даже так:
MQL код:Print(sizeof(CSymbolInfo));
Прокомментировать:
-
я привел пример исходя из Вашего вопроса - как минимум не забудете инициализировать
ООП это да гибкость, но это не самое главное в нем
ООП обеспечивает защиту данных (контроль целостности данных) и выдачу ошибок на стадии компиляции
представьте, что софт разрабатывает человек 10, у каждого свой участок работы, а при сборке проекта - все компилируется, а в итоге работает криво.... а кода тыщ 100 строк и чего делать?
ООП позволяет защищать данные и разделять методы работы с этими данными и все с контролем на стадии компиляции
попробуйте в моем примере в базовом классе создать переменную с кодификатором private и присвоить этой переменной значение в классе потомка - при компиляции будет ошибка...Прокомментировать:
-
имхо нужно
физически ни в чем, практически - будет сначала выполнен первый способ инициализации, а затем в теле конструктора (второй способ)
такие способы инициализации удобно использовать при наследовании от базового класса:
MQL код:
class CBASECLASS
{
protected:
int i;
double d;
CBASECLASS(int I, double D): i(I), d(D) {} // защищенный конструктор, он не дает создать жкземпляр класса без наследования, иногда это удобно
};
//+------------------------------------------------------------------+
class A: private CBASECLASS
{
public:
A(): CBASECLASS(0,0) {}
A(int I_Value, double D_Value): CBASECLASS(I_Value, D_Value) {}
string GetValue() { return("I = "+ (string)i +" , D = " + string(d)); }
};
//+------------------------------------------------------------------+Прокомментировать:
-
не самый лучший совет
он пишет о том ... да фиг его знает о чем - его статьи как раз о том, что я писал - не наследуйтесь от чего попало и не тяните длинную иерархию наследования... там 90% материалов статей о том как внести изменения в предыдущий код, а оставшиеся 10% ... подозреваю, о том, как все окружение терминала обернуть в методы своих классов ... осталось выяснить зачем? - вижу единственное назначение - чтобы сильно все потом тормозило в тестере?
Лучше любую книгу по ООП, даже в онлайн формате, просто полистайте, для кругозора
ну как бы только практика и еще раз практика! - пишите под конкретные задачи конкретный код, а там и вопросы конкретные появятся ...Прокомментировать:
-
преимущества ООП только в принципах ООП: полиморфизм, наследование, инкапсуляция - не больше и не меньше
если не впадать в глубокомысленный холивар, то если Вам нужен хотя бы один из принципов ООП (или удобно использовать) - то применяйте ООП, нет - тогда не пользуйтесь - т.е. ООП не обязует применять ВСЕ принципы ООП СРАЗУ
ЗЫ: имхо, самое распространенное применение ООП в MQL - это инкапсуляция, оберните готовый код в класс и... и можете наплодить с десяток экземпляров этого класса
ЗЫЗЫ: не наследуйтесь от чего попало! в...Прокомментировать:
-
не возможно, защита от несанкционированный действий от разработчиков терминала - все файловые операции, только в пределах папок MQL
ООП это парадигма программирования, т.е. по сути стиль написания проекта/программы
С++ - да, если сделаете в виде dll
если хотите использовать dll, то даже С++ не нужен, достаточно уметь вызывать системные функции Windows - WinAPI , вот статья от разработчиков МТ https://www.mql5.com/ru/articles/1540...Прокомментировать:
-
тогда не надо было и приписывать в свое сообщение CUDA
получается для красного словца приписали
ладно, все ясно - топик по ссылке с продажей граалино почитал... смех и слезы
имхо, не серьезно...Прокомментировать:
-
CUDA интересует, какие задачи?
но тут вопросы сразу, почему MQL4, а не 5-ка?
про все остальное.... дело вкуса, да и мой интерес был вызван громким заявлением про правильность программирования , повторюсь - это или стандарты ИТ-гигантов или не может быть и речи, максимум, как вариант - максимально быстрый код и/или максимально компактный код..... в общем тут из области софистики ...Прокомментировать:
-
сомнительное утверждение
- нет единого стиля имен переменных, то UpperCamelCase, то UpperCamelCase + подчеркивание, то признак типа переменной dValue, то некое сочетание признака и смыслового значения There_Is .... в общем до требований написания кода для Гугл или Майкрософт, совсем не дотягивает
- в библиотеке торговых функций ужасный микс использования break + continue + if-else , имхо должен быть какой то один стиль или if-else или if - continue
- режут глаз в условиях if(value == false) , могу ошибаться, но так давно не пишут, для этого и применяют признак (префикс) булевой переменной is --- > isTradeContextFree , тогда будет привычное сейчас if(!isTradeContextFree) .... но наверное придираюсь, нравится пользуйтесь
- циклы перебора ордеров неэкономные, имхо, лучше
MQL код:for (i = OrdersTotal()-1; i >=0; i--)
вместо Вашего
MQL код:for (i = 0; i < OrdersTotal (); i++)
имхо, очень громкое заявление,...Прокомментировать:
-
MQL код:
#define PRINT(VAR) Print(#VAR," = ",VAR)
//+------------------------------------------------------------------+
void OnStart()
{
string mystr = "Hello word!";
PRINT(mystr);
double pi = M_PI;
PRINT(pi);
for(int x = 0, y = 0, z = 0; x < 10; x++, y += rand(), z -= rand())
{
PRINT(x);
PRINT(y);
PRINT(z);
Sleep(500);
}
}
//+------------------------------------------------------------------+
Прокомментировать:
-
эт ты по логике и по смысловому значению пытаешься передать свои ощущения от видения слов OrderSend() и OrderSendAsync()
обе функции отправки ордеров возвращают ответ отправлен ордер или нет:
у них всего одно отличие, что структура MqlTradeResult для синхронной отправки ордера будет заполнена сразу, а для асинхронной эту структуру нужно заполнять из события Trade в OnTradeTransaction()
т.е. на скорость выставления одного ордера, по сути не влияет чем пользоваться, но есть разница чем пользоваться если хочешь на одном тике набросать еще пару...Последний раз редактировалось IgorM; 07.04.2020, 00:45.Прокомментировать:
Прокомментировать: