Вопросы по вебинару "Эффективное программирование советников в MQL5"
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 21

Тема: Вопросы по вебинару "Эффективное программирование советников в MQL5"

  1. #1
    Денис Кириченко
    Guest

    Lightbulb Вопросы по вебинару "Эффективное программирование советников в MQL5"

    В этой ветке предлагаю обсуждать все вопросы и материалы по вебинару, который я читаю в онлайне с 13 января 2014 г.

    Вы не можете благодарить!

  2. #2
    Денис Кириченко
    Guest

    Лекция 2

    На Лекции 2 речь шла об инкапсуляции.

    Ссылки на дополнительный материал прилагаю.
    Статья "ООП в MQL5 на примерах: обработка кодов ошибок и предупреждений" : _http://www.mql5.com/ru/articles/70
    Статья "Обработчик события "новый бар": _http://www.mql5.com/ru/articles/159

    ==================--- Файл CTrade.mqh ---==================

    Определение торгового класса


    PHP код:
    //+------------------------------------------------------------------+
    //|                                                       CTrade.mqh |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    class CTrade
      
    {
       
    //==================Члены-данные==================//  

    protected:
       
    MqlTradeRequest   m_request;            // cтруктура торгового запроса
       
    MqlTradeResult    m_result;             // cтруктура результата торгового запроса
       
    MqlTradeCheckResult m_check_result;     // структура результатов проверки торгового запроса

       //---
       //==================Члены-функции==================//  
    public:
       
    void CTrade(void){};        // конструктор
       
    void ~CTrade(void){};       // деструктор
       //--- Get-методы 
       
    void              GetRequest(MqlTradeRequest &_request) const;
       
    void              GetResult(MqlTradeResult &_result) const;
       
    void              GetCheckResult(MqlTradeCheckResult &_check_result) const;
       
    //--- Set-методы 
       
    void              SetRequest(MqlTradeRequest &_request);
       
    //--- Торговые методы   
       
    bool              CheckOrder(const MqlTradeRequest &_request,MqlTradeCheckResult &_check_result);
       
    bool              SendOrder(const MqlTradeRequest &_request,MqlTradeResult &_result);
      };
    //+------------------------------------------------------------------+
    //|             Get-метод для cтруктуры торгового запроса            |
    //+------------------------------------------------------------------+
    void CTrade::GetRequest(MqlTradeRequest &_request) const
      {
       
    _request.action=this.m_request.action;             // тип выполняемого действия
       
    _request.magic=this.m_request.magic;               // магик   
       
    _request.order=this.m_request.order;               // тикет ордера
       
    _request.symbol=this.m_request.symbol;             // имя торгового инструмента
       
    _request.volume=this.m_request.volume;             // запрашиваемый объем сделки в лотах
       
    _request.price=this.m_request.price;               // цена
       
    _request.stoplimit=this.m_request.stoplimit;       // уровень StopLimit ордера
       
    _request.sl=this.m_request.sl;                     // уровень Stop Loss ордера
       
    _request.tp=this.m_request.tp;                     // уровень Take Profit ордера
       
    _request.deviation=this.m_request.deviation;       // максимально приемлемое отклонение от запрашиваемой цены
       
    _request.type=this.m_request.type;                 // тип ордера
       
    _request.type_filling=this.m_request.type_filling// тип ордера по исполнению
       
    _request.type_time=this.m_request.type_time;       // тип ордера по времени действия
       
    _request.expiration=this.m_request.expiration;     // срок истечения ордера (для ордеров типа ORDER_TIME_SPECIFIED)          
       
    _request.comment=this.m_request.comment;           // комментарий к ордеру
      
    }
    //+------------------------------------------------------------------+
    //|  Get-метод для cтруктуры результатов проверки торгового запроса  |
    //+------------------------------------------------------------------+
    void CTrade::GetCheckResult(MqlTradeCheckResult &_check_result) const
      {
       
    _check_result.retcode=this.m_check_result.retcode// код ответа    
       
    _check_result.balance=this.m_check_result.balance// баланс после совершения сделки
       
    _check_result.equity=this.m_check_result.equity;   // эквити после совершения сделки
       
    _check_result.profit=this.m_check_result.profit;   // плавающая прибыль
       
    _check_result.margin=this.m_check_result.margin;   // маржевые требования
       
    _check_result.margin_free=this.m_check_result.margin_free;  // свободная маржа
       
    _check_result.margin_level=this.m_check_result.margin_level;// уровень маржи
       
    _check_result.comment=this.m_check_result.comment;          // комментарий к коду ответа (описание ошибки)  
      
    }
    //+------------------------------------------------------------------+
    //|       Get-метод для cтруктуры результата торгового запроса       |
    //+------------------------------------------------------------------+
    void CTrade::GetResult(MqlTradeResult &_result) const
      {
       
    _result.retcode=this.m_result.retcode;      // код результата операции
       
    _result.deal=this.m_result.deal;            // тикет сделки, если она совершена
       
    _result.order=this.m_result.order;          // тикет ордера, если он выставлен
       
    _result.volume=this.m_result.volume;        // объем сделки, подтверждённый брокером
       
    _result.price=this.m_result.price;          // цена в сделке, подтверждённая брокером
       
    _result.bid=this.m_result.bid;              // текущая рыночная цена предложения (цены реквота)
       
    _result.ask=this.m_result.ask;              // текущая рыночная цена спроса (цены реквота)
       
    _result.comment=this.m_result.comment;      // комментарий брокера к операции (по умолчанию заполняется расшифровкой)
       
    _result.request_id=this.m_result.request_id;// идентификатор запроса, устанавливается терминалом при отправке 
      
    }
    //+------------------------------------------------------------------+
    //|             Set-метод для cтруктуры торгового запроса            |
    //+------------------------------------------------------------------+
    void CTrade::SetRequest(MqlTradeRequest &_request)
      {
       
    this.m_request.action=_request.action;             // тип выполняемого действия
       
    this.m_request.magic=_request.magic;               // магик   
       
    this.m_request.order=_request.order;               // тикет ордера
       
    this.m_request.symbol=_request.symbol;             // имя торгового инструмента
       
    this.m_request.volume=_request.volume;             // запрашиваемый объем сделки в лотах
       
    this.m_request.price=_request.price;               // цена
       
    this.m_request.stoplimit=_request.stoplimit;       // уровень StopLimit ордера
       
    this.m_request.sl=_request.sl;                     // уровень Stop Loss ордера
       
    this.m_request.tp=_request.tp;                     // уровень Take Profit ордера
       
    this.m_request.deviation=_request.deviation;       // максимально приемлемое отклонение от запрашиваемой цены
       
    this.m_request.type=_request.type;                 // тип ордера
       
    this.m_request.type_filling=_request.type_filling// тип ордера по исполнению
       
    this.m_request.type_time=_request.type_time;       // тип ордера по времени действия
       
    this.m_request.expiration=_request.expiration;     // срок истечения ордера (для ордеров типа ORDER_TIME_SPECIFIED)          
       
    this.m_request.comment=_request.comment;           // комментарий к ордеру
      
    }
    //+------------------------------------------------------------------+
    //|                  Совершение торговых операций                    |
    //+------------------------------------------------------------------+
    bool CTrade::SendOrder(const MqlTradeRequest &_request,MqlTradeResult &_result)
      {
       
    bool IsOrderSent=::OrderSend(_request,_result);
       return 
    IsOrderSent;
      }
    //+------------------------------------------------------------------+
    //|                 Проверка торгового запроса                       |
    //+------------------------------------------------------------------+
    bool CTrade::CheckOrder(const MqlTradeRequest &_request,MqlTradeCheckResult &_check_result)
      {
       
    bool IsOrderChecked=::OrderCheck(_request,_check_result);
       return 
    IsOrderChecked;

      }
    //+------------------------------------------------------------------+ 
    [свернуть]


    ==================--- Файл test_CTrade.mq5 ---==================

    Пример использования торгового класса


    PHP код:
    //+------------------------------------------------------------------+
    //|                                                  test_CTrade.mq5 |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"

    #include "CTrade.mqh"
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       
    //--- объявление переменных и объектов   
       
    CTrade myTrade;
       
    MqlTradeRequest Trade_reqst={0};
       
    MqlTradeResult Trade_reslt={0};
       
    //--- 1. Создать запрос
       
    Trade_reqst.action=TRADE_ACTION_DEAL;       // Тип: немедленное совершение сделки
       
    Trade_reqst.symbol=_Symbol;                 // Инструмент: текущий
       
    Trade_reqst.price=SymbolInfoDouble(Trade_reqst.symbol,SYMBOL_BID); // цена
       
    Trade_reqst.volume=0.1;                     // Объём: 0.1 лота
       
    Trade_reqst.deviation=10;                   // отклонение в пп   
       
    Trade_reqst.type=ORDER_TYPE_SELL;           // Тип ордера: на продажу
       
    Trade_reqst.type_filling=ORDER_FILLING_FOK// Политика исполнения 
    //--- 2. Отправить запрос
       
    bool IsDone=myTrade.SendOrder(Trade_reqst,Trade_reslt);
      }
    //+------------------------------------------------------------------+ 
    [свернуть]

    Вы не можете благодарить!

  3. #3
    Денис Кириченко
    Guest

    Лекция 3

    На Лекции 3 речь шла о наследовании.

    Ссылки на дополнительный материал прилагаю.
    Документация : _http://www.mql5.com/ru/docs/basis/oop/inheritance
    Статья "Написание советника в MQL5 с использованием объектно-ориентированного подхода": _http://www.mql5.com/ru/articles/116

    ==================--- Файл Inheritance.mqh ---==================

    Определение класса-предка и класса-потомка


    PHP код:
    //+------------------------------------------------------------------+
    //|                                                  Inheritance.mqh |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //|                       Класс CiClassA                             |
    //+------------------------------------------------------------------+
    class CiClassA
      
    {
       
    // спецификатор доступа  public (публичный доступ)  
    public:
       
    int               m_int_pub_value;
       
    short             m_sh_pub_value;
       
    string            m_str_pub_value;

       
    // спецификатор доступа  protected (защищённый доступ)
    protected:
       
    int               m_int_pro_value;
       
    short             m_sh_pro_value;
       
    string            m_str_pro_value;

       
    // спецификатор доступа  private (частный доступ)
    private:
       
    int               m_int_priv_value;
       
    short             m_sh_priv_value;
       
    string            m_str_priv_value;

    public:
       
    void              CiClassA(void);     // конструктор
       
    void             ~CiClassA(void){};     // деструктор
       //---
       
    void              pubMethod(void);  // публичный метод

    protected:
       
    void              proMethod(void);  // защищённый метод

    private:
       
    void              privMethod(void); // частный метод

      
    };
    //+------------------------------------------------------------------+
    //|                        Конструктор                               |
    //+------------------------------------------------------------------+
    void CiClassA::CiClassA(void)
      {
       
    this.m_int_pub_value=1;
       
    this.m_sh_pub_value=11;
       
    this.m_str_pub_value="public access";
    //---
       
    this.m_int_pro_value=2;
       
    this.m_sh_pro_value=22;
       
    this.m_str_pro_value="protected access";
    //---
       
    this.m_int_priv_value=3;
       
    this.m_sh_priv_value=33;
       
    this.m_str_priv_value="private access";
      }
    //+------------------------------------------------------------------+
    //|                     Публичный метод                              |
    //+------------------------------------------------------------------+
    void CiClassA::pubMethod(void)
      {
       Print(
    "Вызван публичный метод.");
      }
    //+------------------------------------------------------------------+
    //|                      Защищённый метод                            |
    //+------------------------------------------------------------------+
    void CiClassA::proMethod(void)
      {
       Print(
    "Вызван защищённый метод.");
      }
    //+------------------------------------------------------------------+
    //|                     Приватный метод                              |
    //+------------------------------------------------------------------+
    void CiClassA::privMethod(void)
      {
       Print(
    "Вызван приватный метод.");
      }
    //+------------------------------------------------------------------+
    //|                       Класс CiClassB                             |
    //+------------------------------------------------------------------+
    class CiClassB : public CiClassA
      
    {

    public:
       
    void              CiClassB(void){};
       
    void             ~CiClassB(void){};
       
    //---
       
    void              method1(void);
      };
    //+------------------------------------------------------------------+
    //|                     Метод класса CiClassB                        |
    //+------------------------------------------------------------------+
    void CiClassB::method1(void)
      {
       Print(
    "CiClassB::method1.");
      } 
    [свернуть]


    В качестве домашнего задания попробуйте создать скрипт, где будут использоваться объекты этих двух классов.
    Также попробуйте добавить методы в класс CiClassB, которые в свою очередь вызывали бы методы из класса CiClassA (public, protected и private). Проверьте какие методы вызвать получилось, а какие - нет.

    Вы не можете благодарить!

  4. #4
    Денис Кириченко
    Guest

    Лекция 4

    На Лекции 4 речь шла о полиморфизме.

    Ссылки на дополнительный материал прилагаю.
    Документация : _http://www.mql5.com/ru/docs/basis/oop/polymorphism
    Статья "Расширение стандартной библиотеки MQL5 и повторное использование кода": _http://www.mql5.com/ru/articles/741

    ==================--- Файл CiOnTrade.mqh ---==================

    Определение торгового класса-потомка


    PHP код:
    //+------------------------------------------------------------------+
    //|                                                    CiOnTrade.mqh |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"

    #include "CTrade.mqh"
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    class CiOnTrade : public CTrade
      
    {
       
    //==================Члены-данные==================//  

       //==================Члены-функции==================//  
    public:
       
    void CiOnTrade(void){};        // конструктор
       
    void ~CiOnTrade(void){};       // деструктор
       //--- Торговые методы   
       
    virtual bool      SendOrder(const MqlTradeRequest &_request,MqlTradeResult &_result);
      };
    //+------------------------------------------------------------------+
    //|                  Совершение торговых операций                    |
    //+------------------------------------------------------------------+
    bool CiOnTrade::SendOrder(const MqlTradeRequest &_request,MqlTradeResult &_result)
      {
       
    bool IsOrderSent=false;
    //--- проверить достаточность средств 
       
    MqlTradeCheckResult check_result={0};
       if(
    this.CheckOrder(_request,check_result))
          
    IsOrderSent=::OrderSend(_request,_result);
    //---
       
    return IsOrderSent;
      }
    //+------------------------------------------------------------------+ 
    [свернуть]




    ==================--- Файл test_CiOnTrade.mq5 ---==================

    Пример использования торгового класса-потомка


    PHP код:
    //+------------------------------------------------------------------+
    //|                                               test_CiOnTrade.mq5 |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"

    #include "CiOnTrade.mqh"
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       
    CTrade *ptr_myOnTrade=new CiOnTrade;        // указатель на базовый класс CTrade

    //--- 1. Создать запрос
       
    MqlTradeRequest Trade_reqst={0};            // Инициализация структуры торгового запроса
       
    Trade_reqst.action=TRADE_ACTION_DEAL;       // Тип: немедленное совершение сделки
       
    Trade_reqst.symbol=_Symbol;                 // Инструмент: текущий
       
    Trade_reqst.volume=0.1;                     // Объём: 0.1 лота
       
    Trade_reqst.type=ORDER_TYPE_SELL;           // Тип ордера: на продажу
       
    Trade_reqst.type_filling=ORDER_FILLING_FOK// Политика исполнения 

    //--- 2. Отправить торговый приказ
       
    MqlTradeResult Trade_reslt={0};             // Инициализация структуры результата торгового запроса
       
    ptr_myOnTrade.SendOrder(Trade_reqst,Trade_reslt);

      }
    //+------------------------------------------------------------------+ 
    [свернуть]


    В материале к Лекции 2 приложил Файл CTrade.mqh. Чтобы заработала связка CTrade.mqh и CiOnTrade.mqh нужно указать в файле CTrade.mqh, что метод SendOrder() являетя виртуальным:
    PHP код:
    virtual bool      SendOrder(const MqlTradeRequest &_request,MqlTradeResult &_result); 

    Вы не можете благодарить!

  5. #5
    Денис Кириченко
    Guest

    Лекция 5

    На Лекции 5 речь шла о видах взаимодействия классов.

    Ссылки на дополнительный материал прилагаю.
    Статья "Разработка эксперта средствами UML": _http://www.mql5.com/ru/articles/304
    Статья "Приобщаемся к объектно-ориентированному программированию в MQL5": _http://www.mql5.com/ru/articles/703

    ==================--- Файл Class_interaction.mqh ---==================

    Пример связей между классами


    PHP код:
    //+------------------------------------------------------------------+
    //|                                            Class_interaction.mqh |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //|                       Класс ClassA1                              |
    //+------------------------------------------------------------------+
    class ClassA1
      
    {
       
    // спецификатор доступа  public (публичный доступ)  
    public:
       
    int               m_int_pub_value;
       
    short             m_sh_pub_value;
       
    string            m_str_pub_value;

    public:
       
    void              ClassA1(void);    // конструктор
       
    void             ~ClassA1(void){};  // деструктор
       //---   
       
    int               pubMethod(void);  // метод
      
    };
    //+------------------------------------------------------------------+
    //|                        Конструктор                               |
    //+------------------------------------------------------------------+
    void ClassA1::ClassA1(void)
      {
       
    this.m_int_pub_value=1;
       
    this.m_sh_pub_value=11;
       
    this.m_str_pub_value="public access";
      }
      
    //------ 1) Наследование ---  

    //+------------------------------------------------------------------+
    //|                       Класс ClassB1                              |
    //+------------------------------------------------------------------+
    class ClassB1 : public ClassA1
      
    {
    private:
       
    long              m_long_priv_value;

    public:
       
    void              ClassB1(void){};
       
    void             ~ClassB1(void){};
      };
    //+------------------------------------------------------------------+

    //------ 2) Агрегация ---

    //+------------------------------------------------------------------+
    //|                       Класс ClassB2                              |
    //+------------------------------------------------------------------+
    class ClassB2
      
    {
    public:
       
    ClassA1          *m_ptr_A1_object// включение указателя на объект класса ClassA1

    public:
       
    void              ClassB2(void){};
       
    void             ~ClassB2(void){};
      };
    //+------------------------------------------------------------------+

    //------ 3) Использование ---  

    //+------------------------------------------------------------------+
    //|                       Класс ClassB3                              |
    //+------------------------------------------------------------------+
    class ClassB3
      
    {
    public:
       
    double            m_d_val;
       
    public:
       
    void              ClassB3(void);
       
    void             ~ClassB3(void);
       
    //---   
       
    int               Calculate(ClassA1 *ptr_obj_A); // использование объекта ClassA1
      
    };
    //+------------------------------------------------------------------+

    //------ 4) Ассоциация --- 

    class ClassC2// предварительное (форвардное) объявление класса ClassC2
    //+------------------------------------------------------------------+
    //|                       Класс ClassC1                              |
    //+------------------------------------------------------------------+
    class ClassC1
      
    {
    public:
       
    int               m_value;
       
    ClassC2          *m_ptr_val;        // указатель на один объект класса ClassC2
       //---
    public:
       
    void              ClassC1(void);    // конструктор
       
    void             ~ClassC1(void){};  // деструктор
       //---   
       
    int               pubMethod(void);  // метод
      
    };
    //+------------------------------------------------------------------+
    //|                       Класс ClassC2                              |
    //+------------------------------------------------------------------+
    class ClassC2
      
    {
    public:
       
    int               m_value;
       
    ClassC1          *m_ptr_arr[3];     // массив указателей на объекты класса ClassC1
       //---
       
    public:
       
    void              ClassC2(void);    // конструктор
       
    void             ~ClassC2(void){};  // деструктор
       //---   
       
    int               pubMethod(void);  // метод
      
    };
    //+------------------------------------------------------------------+ 
    [свернуть]



    Вебинары возобновятся на следующей неделе.

    Вы не можете благодарить!

  6. #6
    Денис Кириченко
    Guest

    Лекция 6

    На Лекции 6 речь шла о статических членах класса, шаблонах функций.

    Ссылки на документацию прилагаю:
    _http://www.mql5.com/ru/docs/basis/oop/staticmembers
    _http://www.mql5.com/ru/docs/basis/oop/templates


    ==================--- Файл Class_static_members.mqh ---==================

    Пример использования статических членов-данных


    PHP код:
    //+------------------------------------------------------------------+
    //|                                         Class_static_members.mqh |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"

    #include <Trade\OrderInfo.mqh>
    //+------------------------------------------------------------------+
    //|                      Класс CGridder                              |
    //+------------------------------------------------------------------+
    class CGridder
      
    {
    public:
       
    //--- cтатические члены
       
    static const int  m_orders_num;      // число ордеров сетки
       
    static datetime   m_date_start;      // дата выставления сетки
       
    static datetime   m_date_finish;     // дата удаления сетки
       //---  
       
    ulong             m_ord_tickets[];   // массив тикетов ордеров сетки
       
    COrderInfo        m_ord_info;        // информация об ордере 

    public:
       
    void              CGridder(void){};   // конструктор
       
    void             ~CGridder(void){};  // деструктор
       //---   
       
    bool              Set(void);         // выставление сетки ордеров
      
    };
    //+------------------------------------------------------------------+ 
    [свернуть]



    ==================---Файл test_static1.mq5 ---==================

    Пример доступа к статических членам-данным


    PHP код:
    //+------------------------------------------------------------------+
    //|                                                 test_static1.mq5 |
    //|                                           Copyright 2014, denkir |
    //|                           https://login.mql5.com/ru/users/denkir |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2014, denkir"
    #property link      "https://login.mql5.com/ru/users/denkir"
    #property version   "1.00"

    #include "Class_static_members1.mqh"

    const int CGridder::m_orders_num=5;
    datetime CGridder::m_date_start=TimeCurrent();
    datetime CGridder::m_date_finish=TimeCurrent()+PeriodSeconds(PERIOD_D1);

    CGridder myGrids[3];
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- получить значения cтатических членов
       
    int orders_num=CGridder::m_orders_num// myGrids[0].m_orders_num;
       
    datetime date_start=CGridder::m_date_start// m_orders_nummyGrids[1].m_date_start;
       
    datetime date_finish=myGrids[2].m_date_finish;
    //--- изменить значения cтатических членов
       
    orders_num+=2;
       
    // myGrids[0].m_orders_num=orders_num; // ошибка при попытке изменить константу
       
    myGrids[1].m_date_start=date_start+PeriodSeconds(PERIOD_H2);
       
    date_finish+=PeriodSeconds(PERIOD_H3);
       
    myGrids[0].m_date_finish=date_finish;
      }
    //+------------------------------------------------------------------+ 
    [свернуть]

    Вы не можете благодарить!

  7. #7
    Теоретик Аватар для Joker
    Регистрация
    25.09.2012
    Адрес
    Мировой рынок
    Сообщений
    395
    Promo (¢)
    160
    Благодарности
    Получено: 64
    Отправлено: 21
    Дмитрий, очень хотел бы научится хорошо програмировать на mql5, ещё ни разу не посещал ваши вебинары, если вопрос не в тему то не пинайте сильно.
    1)Я вижу что после каждой лекции вы выкладываете статью с портала и ссылку на справочную информацию.
    Пишите ли вы советники и индикатры прямо на лекциях, отличающиеся от тех что в статьях? Ну там, от малого до велико.
    Просто вот сам по этим статьям учусь и довольно многое в голову ложится не системно и не постепенно, так что потом вроде знаешь, а забываешь когда применять.
    2) Не планируете ли выложить вебинары на какой нить видеоканал, торрент или этот форум, чтоб новые ученики могли, так сказать, догнать программу, а не ждать нового курса??
    Заранее спасибо за ответ

    Вы не можете благодарить!

  8. #8
    Денис Кириченко
    Guest
    Цитата Сообщение от Joker Посмотреть сообщение
    Дмитрий, очень хотел бы научится хорошо програмировать на mql5, ещё ни разу не посещал ваши вебинары, если вопрос не в тему то не пинайте сильно.
    1)Я вижу что после каждой лекции вы выкладываете статью с портала и ссылку на справочную информацию.
    Пишите ли вы советники и индикатры прямо на лекциях, отличающиеся от тех что в статьях? Ну там, от малого до велико.
    Просто вот сам по этим статьям учусь и довольно многое в голову ложится не системно и не постепенно, так что потом вроде знаешь, а забываешь когда применять.
    2) Не планируете ли выложить вебинары на какой нить видеоканал, торрент или этот форум, чтоб новые ученики могли, так сказать, догнать программу, а не ждать нового курса??
    Заранее спасибо за ответ
    Joker, спасибо за вопросы.
    И пускай я не Дмитрий, но скорее всего они адресованы мне :-)

    Коротко отвечу:
    1) Да, пишем. Статейный материал подбирается наиболее удачный.
    2) Вопрос с записью лекций наверное не ко мне.

    Ещё читаю вебинар по базовому курсу MQL5-программирования. Рекомендую начать с него, если Вы новичок в программировании...

    Вы не можете благодарить!

  9. #9
    Теоретик Аватар для Joker
    Регистрация
    25.09.2012
    Адрес
    Мировой рынок
    Сообщений
    395
    Promo (¢)
    160
    Благодарности
    Получено: 64
    Отправлено: 21
    Цитата Сообщение от Денис Кириченко Посмотреть сообщение
    Joker, спасибо за вопросы.
    И пускай я не Дмитрий, но скорее всего они адресованы мне :-)

    Коротко отвечу:
    1) Да, пишем. Статейный материал подбирается наиболее удачный.
    2) Вопрос с записью лекций наверное не ко мне.

    Ещё читаю вебинар по базовому курсу MQL5-программирования. Рекомендую начать с него, если Вы новичок в программировании...
    Прошу прощения, за то что перепутал имя.
    Даже оправдания не могу найти, почему.

    1) Круто
    и сразу 2) Очень хотелось бы посмотреть эти вебинары, но во первых уже многое пропустил, а во вторых не всегда под них можно подстроить своё расписание(
    Почему же вопрос записи не к вам? Вы же их ведёте?

    Вы не можете благодарить!

  10. #10
    Новичок
    Регистрация
    26.06.2013
    Сообщений
    20
    Promo (¢)
    230
    Благодарности
    Получено: 4
    Отправлено: 12
    1. По мне, так ни один вебинар не сможет научить програмировать, а только ОБСУЖДАТЬ нюансы и сосредоточить внимание на них. Лучше читать документацию, книги и стати. Сойдут как книги по С++, так и стати на сайте разработчика. Всего было 8+8 вебинаров, по 45-55 минут. Это порядка 12-15 часов. За это время читая можно освоить куда больше информации.
    2. Вести вебинар - и вести записи, вещи разные. Я например, не веду вебинар, но запись у меня есть, я его вел для себя. НО!
    Так как это авторское право Дениса, я его могу предоставить ТОЛЬКО с его согласия.

    Вы не можете благодарить!

Страница 1 из 3 1 2 3 ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •