Форум трейдеров » Торговые роботы, советники, индикаторы » Вопросы программирования
+ Подписаться
Страница 40 из 87 ПерваяПервая ... 30383940414250 ... ПоследняяПоследняя
  1. 2,974
    Комментарии
    7
    Темы
    2995
    Репутация Pro
     
    Banned

    4 Медалей
    Цитата Сообщение от religare777 Посмотреть сообщение
    Спасибо, EQU!
    Еще возник вопрос. Поставил советник на несколько валютных пар в одном терминале. На первой - работает, на остальных показывает сообщение "Торговля запрещена или торговый поток занят". С чем это связано?
    Попробуй проверять IsTradeContextBusy() до выполнения операций..;)
    Цитата Сообщение от religare777 Посмотреть сообщение
    Спасибо, EQU!
    Еще момент - советник открывает сделки при открытии нового бара. Может быть такое, что он конфликтует сам с собой или это брокер запретил к использованию на конкурсе нескольких валютных пар?!
    Александр
    Смотрим логи.. Вместе..:smartass:
  2. 283
    Комментарии
    4
    Темы
    283
    Репутация Pro
     
    В начале пути

    2 Медалей
    Помогите, пожалуйста. Пытаюсь написать функцию, которая возращает максимум баланса, но получается, что возвращается постоянно текущий. Вот код:
    double maxacc()
    {
    double m;
    if (m<AccountBalance())
    {m=AccountBalance();}
    return (m);}

    Я так понимаю, что у m постоянно заново устанавливается значение ноль, как сделать так, чтобы, если баланс уменьшается, то m не меняла своего значения, а сохраняла предыдущее значение и сравнение проводилось между ней и текущим балансом?
  3. 4,819
    Комментарии
    10
    Темы
    4852
    Репутация Pro
    Аватар для Максимъ  
    Снеговик-флудовик

    5 Медалей
    Что значит максимум баланса? Может попробовать глобальную переменную?

    Лучше подробно объянит логику работу. :)
  4. 8,531
    Комментарии
    46
    Темы
    15162
    Репутация Pro
    Аватар для avtomat  
    Старожил

    7 Медалей
    double m=0;
    ..........
    m=maxacc(m);
    .........
    double maxacc(double m)
    {
    if (m<AccountBalance()) m=AccountBalance();
    return (m);
    }

    а так?
  5. 283
    Комментарии
    4
    Темы
    283
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от avtomat Посмотреть сообщение
    double m=0;
    ..........
    m=maxacc(m);
    .........
    double maxacc(double m)
    {
    if (m<AccountBalance()) m=AccountBalance();
    return (m);
    }

    а так?
    выдает ошибку при компиляции "expression on global scope not allowed" для m, maxacc.
  6. 283
    Комментарии
    4
    Темы
    283
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от Максимъ Посмотреть сообщение
    Что значит максимум баланса? Может попробовать глобальную переменную?

    Лучше подробно объянит логику работу. :)
    Мне нужно, чтобы в определенные моменты времени считалось отношение текущего эквити к максимуму баланса за весь период работы. Для этого мне нужно знать максимум баланса.
    Я уже придумал, как сделать по-другому, но интересно знать как можно сделать так.
    Хочу сделать так, чтобы функция ссылалась на свое предыдущее значение.
    Как это можно сделать? Каким образом через глобальные переменные?
  7. 2,974
    Комментарии
    7
    Темы
    2995
    Репутация Pro
     
    Banned

    4 Медалей
    Цитата Сообщение от goodle06 Посмотреть сообщение
    Мне нужно, чтобы в определенные моменты времени считалось отношение текущего эквити к максимуму баланса за весь период работы. Для этого мне нужно знать максимум баланса.
    Я уже придумал, как сделать по-другому, но интересно знать как можно сделать так.
    Хочу сделать так, чтобы функция ссылалась на свое предыдущее значение.
    Как это можно сделать? Каким образом через глобальные переменные?
    Макс прав..
    Попробуй примерно так..
    Код:
    double MB;
    
    init{
    ...
     if(!GlobalVariableCheck("MaxBal"))GlobalVariableSet("MaxBal",AccountBalance());
     MB=GlobalVariableGet("MaxBal");
    ...
    }
    
    start{
    ...
      if(MB<AccountBalance()){
        GlobalVariableSet("MaxBal",AccountBalance());
        MB=GlobalVariableGet("MaxBal");
      }
    ...
    }
    Не проверял - МТ нет
  8. 283
    Комментарии
    4
    Темы
    283
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от EQU Посмотреть сообщение
    Макс прав..
    Попробуй примерно так..
    Код:
    double MB;
    
    init{
    ...
     if(!GlobalVariableCheck("MaxBal"))GlobalVariableSet("MaxBal",AccountBalance());
     MB=GlobalVariableGet("MaxBal");
    ...
    }
    
    start{
    ...
      if(MB<AccountBalance()){
        GlobalVariableSet("MaxBal",AccountBalance());
        MB=GlobalVariableGet("MaxBal");
      }
    ...
    }
    Не проверял - МТ нет
    Ну наконец-то! Спасибо большое) :bow:
  9. 8,531
    Комментарии
    46
    Темы
    15162
    Репутация Pro
    Аватар для avtomat  
    Старожил

    7 Медалей
    Цитата Сообщение от goodle06 Посмотреть сообщение
    выдает ошибку при компиляции "expression on global scope not allowed" для m, maxacc.
    не, ну это ж не так прямо в лоб надо было....

    объявление
    ...........
    цикл
    ...........
    функция
  10. 283
    Комментарии
    4
    Темы
    283
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от avtomat Посмотреть сообщение
    не, ну это ж не так прямо в лоб надо было....

    объявление
    ...........
    цикл
    ...........
    функция
    Общаюсь с языком очень недолго) Так тоже получилось, спасибо.

Вверх
РегистрацияX

чтобы писать, читать, комментировать