Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме
Страница 17 из 17
Первая ... 7 16 Последняя

Показаны сообщения: с 321 по 340 из 340

Тема: ООП для MQL4/MQL5 - это очень просто. Курс для начинающих.

 Перейти в классический вид темы
     
  1. ТОП сообщений
    2018-01-14   22:44
    Лучший ответ #1
    Накопленные выплаты 133926 RUB

    Всем привет!
    Открываю тему по изучению объектно-ориентированного программирования с нуля. Будем использовать языки MQL4, MQL5, возможно, С++ в составе DLL. Будет желание, зацепим и C# с Matlab'ом
    Кратенько о себе. Программист с более чем 25-летним стажем, работал в крупных отечественных и зарубежных компаниях по разработке ПО и различной электроники. В мае 2010 г. понял, что наемная работа мешает мне развиваться в программировании на форексе, с тех пор работаю дома и вполне доволен. Активно использую в работе MQL4, MQL5, VS 2017 C++, C#, Matlab. Ну и всякое разное по мелочи.
    Краткий план курса

    1. Структуры
    2. От структур к классам
    3. Абстрактные классы, виртуальные функции
    4. Интерфейсы
    5. Что дальше?
    И вопрос к модераторам. Хотелось бы сделать меню, чтобы участники могли ориентироваться в разделах темы. Если я сделаю меню в начальных постах, как долго у меня будет доступ на редактирование поста с меню? Надо ли мне будет раз в несколько дней делать там изменения, чтобы пост не "заморозился"? Сможете ли вы в крайнем случае (например, я отсутствовал больше разрешенного срока) разморозить пост с меню? Или лучше продублировать меню на независимом ресурсе, например FB?
    Жду вашего ответа и начинаю сегодня.

    2018-01-16   03:47
    Лучший ответ #2
    Накопленные выплаты 133926 RUB

    Ну что, начнем осваивать классы. С вашего позволения я сделаю для начала небольшой лирический отступ. Среди новичков есть мнение, что классы - это очень сложно, что понять смысл ООП может только профессиональный программист и т.д. Заявляю с полной ответственностью - это полная ерунда. Как обычно, я всему учу на своем примере.
    Я по образованию вообще электронщик, программирование освоил самостоятельно. Тем не менее за душой куча проектов, как для России, так и по аутсортингу. Так что прочь сомнения, день-другой, и вы поймете, как работают классы!
    --------------
    Итак, для учебных целей придумаем простенькую структуру
    [php]
    struct SSimple1
    {
    int ticket;
    double profit;
    };
    [/php]
    Как нам преобразовать ее в класс? Элементарно, Ватсон! Заменяем слово struct на class
    [php]
    class CSimple1
    {
    int ticket;
    double profit;
    };
    [/php]
    И пишем проверочный код. Да, друзья, чтобы чему-то научиться, надо писать код. Самому. Ручками. Читать мои посты недостаточно. Так что пиво в сторону, открывайте редактор MQL4 или 5 и пишем скрипт.
    [php]
    void OnStart()
    {
    SSimple1 ss1;
    CSimple1 cs1;
    ss1.ticket = 123;
    cs1. // заметили, что после точки у вас не развернулся список из 2-х переменных?
    // попробуйте насильно вбить
    cs1.ticket = 123; // получите ошибку компиляции. Что делать, щеф??
    [/php]
    Дело в том, что классы исторически произошли от структур, по крайней мере в Си-подобных языках. И если в структуре все ее члены, методы(функции) и поля(переменные) открыты внешнему миру, то в классах есть три уровня защиты, это уровни private, protected, public.
    Начнем с самого "доброго" уровня - с public Все, что находится в секции public, видно окружающему миру так же, как и все, что есть в структуре. Делаем эксперимент.
    [php]
    class CSimple1
    {
    public: // объявили секцию, где все будет доступно снаружи
    int ticket;
    double profit;
    };
    [/php]
    И еще раз прогоняем OnStart. Обратите внимание, после печатанья точки cs1. у вас вдруг стал доступен список из 2-х переменных? Это компилер увидел секцию public и решил, что теперь вы имеете доступ к этим двум переменным.
    Далее разберемся с правами доступа поглубже и перейдем к наследованию. Потом забубеним что-то практическое, желательно мультиплатформенное, для мт4 и мт5 одновременно.
    ----------------------------------------
    Друзья, Дамы и Господа. Я буду все больше давать практических заданий, очень рекомендую не просто читать эти посты, а делать их. Времени это будет занимать немного, но у вас наработается практика. Тупое чтение никогда ничего не дает. В этой жизни надо действовать, а не тупо читать!

    2018-07-19   20:34
    Лучший ответ #3
    Накопленные выплаты 27108 RUB

    Цитата Сообщение от VDev Посмотреть сообщение
    Я использовал Autoit только для кликера для бинарных опционов. Там же почти везде web-интерфейс. Брал свой скальпер, а он отлично открывает сделки на коротких движениях цены, запускал его, и он вместо открытия ордеров кликал по клавишам сайта с БО. Очень успешно, пожалуй, надо его подштукатурить и пустить на продажу или в аренду. Изначально делал одному клиенту, как заказ, он просил сделать простенький алгоритм, на RSI. К моему удивлению, даже на такой ерунде стабильно молотил прибыль.
    насчет продажи... ну я бы не сильно надеялся много продать, попробуйте на MQL-маркете рейтинговые продажи посмотреть, и авторов этих чудо-трудов почитать, некоторые гуглятся и по другим форумам - увы, там настоящие продавцы, но никак не программисты в 99% случаев, я даже с одним случайно был знаком (ему то и нужны программисты ибо он занят маркетингом). т.е. что бы что то продать нужно заниматься маркетингом, а просто выставить что то на продажу и даже очень качественный товар, ну будут там продажи по 1 шт в пару месяцев
    Цитата Сообщение от MonyaMaker Посмотреть сообщение
    Ну, и смысл в работу автомата, я надеюсь речь об этом идёт, если что поправьте, кривые пальцы вставлять, опять же, хоть на тестере хоть в реале?
    Хоть с клавы, хоть с мыши.
    Обработчики событий отписал, и наслаждайся. Т.е. данные из кода толкаешь, а не с руки.
    полуавтомат хочу, и в тестере хочу погонять его, лень писать 2 версии (тестер/реал), надеюсь решить проблему имитации в тестере событий мыши
    полуавтомат хочу в виде панели, в которой можно чекбоксом выделить необходимый ордер и перевести этот ордер в отдельное сопровождение (доливки, трал, усреднение и пр.), а сам советник будет выставлять ордера по основному алгоритму - вот такая вот идея

    2018-01-15   00:53
    Лучший ответ #4
    Накопленные выплаты 133926 RUB

    У нас в процессе торговли может быть множество открытых и отложенных ордеров. Конечно, можно было бы тупо сделать каждый параметр динамическим массивом массивом, но представьте все неудобства такого подхода. При каждом увеличении количество ордеров сверх размера массива надо его менять для каждого параметра. И вопрос, что делать с дырами, которые получаются на месте закрытых ордеров?
    [php]
    int ticket[], cmd[], slippage[], magic[];
    double volumeSend[], volumeReal[], priceSend[], priceReal[], stoploss[], takeprofit[];
    [/php]
    Гораздо проще и красивее упаковать все параметры в контейнер, который называется структурой. Для того, чтобы использовать структуру, надо сначала объявить ее тип. Это делается один раз и в дальнейшем мы можем создавать экземпляры этой структуры, или говоря по другому переменные типа объявленной структуры.
    [php]
    struct SOrderParams // объявили имя типа. Теперь в программе помимо стандартных типов int, double и др. появился наш пользовательский тип структуры с именем SOrderParams
    {
    int ticket, cmd, slippage, magic;
    double volumeSend, volumeReal, priceSend, priceReal, stoploss, takeprofit;
    };
    [/php]
    Допускается после объявления типа сразу же создавать переменные этой структуры
    [php]
    struct SOrderParams // объявили имя типа. Теперь в программе помимо стандартных типов int, double и др. появился наш пользовательский тип структуры с именем SOrderParams
    {
    int ticket, cmd, slippage, magic;
    double volumeSend, volumeReal, priceSend, priceReal, stoploss, takeprofit;
    } order1, order2, orders[128];
    [/php]

    2018-01-15   13:22
    Лучший ответ #5
    Накопленные выплаты 133926 RUB

    Продолжим.
    Структуры, подобные SOrderParams, то есть имеющие в составе только целые и вещественные типы данных, называются простыми. Например, если в состав структуры входит строка или указатель на класс, она теряет невинность и простоту
    Простые типы структур можно присваивать, при этом данные будут копироваться.
    [php]oparams_local2 = oparams_local3;[/php]
    Но тут есть важное замечание. Для компилятора идентичными структурами будут структуры одного типа. А тип определяется однозначно по имени типа, компилятор не анализирует, как там структура устроена внутри. Имя другое - все, значит и структура другая. Рассмотрим на примере.
    [php]
    struct SOrderParams2 // та же структура, что и SOrderParams, но с другим именем типа - для компилятора она не идентична SOrderParams
    {
    int ticket, cmd, slippage, magic;
    double volumeSend, volumeReal, priceSend, priceReal, stoploss, takeprofit;
    } order2_1, order2_2, orders2[128];
    SOrderParams oparams_global; // глобальная переменная структуры, все поля обнулены
    void OnStart()
    {
    SOrderParams oparams_local1; // локальная переменная структуры, в полях в общем случае может быть мусор от предыдущих вызовов (именно в данном случае не будет, так как однопроходный скрипт)
    SOrderParams oparams_local2 = {0}; // обнулили все поля принудительно
    SOrderParams oparams_local3 = {123, ORDER_TYPE_SELL/* OP_SELL*/, 25, 456789, 0.5, 0.5, 1.25468, 1.25465, 1.25860, 1.25410}; // обнулили все поля принудительно
    Print(oparams_local2.priceReal, ", ", oparams_local2.stoploss, ", ", oparams_local3.magic, ", ", oparams_local3.stoploss);
    oparams_local2 = oparams_local3;
    // order2_1 = oparams_local2; // ошибка компиляции 'operator=' - illegal operation use Structures.mq5 30 13
    }
    [/php]
    Структуры разных типов можно копировать только отдельно по полям
    [php]
    // order2_1 = oparams_local2; // ошибка компиляции 'operator=' - illegal operation use Structures.mq5 30 13
    // поэтому копируем по полям
    order2_1.cmd = oparams_local2.cmd;
    order2_1.magic = oparams_local2.magic;
    order2_1.priceReal = oparams_local2.priceReal;
    order2_1.priceSend = oparams_local2.priceSend;
    // и так далее
    [/php]

    2018-01-14   23:25
    Лучший ответ #6
    Накопленные выплаты 133926 RUB

    Курс будет рассчитан на людей, знакомых с программирование на MQL4/5, но не владеющих ООП. То есть я не буду объяснять, что такое циклы, функции и т.д. Смело задавайте вопросы в рамках темы, обязательно всем отвечу.
    Огромная просьба не скатываться во флейм и не устраивать священные войны а-ля "ООП vs процедурное программирование", именно из-за флейма я ушел с форума разработчиков Metatrader и пришел сюда. Надеюсь, тут народ подисциплинированнее, а модераторы построже В первых постах возможны ошибки с кодами оформления, т.к. нет особого опыта на этом движке, прошу указывать и поправлять.
    ------ Поехали! -------
    Начну с того, что, вопреки ошибочному мнению, языки MQL4 и MQL5 практически одинаковы, поэтому все, что касается ООП, будет работать и там и там. Отличия касаются только API (application program interface - программный интерфейс приложений), это торговые функции, работа с таймсериями, индикаторами и т.д. Но сами языки идентичны.
    Основная цель структуры - упаковать набор разнородных данных в единый контейнер. Например, имеем набор переменных
    [php]int ticket, cmd, slippage, magic;
    double volumeSend, volumeReal, priceSend, priceReal, stoploss, takeprofit;[/php]
    Как вы поняли, в них будут хранится параметры открытого ордера (код для MQL4), для MQL5 параметры будут немного другие. Поэтому я постараюсь писать кросс-платформенный код, как давно делаю в своих роботах.
    В дальнейшем мы будем разрабатывать класс по управлению сеткой виртуальных ордеров и надо будет как-то хранить параметры сетки и параметры уже открытых ордеров. Для этого будем использовать структуру.
    Продолжение через 30 минут.
    !!!!!!!!!!!!!!! почему MQL код не оформился? Подскажите плз, как правильно сделать

  2. линк#1
    Знающий
    Все пучком
     
    VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь Аватар для VDev
    Регистрация:
    14.07.2010
    Пол:
    Мужчина
    Сообщений:
    3,934
    Накопленные выплаты (Подробнее):
    133926 RUB
    Поставил лайков:
    975
    Получено лайков:   3,321
    в 1,960 сообщениях
    84%
    Поймано букетов:
    2
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 3
    Всем привет!

    Открываю тему по изучению объектно-ориентированного программирования с нуля. Будем использовать языки MQL4, MQL5, возможно, С++ в составе DLL. Будет желание, зацепим и C# с Matlab'ом
    Кратенько о себе. Программист с более чем 25-летним стажем, работал в крупных отечественных и зарубежных компаниях по разработке ПО и различной электроники. В мае 2010 г. понял, что наемная работа мешает мне развиваться в программировании на форексе, с тех пор работаю дома и вполне доволен. Активно использую в работе MQL4, MQL5, VS 2017 C++, C#, Matlab. Ну и всякое разное по мелочи.

    Краткий план курса
    1. Структуры
    2. От структур к классам
    3. Абстрактные классы, виртуальные функции
    4. Интерфейсы
    5. Что дальше?

    И вопрос к модераторам. Хотелось бы сделать меню, чтобы участники могли ориентироваться в разделах темы. Если я сделаю меню в начальных постах, как долго у меня будет доступ на редактирование поста с меню? Надо ли мне будет раз в несколько дней делать там изменения, чтобы пост не "заморозился"? Сможете ли вы в крайнем случае (например, я отсутствовал больше разрешенного срока) разморозить пост с меню? Или лучше продублировать меню на независимом ресурсе, например FB?
    Жду вашего ответа и начинаю сегодня.

    Последний раз редактировалось Gold; 17.01.2018 в 11:23. Причина: Добавил ссылки для п.1 и п.2

  3. <title>InstaForex</title><meta name="description" content="InstaForex"><a href="https://instaforex.org/ru/pamm_system">InstaForex</a>
  4. линк#326
    Свой человек
    АнтонР85 хорошая репутация АнтонР85 хорошая репутация АнтонР85 хорошая репутация Аватар для АнтонР85
    Регистрация:
    30.06.2016
    Пол:
    Мужчина
    Сообщений:
    675
    Накопленные выплаты (Подробнее):
    24049 RUB
    Поставил лайков:
    165
    Получено лайков:   296
    в 238 сообщениях
    44%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от json Посмотреть сообщение
    "ООП требует разбрасывания информации по множеству мелких инкапсулированных объектов, количество ссылок на эти объекты тоже растёт взрывными темпами. ООП требует передавать повсюду длинные списки аргументов или непосредственно хранить ссылки на связанные объекты для быстрого доступа к ним.
    С ума сойти. Где же вы таких "криворуких" писателей находите? Или это всякие "блогеры - шмокеры"? Вот тут я "изобразил" небольшой пример(по поводу передачи аргументов). В нем ООП нет ни грамма, но в нем видно, что даже "Структурное программирование" существенно облегчает жизнь. Первая функция OnCalculate() сгенерированна редактором, второй вариант как ее хотел бы видеть я.
    PHP код:
    #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ 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[]) { Функция(time[0], open[0], high[0], low[0], close[0], tick_volume[0],volume[0], spread[0]);//Передача 60 баит. return(rates_total); } void Функция(datetime time, double open, double high, double low, double close, long tick_volume, long volume, int spread){} //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const MqlRates &бары[]) { Функция(бары[0]); return(rates_total); // Передача 4 баит для 32-разрядной системы и 8 баит для 64-разрядной системы. } //+------------------------------------------------------------------+ void Функция(const MqlRates &бар) { // Вся структура занимает 60 байт. datetime time = бар.time; // 8 баит. double open = бар.open; // 8 баит. double high = бар.high; // 8 баит. double low = бар.low; // 8 баит. double close = бар.close; // 8 баит. long tick_volume = бар.tick_volume; // 8 баит. int spread = бар.spread; // 4 баита. long real_volume = бар.real_volume; // 8 баит. } //+------------------------------------------------------------------+

    Из примера видно что все существенно облегчается, вместо 8 ссылок на массивы в первом варианте, во втором варианте передается только одна, точно так же обстоят дела и с передачей "бара" в пользовательскую функцию.


  5. post_thanks Получено лайков: 6

    ILLANER (16.04.2020), Незарегистрированный (5 пользователей)

  6. линк#327
    Знающий
    В раздумьях
     
    ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь Аватар для ILLANER
    Регистрация:
    02.09.2016
    Пол:
    Мужчина
    Сообщений:
    3,035
    Накопленные выплаты (Подробнее):
    92596 RUB
    Поставил лайков:
    909
    Получено лайков:   2,890
    в 1,556 сообщениях
    95%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от json Посмотреть сообщение
    Давайте и вы тоже, конкретно показывайте, чего там такого лишнего, что за кодо-хлам такой.
    Сразу я не стал отвечать на этот пост, потому что генератор этот удалил еще год назад. И ради того что бы доказать кому то чего то, я не хочу ставить ненужную мне программу. Но вот вам пример, от другого пользователя.
    Цитата Сообщение от АнтонР85 Посмотреть сообщение
    Из примера видно что все существенно облегчается, вместо 8 ссылок на массивы в первом варианте, во втором варианте передается только одна,
    И это только вершина айсберга, если столько хлама в одной коротенькой функции, то какой мы увидим код если сгенерим целый советник, пусть даже самый простой, особенно с индикатором. Ну я то знаю, уже видел. И не только я. А вот json, похоже ни разу не заглядывал в исходник, который генерит ему эта программа. Я уж не говорю о попытке там что то подправить или добавить что то свое.


  7. post_thanks Получено лайков: 1

    АнтонР85 (16.04.2020)

  8. линк#328
    Свой человек
    АнтонР85 хорошая репутация АнтонР85 хорошая репутация АнтонР85 хорошая репутация Аватар для АнтонР85
    Регистрация:
    30.06.2016
    Пол:
    Мужчина
    Сообщений:
    675
    Накопленные выплаты (Подробнее):
    24049 RUB
    Поставил лайков:
    165
    Получено лайков:   296
    в 238 сообщениях
    44%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ILLANER Посмотреть сообщение
    И это только вершина айсберга, если столько хлама в одной коротенькой функции, то какой мы увидим код если сгенерим целый советник, пусть даже самый простой, особенно с индикатором.
    В этом случае Метоквост оставил сингатуру этой функций в "процедурном стиле", либо для совместимости с предыдущими версиями программ, либо для тех кто не умеет и/или не хочет двигаться в сторону ООП. Беды принципе в этом нет, но разумно было бы добавить еще одну перегрузку(как у меня) для тех кто не желает "возиться" с примитивными типами. Но, а насчет "генератора", то это дело личное, кто хочет тот использует(я лично с ним вообще не знаком).

    Последний раз редактировалось АнтонР85; 16.04.2020 в 09:55.

  9. линк#329
    Знающий
    В раздумьях
     
    ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь Аватар для ILLANER
    Регистрация:
    02.09.2016
    Пол:
    Мужчина
    Сообщений:
    3,035
    Накопленные выплаты (Подробнее):
    92596 RUB
    Поставил лайков:
    909
    Получено лайков:   2,890
    в 1,556 сообщениях
    95%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от АнтонР85 Посмотреть сообщение
    Первая функция OnCalculate() сгенерированна редактором
    А я подумал что здесь речь идет именно о генераторе экспертов. У меня был небольшой опыт , год назад установил себе 1 из таких генераторов для пробы, по этой проге на форуме еще тема есть. Сгенерировал парочку простых экспертов и хотел доработать своими функциями. Аднака прежде чем что то менять или добавлять в такой код, нужно еще разобраться что в нем относится к эксперту как к таковому, а что просто шаблоны функций , которые вшиты в этот генератор и заполняются им в том случае если пользователь захочет их использовать. Другими словами что бы из этого кода сделать свой эксперт, нужно сначала убрать из него кучу лишних функций которые им не используются. В общем легче свой эксперт написать руками с нуля, чем исправлять то что сгенерила эта прога. + к тому же функционал этого генератора , позволяет делать эксперты только со стандартными индикаторами. Пользовательский индикатор в нее не впихнешь. А я наоборот использую сторонние индикаторы в качестве основных. Стандартные же, разве что в качестве фильтров.


  10. post_thanks Получено лайков: 1

    АнтонР85 (16.04.2020)

  11. линк#330
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,941
    Накопленные выплаты (Подробнее):
    129573 RUB
    Поставил лайков:
    1,982
    Получено лайков:   2,812
    в 1,604 сообщениях
    57%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ILLANER Посмотреть сообщение
    А вот json, похоже ни разу не заглядывал в исходник, который генерит ему эта программа. Я уж не говорю о попытке там что то подправить или добавить что то свое.
    Да я только с использованием FEAG и пишу совчиков))) Почему - писал выше: визуализация логики. Позволяющая легко оптимизировать логические цепочки!

    Подправить или добавить свое - элементарно! Есть специальные разделы для собственных блоков или утилит. Создавайте и используйте, простым перетаскиванием на блок-схему ( dgar and drop ).

    Нажмите на изображение для увеличения
Название: 2020-04-16 15_56_21-Etasoft Forex Generator 5 - _.png
Просмотров: 11
Размер:	37.8 КБ
ID:	3628906

    Цитата Сообщение от ILLANER Посмотреть сообщение
    + к тому же функционал этого генератора , позволяет делать эксперты только со стандартными индикаторами. Пользовательский индикатор в нее не впихнешь.
    А вот и подтверждение, что вы в нем не работали. Или только глянули, вам это показалось непонятным - закрыли и удалили))) Можно и так)))

    Нажмите на изображение для увеличения
Название: 2020-04-16 15_51_06-Etasoft Forex Generator 5 - _.png
Просмотров: 11
Размер:	48.6 КБ
ID:	3628909

    ПС: Прежде чем огульно поливать грязью чье-либо творение, неплохо было бы понять что это )))


  12. post_thanks Получено лайков: 3

    ILLANER (16.04.2020), Незарегистрированный (2 пользователя)

  13. линк#331
    Знающий
    В раздумьях
     
    ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь Аватар для ILLANER
    Регистрация:
    02.09.2016
    Пол:
    Мужчина
    Сообщений:
    3,035
    Накопленные выплаты (Подробнее):
    92596 RUB
    Поставил лайков:
    909
    Получено лайков:   2,890
    в 1,556 сообщениях
    95%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от json Посмотреть сообщение
    А вот и подтверждение, что вы в нем не работали.
    Да похоже на то. А точнее я работал в другом генераторе, во всяком случае его интерфейс выглядел иначе. В таком случае было бы интересно посмотреть на исходный код эксперта, созданного с помощью этой проги. Хотя бы самого простого , без индикаторов. Скажем классический мартингейл . Ордера без стопов с умножением объема последующих ордеров серии на определенной дистанции друг от друга со входом по свечкам. Сам я конечно в любом случае не стану этого делать. Я уже освоил язык под МТ4 и мне легче написать руками. Тем более схем я никаких не рисую, перед созданием эксперта. Ну тут уж конечно у каждого свой подход.


  14. линк#332
    Знающий
    Скромняжка
     
    json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь json авторитетный пользователь Аватар для json
    Регистрация:
    01.08.2011
    Пол:
    Мужчина
    Сообщений:
    4,941
    Накопленные выплаты (Подробнее):
    129573 RUB
    Поставил лайков:
    1,982
    Получено лайков:   2,812
    в 1,604 сообщениях
    57%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ILLANER Посмотреть сообщение
    Да похоже на то. А точнее я работал в другом генераторе, во всяком случае его интерфейс выглядел иначе. В таком случае было бы интересно посмотреть на исходный код эксперта, созданного с помощью этой проги. Хотя бы самого простого , без индикаторов. Скажем классический мартингейл . Ордера без стопов с умножением объема последующих ордеров серии на определенной дистанции друг от друга со входом по свечкам. Сам я конечно в любом случае не стану этого делать. Я уже освоил язык под МТ4 и мне легче написать руками. Тем более схем я никаких не рисую, перед созданием эксперта. Ну тут уж конечно у каждого свой подход.
    Это не классический Мартингейл))) Это - Илано-мартин. Классический Мартингейл предполагает закрытие ордеров ( например, по Стоплоссу ) и открытие последующих с увеличенной лотностью ( например, с коеффициентом 2, по классике ). Это как раз заложено в программе, поэтому все можно сделать несколькими кликами.

    Перетаскиваете блоки на схему, в таблице задаете нужные вам параметры - и все. Жмете кнопку Generate и получаете код советника.

    Нажмите на изображение для увеличения
Название: 2020-04-16 22_52_17-Etasoft Forex Generator 5 - _.png
Просмотров: 11
Размер:	36.0 КБ
ID:	3630164

    О блоке "Мартингейл":

    "Opens long position (buy) based on parameters set via properties sheet. Prints error in the log if fails. Use Order Id property to identify each open order and manage them via management blocks. Use Initial Lots parameter to setup initial lot size. Martingale management allows you to double down on loss or profit. Use fractions if you want to reduce Lots. Semi-Martingale management increases or reduces Lots depending on last order result. If last order was (non-)profitable you can change Lots for new order. If you want to reduce Lots use negative values in Lots Change parameters. Use positive values to increase Lots."

    "Открывает длинную позицию (покупка) на основании параметров, заданных в окне свойств. Печатает ошибку в журнале, если происходит сбой. Используйте свойство Order Id, чтобы идентифицировать каждый открытый ордер и управлять им через блоки управления. Используйте параметр Initial Lots для настройки размера начального лота. Мартингейл менеджмент позволяет удвоить убыток или прибыль. Используйте дроби, если хотите уменьшить лоты. Полу-Мартингейл менеджмент увеличивает или уменьшает лоты в зависимости от результата последнего заказа. Если последний ордер был (не) прибыльным, вы можете поменять лоты на новый ордер. Если вы хотите уменьшить Lots, используйте отрицательные значения в параметрах Lots Change. Используйте положительные значения для увеличения лотов."


  15. post_thanks Получено лайков: 3

    Незарегистрированный (3 пользователя)

  16. линк#333
    Знающий
    В раздумьях
     
    ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь Аватар для ILLANER
    Регистрация:
    02.09.2016
    Пол:
    Мужчина
    Сообщений:
    3,035
    Накопленные выплаты (Подробнее):
    92596 RUB
    Поставил лайков:
    909
    Получено лайков:   2,890
    в 1,556 сообщениях
    95%
    ПодписатьсяПодписаться
    Подписано 0
    Всем привет. Меня заинтересовал 1 вопрос. Я знаю что это возможно и что такого рода эксперты существуют, но мне было бы интересно создать это самому. Я говорю о способности эксперта читать файлы из любого места компьютера, а не только из каталога родного терминала. Возможно ли реализовать это только средствами МКЛ-4 ( в чем я лично сомневаюсь ), или требуется нечто большее, типа ООП или С+ ?


  17. линк#334
    Свой человек
    Все пучком
     
    IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация IgorM хорошая репутация Аватар для IgorM
    Регистрация:
    09.05.2011
    Пол:
    Мужчина
    Сообщений:
    810
    Накопленные выплаты (Подробнее):
    27108 RUB
    Поставил лайков:
    236
    Получено лайков:   706
    в 417 сообщениях
    87%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ILLANER Посмотреть сообщение
    Возможно ли реализовать это только средствами МКЛ-4 ( в чем я лично сомневаюсь ),
    не возможно, защита от несанкционированный действий от разработчиков терминала - все файловые операции, только в пределах папок MQL

    Цитата Сообщение от ILLANER Посмотреть сообщение
    или требуется нечто большее, типа ООП или С+ ?
    ООП это парадигма программирования, т.е. по сути стиль написания проекта/программы
    С++ - да, если сделаете в виде dll

    если хотите использовать dll, то даже С++ не нужен, достаточно уметь вызывать системные функции Windows - WinAPI , вот статья от разработчиков МТ https://www.mql5.com/ru/articles/1540


  18. post_thanks Получено лайков: 2

    ILLANER (03.12.2020), Незарегистрированный (1 пользователь)

  19. линк#335
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169700 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от ILLANER Посмотреть сообщение
    Я говорю о способности эксперта читать файлы из любого места компьютера, а не только из каталога родного терминала.
    Без проблем.
    Цитата Сообщение от ILLANER Посмотреть сообщение
    Возможно ли реализовать это только средствами МКЛ-4 ( в чем я лично сомневаюсь )
    Стандартными средствами MQL - невозможно. Средствами WinApi используя только MQL - возможно.


  20. post_thanks Получено лайков: 4

    docikstorm (06.12.2020), ILLANER (02.12.2020), Незарегистрированный (2 пользователя)

  21. линк#336
    Знающий
    В раздумьях
     
    ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь Аватар для ILLANER
    Регистрация:
    02.09.2016
    Пол:
    Мужчина
    Сообщений:
    3,035
    Накопленные выплаты (Подробнее):
    92596 RUB
    Поставил лайков:
    909
    Получено лайков:   2,890
    в 1,556 сообщениях
    95%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    Средствами WinApi
    Относительно этого ,я как бы совсем не в курсе, про это есть конкретная справка, как например учебник по мкл, или покурить гугл ?


  22. линк#337
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169700 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от ILLANER Посмотреть сообщение
    Относительно этого ,я как бы совсем не в курсе, про это есть конкретная справка, как например учебник по мкл, или покурить гугл ?
    IgorM уже дал вам ссылку на хорошую статью по вашей хотелке. Только там есть один нюанс. Статья устарела. Те функции из WinApi, которые там используются являются давно устаревшими и не понимают юникодных строк. А терминал и соответственно MQL уже давно работает только в юникоде. Посему примеры оттуда тупо скопипастить не получится. Вариантов тут два...
    1. Конвертировать юникодные строки MQL в строки ANSI перед вызовом этих функций и обратно из ANSI в юникод если это будет необходимо.
    2. Использовать современные функции, которые умеют юникод и много чего еще. Но с ними надо будет слегка поболе телодвижений.


  23. post_thanks Получено лайков: 1

    ILLANER (03.12.2020)

  24. линк#338
    Знающий
    В раздумьях
     
    ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь ILLANER авторитетный пользователь Аватар для ILLANER
    Регистрация:
    02.09.2016
    Пол:
    Мужчина
    Сообщений:
    3,035
    Накопленные выплаты (Подробнее):
    92596 RUB
    Поставил лайков:
    909
    Получено лайков:   2,890
    в 1,556 сообщениях
    95%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от ir0407 Посмотреть сообщение
    IgorM уже дал вам ссылку на хорошую статью по вашей хотелке.
    Спасибо, видимо сразу я не заметил тот пост. После загрузки страница открывается на последнем посте, а выше я видимо, подниматься не стал. Спасибо всем друзья мои, буду изучать.


  25. линк#339
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169700 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от ILLANER Посмотреть сообщение
    Спасибо всем друзья мои, буду изучать.
    Есть еще либа файловых функций от Жунко, но она тоже была писана под старый MQL и не известно будет ли она работать в новом. Надо проверять...


  26. линк#340
    Кандидат форумных наук
    Меня нет
     
    SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации Аватар для SergeyDe
    Регистрация:
    30.04.2014
    Пол:
    Мужчина
    Сообщений:
    2,401
    Накопленные выплаты (Подробнее):
    31672 RUB
    Поставил лайков:
    12,287
    Получено лайков:   5,439
    в 1,581 сообщениях
    227%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от VDev Посмотреть сообщение
    Мы же не работаем на убогом Python, где все кишки наружу и скорость работы в 400 раз медленнее, чем MQL5. Когда я говорю медленнее, я имею в виду скорость на выходе убогого интерпретатора.
    Вы уж не обижайтесь, но я не удержался "это" не откомментировать..... , такой ерунды даже от джунов не слышал....


  27. post_thanks Получено лайков: 1

    Незарегистрированный (1 пользователь)

  28. линк#341
    Знающий
    Все пучком
     
    VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь Аватар для VDev
    Регистрация:
    14.07.2010
    Пол:
    Мужчина
    Сообщений:
    3,934
    Накопленные выплаты (Подробнее):
    133926 RUB
    Поставил лайков:
    975
    Получено лайков:   3,321
    в 1,960 сообщениях
    84%
    Поймано букетов:
    2
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 3
    Цитата Сообщение от SergeyDe Посмотреть сообщение
    Вы уж не обижайтесь, но я не удержался "это" не откомментировать..... , такой ерунды даже от джунов не слышал....
    Я не обижаюсь на незнаек. Как всегда, они не приводят никаких фактов, только оскорбления. Может вам на ютуб, там таких полно, еще и матом друг друга кроют. Я бы привел код своих тестов на скорость, но это бессмысленно.


  29. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

  30. линк#342
    Кандидат форумных наук
    Меня нет
     
    SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации SergeyDe наивысший уровень репутации Аватар для SergeyDe
    Регистрация:
    30.04.2014
    Пол:
    Мужчина
    Сообщений:
    2,401
    Накопленные выплаты (Подробнее):
    31672 RUB
    Поставил лайков:
    12,287
    Получено лайков:   5,439
    в 1,581 сообщениях
    227%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от VDev Посмотреть сообщение
    Я бы привел код своих тестов на скорость, но это бессмысленно.
    Цитата Сообщение от VDev Посмотреть сообщение
    Как всегда, они не приводят никаких фактов, только оскорбления.

    тут и добавить нечего.


  31. линк#343
    Знающий
    Все пучком
     
    VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь Аватар для VDev
    Регистрация:
    14.07.2010
    Пол:
    Мужчина
    Сообщений:
    3,934
    Накопленные выплаты (Подробнее):
    133926 RUB
    Поставил лайков:
    975
    Получено лайков:   3,321
    в 1,960 сообщениях
    84%
    Поймано букетов:
    2
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 3
    Давно тут ничего не писал по программированию в плане ООП, надо исправляться. Только вчера залез в терминал Инсты, потом на форум и обнаружил, что за время моего отсутствия запустили новый инструмент EURUSDweek, который обязателен к торговле, если желаете выводить прибыль с торговли бонусными средствами. Я в начале этого года выводил со счета небольшую сумму, но не попал по срокам акции, а в будущем уже коснется.

    Инструмент весьма волатильный, особенно в последние часы пятницы.

    Название: EURUSDweek.jpg
Просмотров: 76

Размер: 187.5 КБ

    Сразу говорю, я никогда не строю из себя гуру-всезнайку и по этой же причине никогда не играл в «предсказателя погоды на неделю», это я про аналитегофф с их прогнозами. Если я что-то заявляю, например, что Питон в сотни раз медленнее MQL5 на простейших алгоритмических задачах, то значит, я это не на детских форумах прочитал, а сделал тест по вычислению числа PI и прогнал его на стандартном Питоне v.38, MQL5 и на Visual C++ 2019 в режиме автоматического распараллеливания на все доступные ядра.

    Это я к тому, что инструмент EURUSDweek для меня совершенно новый, хотя уже немного на нем заработал. Но надо изучать, копить статистику и т.д. Так что честно говорю, что по нему я сам новичок.
    Теперь к теме. Года 4 тому назад я написал для себя индикаторы для МТ4 и МТ5 по определению самых важных параметров инструмента. Они написаны на коленке, на скорую руку и в процедурном стиле.
    Сейчас они устарели, не поддерживают расчеты по CFD и многое что еще. Давно есть желание сделать универсальный инструмент для MQL4/5 в одном флаконе на основе ООП, который можно было бы использовать в универсальных советниках для MQL4/5. Это возможно при соблюдении некоторых условий, мой скальпер именно такой универсальный. То есть один и тот же код без изменений компилируется под обе платформы.

    Это было вроде анонса, кому интересно, следите за темой.


  32. post_thanks Получено лайков: 3

    Незарегистрированный (3 пользователя)

  33. линк#344
    Знающий
    Все пучком
     
    VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь Аватар для VDev
    Регистрация:
    14.07.2010
    Пол:
    Мужчина
    Сообщений:
    3,934
    Накопленные выплаты (Подробнее):
    133926 RUB
    Поставил лайков:
    975
    Получено лайков:   3,321
    в 1,960 сообщениях
    84%
    Поймано букетов:
    2
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 3
    Цитата Сообщение от VDev Посмотреть сообщение
    Давно есть желание сделать универсальный инструмент для MQL4/5 в одном флаконе на основе ООП, который можно было бы использовать в универсальных советниках для MQL4/5. Это возможно при соблюдении некоторых условий, мой скальпер именно такой универсальный. То есть один и тот же код без изменений компилируется под обе платформы.

    Это было вроде анонса, кому интересно, следите за темой.
    Подумал и решил начать с проекта на MQL5, сделать его по возможности кроссплатформенным, на нем обкатать и протестировать классы, которые потом можно будет использовать в индикаторах и советниках. Еще хочется сделать отдельную торговую панель на C#, так как от всех панелек на MQL4/5, что я видел, у меня возникает рвотный позыв. Кроме того, трудозатраты по их созданию на порядок больше, чем в среде Visual Studio 2019. Сразу скажу, на MQL5 довольно давно появилась возможность непосредственно подключать 64-битные DLL на языке C#, правда, были ограничения static на методы классов, что не есть гуд.

    В любом случае, если делать панель под кросс, то МТ4 был и навсегда останется 32-битным, а MQL5 32-битные DLL C# не кушает. Да, можно извратиться через врапперы на С++ и создавать объект класса на C# динамически, но опять возникает вопрос передачи данных из C# в советник на MQL4/5. Так что, я вижу самый простой способ сделать панель отдельным приложением, никак не связанным напрямую с терминалом, а обмен данными сделать через мэппинг, memory mapping. Метод давно и хорошо отработан, не зависит от разрядности терминала и прост в использовании.

    Я пока сделал болванку, закинул ее в storage, проект доступен в редакторе МТ5 через вкладку Публичные проекты. Надо сделать на нем правый клик и выбрать Присоединиться. Далее, если вы добавите проект в свой личный storage, он будет доступен и в редакторе МТ4 для компиляции под этот терминал. Извините, что немного сумбурно, но в справке все есть для тех, кто не работал с storage (хранилищем) для МТ4/5. Удобная вещь, для наших целей удобнее, чем Github, хотя там тоже потом заведу проект. Если что не получится, пишите подробно, напишу тоже подробнее.

    Название: 1.jpg
Просмотров: 68

Размер: 102.4 КБ

    Теперь чисто по программированию. В стандартной библиотеке (далее СБ) MQL5 есть набор классов для поддержки трейдинга. Находятся они в папке с говорящим названием \MQL5\Include\Trade.
    Сейчас нас интересует только файл \MQL5\Include\Trade\SymbolInfo.mqh, в котором есть доступ ко всем свойствам торгового инструмента, или символа, другими словами.
    К сожалению, в старичке МТ4 таких классов нет. Попытка скопировать и скомпилировать этот класс под МТ4 привела к куче ожидаемых ошибок, ибо в API MT4 просто нет многих возможностей MT5. Наверное, проще всего не изобретать велосипед и просто вырезать лишнее и использовать уже готовый код, что я и сделаю на следующем шаге.

    Под МТ5 я пока просто наследовал новый класс FDSymbolInfo от CSymbolInfo из СБ. Дальше разберемся, как лучше.

    PHP код:
    #ifdef __MQL5__ #include <Trade/SymbolInfo.mqh> #endif class FDSymbolInfo : public CSymbolInfo


    И еще. Не надо рассматривать этот проект, как некий вылизанный учебный курс. Будут ошибки, переделки кода, короче, живой рабочий процесс, а не отлаженный, образцовый код из учебника.
    Постараюсь уделять проекту максимально возможное количество времени.

    Справка, как работать с Хранилищем, лежит тут — Редактор МТ5->Проекты и MQL5 Storage / Создание и работа с проектом. В МТ4 работа со stotage точно такая же.


  34. post_thanks Получено лайков: 4

    Незарегистрированный (4 пользователя)

    PAMM
  35. линк#345
    Знающий
    Все пучком
     
    VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь VDev авторитетный пользователь Аватар для VDev
    Регистрация:
    14.07.2010
    Пол:
    Мужчина
    Сообщений:
    3,934
    Накопленные выплаты (Подробнее):
    133926 RUB
    Поставил лайков:
    975
    Получено лайков:   3,321
    в 1,960 сообщениях
    84%
    Поймано букетов:
    2
    (Подробнее)
    ПодписатьсяПодписаться
    Подписано 3
    Не так быстро, как хотелось, но продолжаем.

    1. Для MQL5 класс FВSymbolInfo переименован в CFdSymbolInfo в соответствии с традициями синтаксиса языка. Он по прежнему публично наследуется от CSymbolInfo:
    PHP код:
    class CFdSymbolInfo : public CSymbolInfo


    2. В CSymbolInfo почти все поля заполняются в методе Refresh(void) и потом значения параметров просто считываются из переменных.
    PHP код:
    bool CSymbolInfo::Refresh(void) { long tmp_long=0; //......... if(!SymbolInfoInteger(m_name, SYMBOL_DIGITS, tmp_long ) ) return(false); m_digits=(int)tmp_long; //......... }


    Но значения, касающиеся маржи наверняка будут меняться в процессе торговли. Возможно, их выгоднее по быстродействию выделить в отдельные методы, например, из Refresh(void) выделить строки а-ля:
    PHP код:
    if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_INITIAL, m_margin_initial)) return(false); if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_MAINTENA NCE,m_margin_maintenance)) return(false); if(!SymbolInfoDouble(m_name,SYMBOL_MARGIN_HEDGED,m _margin_hedged)) return(false); if(!SymbolInfoInteger(m_name,SYMBOL_MARGIN_HEDGED_ USE_LEG,tmp_long)) return(false);

    и сделать отдельные методы CFdSymbolInfo. Тут надо не гадать, а взять и написать тест, сколько Refresh занимает времени, что я и сделаю. Вот вам и преимущества простого наследования — не трогаем базовый класс библиотеки, а дополняем нужным наследника.

    Базовые классы библиотек в папке \MQL5\Include\.. вообще запрещено модифицировать, так как при первом обновлении терминала ваши труды превратятся в тыкву )).

    3. Будет полезно дополнить функции расчета для всего, где задействовано перечисление ENUM_SYMBOL_CALC_MODE. Смотрим справочку и видим полезные формулы:
    Для получения информации о способе вычисления величины залоговых средств по инструменту (размера маржинальных требований) предназначено перечисление ENUM_SYMBOL_CALC_MODE.

    SYMBOL_CALC_MODE_FOREX
    Forex mode – расчет прибыли и маржи для Форекс
    Margin: Lots * Contract_Size / Leverage * Margin_Rate
    Profit: (close_price - open_price) * Contract_Size*Lots

    B таких формул там довольно много, тоже надо внимательно разобраться.
    --------------------------------------------------------------------------------------------------

    4. Для MQL4 я тупо скопировал содержимое класса CSymbolInfo в CFdSymbolInfo, закомментировав те поля и методы, которых нет в API MT4 (API MT5 гораздо богаче и вкуснее!). Наверняка еще что-то придется дополнить, пока компилируется под МТ4 и слава богу, с пивком потянет!

    PHP код:
    // Code for MQL4 #ifdef __MQL4__ class CFdSymbolInfo : public CObject { protected: //......... int m_order_mode; // symbol valid orders ENUM_SYMBOL_TRADE_EXECUTION m_trade_execution; // symbol trade execution //ENUM_SYMBOL_CALC_MODE m_trade_calcmode; // symbol trade calcmode ENUM_SYMBOL_TRADE_MODE m_trade_mode; // symbol trade mode //ENUM_SYMBOL_SWAP_MODE m_swap_mode; // symbol swap mode


    5. Добавил класс СPivotLine, в файле "Include\PivotLine.mqh" и заголовочный файл "Include\InpVars.mqh", где будут находиться входные переменные советника. Люблю разносить сущности по отдельным файлам, а не струячить все огромной портянкой, как делают проггеры-извращенцы. В СPivotLine будем работать с линиями поддержки-сопротивления, как с автоопределением, так и с ручной коррекцией и установкой. Как показывает мой опыт, пока человечество (или я, как мелкая часть человечества ) не придумало полноценный ИИ, полезно иметь возможность выставить такие линии вручную, на основании опыта и интуиции трейдера.

    6. Ближайшие планы:
    * доработать все вышеописанное
    * соорудить зачатки внешней торговой панели на C#
    * Сделать класс выработки торговых сигналов на основе канала Hodrick-Preskott. Для начала просто перенесу код канала, как он есть, в класс. Сейчас разрабатываю свои каналы, если выгорит, будет круче, чем HP. Если нет, будем думать дальше.

    Замечание по работе с мультиплатформенными программами и использовании storage: Нельзя одновременно редактировать проект с МТ4 и МТ5, при попытке сохранения изменений в storage будет выдана ошибка! Принцип простой — изменили что-то в редакторе МТ5, правый клик по папке проекта, «Отправить изменения в хранилище». Если надо работать в МТ4, правый клик, «Получить изменения из хранилища», изменили что-то, снова отправить, и так работать попеременно.

    Так как в выходные storage может сбоить, приаттачу то, что есть, в конце статьи. Постараюсь чаще появляться на радарах, хороших выходных!

    Проект — FDPanel-MT5.zip


  36. post_thanks Получено лайков: 4

    Leschich (30.01.2021), Незарегистрированный (3 пользователя)


Страница 17 из 17
Первая ... 7 16 Последняя

Подписанные на тему (12)

Похожие темы

  1. MQL4 для начинающих
    от Nick'Otin в разделе MQL-программирование, АТС
    Replies: 2452
    Последнее сообщение: 24.12.2020, 15:41
  2. Программирование MQL4/MQL5, для начинающих, в вопросах и ответах.
    от Aleksandr Bereznyak в разделе MQL-программирование, АТС
    Replies: 55
    Последнее сообщение: 01.05.2019, 10:13
  3. Баги и ошибки в MQL4 и MQL5
    от Mihey85 в разделе MQL-программирование, АТС
    Replies: 2
    Последнее сообщение: 06.03.2016, 18:25
  4. Бесплатный курс для начинающих трейдеров
    от bogo в разделе Доска объявлений
    Replies: 31
    Последнее сообщение: 09.08.2013, 16:01
  5. mql4->mql5. ищу программиста
    от artemserebryakov в разделе Доска объявлений
    Replies: 0
    Последнее сообщение: 28.07.2011, 22:24