Logo

Вход

Войти с помощью соц. сетей
Пока нет объявлений.
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
11.11.2015, 01:31
Лучший ответ
MQL код:
if(MathAbs(Bars)-bars>0)
{ bars = Bars; }


посчитай по модулю , если отрицательное равно фактическим барам
11.11.2015, 12:18
Лучший ответ
Сообщение от aznz Посмотреть сообщение
но тут столкнулся с проблемой иногда пременная Bars становится меньше чем сохраненная bars
получается отрицательное значение (по моему такого раньше не было)
Да, действительно странно. Каждый новый билд удивляет всё новыми и новыми глюками... )

Для индикаторов в подобных случаях есть специальная функция IndicatorCounted, но поскольку не знаю, что вы пишите, то могу посоветовать просто ничего не делать, если результат некорректен.

MQL код:

int count = Bars - bars;

if(count > 0)
bars = Bars;
else
return;
14.11.2015, 05:13
Лучший ответ
Сообщение от aznz Посмотреть сообщение
столкнулся с проблемой иногда пременная Bars становится меньше чем сохраненная bars
Никогда не проверял данную переменную. А вы, извините, таким образом проверяете приход нового бара? Но это, кстати, не всегда достоверно. Возможно терминал подчищает количество баров на графике по мере их прибывания не по одному, а пачками. Для вычисления необработанных баров индикатора во всех примерах приводится
MQL код:
Bars-IndicatorCounted()
ну и проверить результат на минус не лишнее, или цикл обработки баров делать от нуля. Ну а если нужно работать только по точкам открытия, то проверяем
MQL код:
Volume[0] > 1
.
  • #1 Свернуть

    Странное поведение Bars

    делаю вычисления на каждой свече получаю новую вот так.
    MQL код:

    if((Bars-bars>0))
    { bars = Bars; }

    но тут столкнулся с проблемой иногда пременная Bars становится меньше чем сохраненная bars
    получается отрицательное значение (по моему такого раньше не было) если я напишувот так я буду получать управление на каждой свече
    MQL код:

    if((Bars-bars!=0))
    { bars = Bars; }

    или как можно решить эту проблему?
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    MQL код:
    if(MathAbs(Bars)-bars>0)
    { bars = Bars; }


    посчитай по модулю , если отрицательное равно фактическим барам

    Комментарий

    • #3 Свернуть

      Сообщение от aznz Посмотреть сообщение
      но тут столкнулся с проблемой иногда пременная Bars становится меньше чем сохраненная bars
      получается отрицательное значение (по моему такого раньше не было)
      Да, действительно странно. Каждый новый билд удивляет всё новыми и новыми глюками... )

      Для индикаторов в подобных случаях есть специальная функция IndicatorCounted, но поскольку не знаю, что вы пишите, то могу посоветовать просто ничего не делать, если результат некорректен.

      MQL код:

      int count = Bars - bars;

      if(count > 0)
      bars = Bars;
      else
      return;
      Программы для трейдинга
      Harmonic ABCD Monitor - все сигналы на одном экране
      Опережающий индикатор Super Bollinger Bands

      Комментарий

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

        Сообщение от aznz Посмотреть сообщение
        столкнулся с проблемой иногда пременная Bars становится меньше чем сохраненная bars
        Никогда не проверял данную переменную. А вы, извините, таким образом проверяете приход нового бара? Но это, кстати, не всегда достоверно. Возможно терминал подчищает количество баров на графике по мере их прибывания не по одному, а пачками. Для вычисления необработанных баров индикатора во всех примерах приводится
        MQL код:
        Bars-IndicatorCounted()
        ну и проверить результат на минус не лишнее, или цикл обработки баров делать от нуля. Ну а если нужно работать только по точкам открытия, то проверяем
        MQL код:
        Volume[0] > 1
        .
        Реализую за ваши деньги ваши идеи на MQL - mql@fx-prog.ru

        Комментарий

        X