Результат поиска - Инвестиционный форум | InvestSocial
Ночь

Вход

 | 
Регистрация
Пока нет объявлений.
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.

    Прокомментировать:

X
`