Logo

Вход

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

    Подскажите, пожалуйста, с переменными!

    Подскажите, пожалуйста, с переменными!

    Примерная сокращенная структура советника:

    MQL код:
    extern double extПеременная = 5;

    int ontickt()
    {
    bool NoBuy;

    //анализ
    if (условие1) NoBuy=True;

    if (Условие2) ) CheckForOpen();
    else CheckForClose();

    }

    void CheckForOpen()
    {
    }

    void CheckForClose()
    {
    if (Условие3) Close();
    }

    void Close()
    {
    double Переменная1;
    if (NoBuy==True) Переменная1=extПеременная;
    }


    Вопрос в том, что не передается значение NoBuy в функцию Close(), выдает ошибку.
    Последний раз редактировалось Gold; 01.06.2017, 01:32.
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от kdp1976 Посмотреть сообщение
    Вопрос в том, что не передается значение NoBuy в функцию Close(), выдает ошибку.
    Естественно... Ваша NoBuy объявлена в теле OnTick() и соответственно будет видна только в теле этой функции. А чтоб ее было видно в других функциях нужно либо передавать ее в качестве параметра в другие функции, либо объявить на глобальном уровне.

    Читаем тут.
     
    Последний раз редактировалось ir0407; 27.05.2017, 12:39.

    Комментарий

    • #3 Свернуть

      Сообщение от ir0407 Посмотреть сообщение
      Естественно... Ваша NoBuy объявлена в теле OnTick() и соответственно будет видна только в теле этой функции. А чтоб ее было видно в других функциях нужно либо передавать ее в качестве параметра в другие функции, либо объявить на глобальном уровне.
      Переменная NoBuy рассчитывается с каждым тиком в функции ontick(), а если ее объявить на глобальном уровне, то значение для других функций будет некорректным.
      Лучший вариант - это передавать, чтобы была видна во всех функциях. Каким образом можно это сделать?

      Комментарий

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

        Сообщение от kdp1976 Посмотреть сообщение
        Переменная NoBuy рассчитывается с каждым тиком в функции ontick(), а если ее объявить на глобальном уровне, то значение для других функций будет некорректным.
        Почему?

        Сообщение от kdp1976 Посмотреть сообщение
        Лучший вариант - это передавать, чтобы была видна во всех функциях. Каким образом можно это сделать?
        Читаем тут.
         

        Комментарий

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

        working...
        X