Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1357

 

Вопрос Администрации.

Помогите скачать демо версию советника Озирис. 

При попытке скачать советник не скачивается.

Купите Торговый робот (Expert Advisor) 'Astroloqer' для MetaTrader 4 в магазине MetaTrader Market
Купите Торговый робот (Expert Advisor) 'Astroloqer' для MetaTrader 4 в магазине MetaTrader Market
  • www.mql5.com
Советник Звездочет 1.0 универсал. НЕ мартинит НЕ усредняется И не торгует сетками ордеров. Терминал МТ4. Это вы можете сами проваерить при
 
Oleg Kolesov #:
Главный вопрос остался не решенным. Как окрасить буфер в два цвета. >= Синий до <= Красный.

А я вот никак не могу понять Ваши условия.

Пример. Граница = 5

Значение == 8, цвет - синий.

Значение == 1, цвет - красный.

Значение == 5, цвет - какой? 

 
Oleg Kolesov #:
Сделаю перерыв. Спасибо.

немного переделал ваш индикатор (к нему эксперт для тестера) 

Снимок экрана 2021-10-12 071433

Файлы:
V2.mq5  9 kb
 
SanAlex как можете оценить?
 
Oleg Kolesov #:
SanAlex как можете оценить?

обычный как все - эксперта если со всеми прибамбасами сделать, будет зарабатывать.  

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

EUR\USD-H2  Ваш индикатор  на 2 часовом стоит в направлении вниз - на данный момент нейтрально ждет переключение верх или продолжит движение вниз.

EURUSDH2итит 

 
Почему может не выволиться в журнал команда Print?
 
Evgeny Dyuka #:
Почему может не выволиться в журнал команда Print?

Срабатывает защита от ... неверных действий пользователя. Выполните в терминале, во вкладке "Эксперты" правый клик и выполните команду "Просмотр".

 

Здравствуйте господа и госпожи! 

 Не кидайтесь тапками за мой вопрос. Понимаю что он наивный, но все мы "Боже какими мы были наивными" (романс).

 Я написал советника по оригинальному алгоритму. Тестирование показывает, что он наиболее эффективен в скальперском режиме. О результатах пока умолчу, потому что не поверите, мол знаем мы тут изобретателей перпетуум мобиле и Граалей. Он не тот и не другой и у него есть серьезный недостаток - он как все скальперские стратегии зависит от величины спреда и комиссий и стоплевел. Настройка у него практически одна  - SL , на тесте 6-10 pps на 5 ти знаках. Можете меня просветить как с этим бороться или с каким брокером можно играть в эти игры.

 
Здравствуйте. 
Есть индикатор. Он суммирует лимитные заявки в стакане и выводит это в виде диаграммы.
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 2

#property indicator_label1 "Delta buy"
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 clrWhite
#property indicator_width1 3

#property indicator_label2 "Delta sell"
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_color2 clrBlue
#property indicator_width1 3

int iStart;
double iDelta1[];
double iDelta2[];

void OnDeinit(const int reason)
{
  string symbol = Symbol();

  MarketBookRelease(symbol);
}

void OnInit()
{
  string symbol = Symbol();

  SetIndexBuffer(0, iDelta1, INDICATOR_DATA);
  ArraySetAsSeries(iDelta1, true);
  
  SetIndexBuffer(1, iDelta2, INDICATOR_DATA);
  ArraySetAsSeries(iDelta2, true);

  IndicatorSetString(INDICATOR_SHORTNAME, "OrderBook");
  IndicatorSetInteger(INDICATOR_DIGITS, Digits());

  MarketBookAdd(symbol);
}

int OnCalculate(
  const int bars,
  const int counted,
  const datetime& time[],
  const double& open[],
  const double& high[],
  const double& low[],
  const double& close[],
  const long& ticks[],
  const long& volume[],
  const int& spread[]
)
{
  if (iStart == 0)
  {
    iStart = 1;
    ZeroMemory(iDelta1);
    ZeroMemory(iDelta2);
  }
  else if (bars != counted)
  {
    iDelta1[0] = iDelta1[1];
    iDelta2[0] = iDelta2[1];
  }

  string symbol = Symbol();

  double ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
  double bid = SymbolInfoDouble(symbol, SYMBOL_BID);

  MqlBookInfo levels[];

  bool book = MarketBookGet(symbol, levels);

  int indexBuy = 1;
  int indexSell = 1;
  long volumeBuy = 0;
  long volumeSell = 0;


  if (book)
  {
    int size = ArraySize(levels);

    for (int k = 0; k < size; k++)
    {
      if (levels[k].price >= ask) 
      {
        volumeSell += indexSell * levels[k].volume;
        indexSell++;
         
      }
    }

    for (int k = size - 1; k >= 0; k--)
    {
      if (levels[k].price <= bid) 
      {
        volumeBuy += indexBuy * levels[k].volume;
        indexBuy++;
     
      }
    }
  }

 iDelta1[0] = (double) ( - volumeSell);
 iDelta2[0] = (double) (volumeBuy); 
  return bars;
}
И при каждом новом изменении стакана он переписывает прошлую сумму. А как сделать чтобы он накапливал сумму? То есть, не переписывал данные на текущем баре, а прибавлял? Пытался все реализовать через цикл while и суммировать данные пока текущий бар не сдвинулся, но что-то пошло не так. Прошу сильно не бить за такой банальный вопрос.
 

FileOpen возвращает ошибку 5001 (Не может быть открыто одновременно более 64 файлов).
Вроде каждый раз корректно закрываю через FileClose(file_handle).

Где и как накапливается счетчик открытых файлов и как его сбросить?

Причина обращения: