Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    Нужна помощь по коду MQL4

    Скажу сразу, изучать MQL начал недавно, поэтому сильно не ругайте меня)))
    Повторяюсь, только учусь и индикатор пишу как домашнее задание, не надо давать ссылки где можно скачать что то подобное!
    MQL код:


    extern int Dig = 4;
    extern color cvet_plus = clrGreen;
    extern color cvet_minus = clrRed;
    extern color cvet_null = clrDarkGray;
    string Obj_perc ="Цена и изменение %";

    void OnStart() {
    double Price_Cls_Day = iClose(NULL,PERIOD_D1,1);
    double Persent = (Bid - Price_Cls_Day)/Price_Cls_Day*100;
    if(NormalizeDouble(Persent,Dig) > 0.00) {
    color textcolor = cvet_plus;
    string text = Bid + " +" + DoubleToStr( Persent, Dig)+"%";
    }
    if(NormalizeDouble(Persent,Dig) < 0.00) {
    color textcolor = cvet_minus;
    string text = Bid + " -" + DoubleToStr( Persent, Dig)+"%";
    }
    if(NormalizeDouble(Persent,Dig) == 0.00) {
    color textcolor = cvet_null;
    string text = Bid + " " + DoubleToStr( Persent, Dig)+"%";
    }
    if(ObjectFind(Obj_perc)==-1) {
    ObjectCreate(Obj_perc,OBJ_LABEL,0,0,0);
    ObjectSet (Obj_perc,OBJPROP_CORNER, 0);
    ObjectSet (Obj_perc,OBJPROP_XDISTANCE,15);
    ObjectSet (Obj_perc,OBJPROP_YDISTANCE,20);
    }
    ObjectSetText(Obj_perc,text,8,"MS Sans Serif",textcolor); //ошибка в этой строке
    и т.д.


    индикатор должен показывать текущую цену и изменение цены по предыдущему дню в процентах при этом в зависимости от положительного или отрицательного значения меняется цвет!
    Ошибку выдает во время компиляции в строке ObjectSetText с таким сообщением 'text' - undeclared identifier и 'textcvet' - undeclared identifier

    уже как только не пробовал, перекопал сайт docs.mql4.com, не пойму((((( помогите плизззз!!
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от JonBrasers Посмотреть сообщение
    Ошибку выдает во время компиляции в строке ObjectSetText с таким сообщением 'text' - undeclared identifier и 'textcvet' - undeclared identifier
    Там не только ошибки, там еще и варнингов туча... Они вас не смущают? Я понимаю, что там копипастинг, но всеже думать, что делаете, нужно. А код должен быть примерно таким:
    MQL код:

    extern int Dig = 4;
    extern color cvet_plus = clrGreen;
    extern color cvet_minus = clrRed;
    extern color cvet_null = clrDarkGray;
    string Obj_perc ="Цена и изменение %";

    void OnStart()
    {
    double Price_Cls_Day = iClose(NULL,PERIOD_D1,1);
    double Persent = (Bid - Price_Cls_Day)/Price_Cls_Day*100;
    color textcolor = clrNONE;
    string text;
    if(NormalizeDouble(Persent,Dig) > 0.00) {
    textcolor = cvet_plus;
    text = StringConcatenate(DoubleToString(Bid, Digits), " +", DoubleToStr( Persent, Dig), "%");
    }
    if(NormalizeDouble(Persent,Dig) < 0.00) {
    textcolor = cvet_minus;
    text = StringConcatenate(DoubleToString(Bid, Digits), " -", DoubleToStr( Persent, Dig), "%");
    }
    if(NormalizeDouble(Persent,Dig) == 0.00) {
    textcolor = cvet_null;
    text = StringConcatenate(DoubleToString(Bid, Digits), " ", DoubleToStr( Persent, Dig), "%");
    }
    if(ObjectFind(Obj_perc)==-1) {
    ObjectCreate(Obj_perc,OBJ_LABEL,0,0,0);
    ObjectSet (Obj_perc,OBJPROP_CORNER, 0);
    ObjectSet (Obj_perc,OBJPROP_XDISTANCE,15);
    ObjectSet (Obj_perc,OBJPROP_YDISTANCE,20);
    }
    ObjectSetText(Obj_perc,text,8,"MS Sans Serif",textcolor);
    }

    Заодно и варнинги поубирал.

    Сообщение от JonBrasers Посмотреть сообщение
    уже как только не пробовал, перекопал сайт docs.mql4.com, не пойму(((((
    А тут читать не пробовали?
     

    Комментарий

    • #3 Свернуть

      Сообщение от ir0407 Посмотреть сообщение
      Там не только ошибки
      Спасибо, я подозревал что ошибка в видимости переменных, но не понял как правильно это исправить, немного знаю PHP, но тут видимость по другому.

      Сообщение от ir0407 Посмотреть сообщение
      Заодно и варнинги поубирал.
      чет я не пойму, показывает что варнинги остались, не пойму что не так, скопировал в точности, перепроверил, точно так как вы написали????
      варнинги тут:
      MQL код:

      double Price_Cls_Day = iClose(NULL,PERIOD_D1,1);
      color textcolor = clrNONE;
      string text;

      не пойму что не так, подскажите?

      Сообщение от ir0407 Посмотреть сообщение
      А тут читать не пробовали?
      читал, седня только начал пробовать писать))) не подскажите редактор с подсветкой и т.п.???
       

      Комментарий

      • #4 Свернуть

        Сообщение от JonBrasers Посмотреть сообщение
        чет я не пойму, показывает что варнинги остались
        Не могу знать... У меня, относительно выложенного кода, варнингов нет. А по оставшемуся у вас - понятия не имею.

        Сообщение от JonBrasers Посмотреть сообщение
        не подскажите редактор с подсветкой и т.п.???
        А чем не устраивает встроенный в терминал редактор "Метаедитор"?
           

        Комментарий

        • #5 Свернуть

          Сообщение от ir0407 Посмотреть сообщение
          Не могу знать... У меня, относительно выложенного кода, варнингов нет. А по оставшемуся у вас - понятия не имею.
          Спасибо, исправил все кроме одного который пищит OnStart function defined in the non-script program Indicatorgfdd.mq4 18 6
          вот мой полный код
          MQL код:

          //+------------------------------------------------------------------+
          //| Indicators.mq4 |
          //| JonBrasers Copyright 2017 |
          //| [url]https://vk.com/jonbrasers[/url] |
          //+------------------------------------------------------------------+
          #property copyright "JonBrasers Copyright 2017"
          #property link "jonbrasers@gmail.com"
          #property version "1.00"
          #property strict
          #property indicator_chart_window

          extern int Dig = 4; // Количество значащих цифр
          extern color cvet_plus = clrGreen; // Цвет +
          extern color cvet_minus = clrRed; // Цвет -
          extern color cvet_null = clrDarkGray; // Цвет 0
          string Obj_perc ="Цена и изменение %"; // Название объекта

          void OnStart() {
          double Price_Cls_Day = iClose(NULL,PERIOD_D1,1); // Цена закрытия предыдущего дня
          double Persent = (Bid - Price_Cls_Day)/Price_Cls_Day*100; // % изменения цены
          color textcolor = clrNONE;
          string text;
          if(NormalizeDouble(Persent,Dig) > 0.00) { // Выбор цвета зависит от знака
          textcolor = cvet_plus; // Цвет для +
          text = StringConcatenate(DoubleToString(Bid, Digits), " +", DoubleToStr( Persent, Dig), "%");
          }
          if(NormalizeDouble(Persent,Dig) < 0.00) { // Выбор цвета зависит от знака
          textcolor = cvet_minus; // Цвет для -
          text = StringConcatenate(DoubleToString(Bid, Digits), " -", DoubleToStr( Persent, Dig), "%");
          }
          if(NormalizeDouble(Persent,Dig) == 0.00) { // Выбор цвета зависит от знака
          textcolor = cvet_null; // Цвет для 0
          text = StringConcatenate(DoubleToString(Bid, Digits), " ", DoubleToStr( Persent, Dig), "%");
          }
          if(ObjectFind(Obj_perc)==-1) { // Если объекта нет..
          ObjectCreate(Obj_perc,OBJ_LABEL,0,0,0); // Создаём новый объект
          ObjectSet (Obj_perc,OBJPROP_CORNER, 0); // Угол привязки
          ObjectSet (Obj_perc,OBJPROP_XDISTANCE,15); // Координата Х
          ObjectSet (Obj_perc,OBJPROP_YDISTANCE,80); // Координата Y
          }
          ObjectSetText(Obj_perc,text,8,"MS Sans Serif",textcolor); // Текстовое описание объекта

          return;
          }

          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[]) {
          return(rates_total);
          }


          Сообщение от ir0407 Посмотреть сообщение
          А чем не устраивает встроенный в терминал редактор "Метаедитор"?
          Нормальный редактор, но было бы удобнее если была бы подсветка, авто подставка функций и т.д. подсветка ошибок в сразу.
          пользовался phpDesigner есть что то подобное для mql, если вы знакомы с phpDesigner??? буду благодарен и спасибо за советы и подсказки!)
             

          Комментарий

          • #6 Свернуть

            Сообщение от JonBrasers Посмотреть сообщение
            Спасибо, исправил все кроме одного который пищит OnStart function defined in the non-script program Indicatorgfdd.mq4 18 6
            Вы уж определитесь, что это у вас... Скрипт или все таки индикатор. В индикаторах функция OnStart() запрещена. И наоборот, в скриптах не может использоваться функция OnCalculate().
            Читаем тут.

            Для индикатора весь код из функции OnStart() нужно перенести в тело функции OnCalculate(), а саму функцию OnStart() удалить.

            Сообщение от JonBrasers Посмотреть сообщение
            Нормальный редактор, но было бы удобнее если была бы подсветка, авто подставка функций и т.д. подсветка ошибок в сразу.
            пользовался phpDesigner есть что то подобное для mql, если вы знакомы с phpDesigner???
            В метаедиторе это все есть. Правда до phpDesigner-а ему далеко, но и MQL по сравнению с PHP как бы и не язык вовсе. А о возможностях метаедитора лучше чем в справке по этому редактору вряд ли кто расскажет. Да и сторонних редакторов, которые были бы знакомы с особенностями MQL просто нет. Как вариант можете попробовать Notepad++, но там нужно кучу настроек делать и все нюансы MQL загонять. Головняк однако.
               

            Комментарий

            • #7 Свернуть

              Сообщение от ir0407 Посмотреть сообщение
              Вы уж определитесь, что это у вас... Скрипт или все таки индикатор. В индикаторах функция OnStart() запрещена. И наоборот, в скриптах не может использоваться функция OnCalculate().
              Читаем тут.

              Для индикатора весь код из функции OnStart() нужно перенести в тело функции OnCalculate(), а саму функцию OnStart() удалить.
              Спасибо за объяснение, данный урок индикатора нашел где-то в интернете, но основанные на старом формате RateInfo, вот сам попробовал переделать под новый и заодно потренироваться)))
              Буду благодарен ссылочкам где можно найти примеры или уроки уже нового формата "Начиная с билда 600 язык программирования MQL4 полностью переработан", сам ни чего подобного найти не смог, все только старое, еще больше запутался((((

              Сообщение от ir0407 Посмотреть сообщение
              В метаедиторе это все есть. Правда до phpDesigner-а ему далеко, но и MQL по сравнению с PHP как бы и не язык вовсе. А о возможностях метаедитора лучше чем в справке по этому редактору вряд ли кто расскажет. Да и сторонних редакторов, которые были бы знакомы с особенностями MQL просто нет. Как вариант можете попробовать Notepad++, но там нужно кучу настроек делать и все нюансы MQL загонять. Головняк однако.
              Значит будем тренироваться на метаедиторе, как подучусь обязательно выложу примеры своих творений, надеюсь что-то выйдет)))
               

              Комментарий

              • #8 Свернуть

                Сообщение от JonBrasers Посмотреть сообщение
                Буду благодарен ссылочкам где можно найти примеры или уроки уже нового формата
                Тонны примеров тут. А что касается уроков по новому MQL то их просто нет. Правда по многим темам есть некоторое количество статей... Поэтому справка, справка и еще раз справка. В ней тоже примеры есть.
                   

                Комментарий

                • #9 Свернуть

                  Можете подсказать, как в этот коде подставить значения эквилити, когда эквилити меньше баланса то красный, когда больше то зеленым. Еще хлотелось вывести на экран значения максимального эквилити, процентное соотношение и количество пунктов.
                  Мониторинг

                  Комментарий

                  • #10 Свернуть

                    Notepad++ с готовыми настройками и даже встроенным компилятором, де то на форуме был. Но это такой гемор туда - сюда код кидать. Реально проще сразу к метаэдитору привыкать.

                    Комментарий

                    • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
                    • #11 Свернуть

                      Сообщение от AgGreSsiVe Посмотреть сообщение
                      Notepad++ с готовыми настройками и даже встроенным компилятором, де то на форуме был. Но это такой гемор туда - сюда код кидать. Реально проще сразу к метаэдитору привыкать.
                      Согласен. В принципе прямо в NP++ можно, как редактировать так и компилировать код MQL. Но в нем нет самого ценного - отладчика.
                       

                      Комментарий

                      Сейчас онлайн

                      working...
                      X