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

 
Как увеличить число оптимизируемых параметров в тестере? Может есть какие-нибудь виртуальные способы в MQL, может в Python или ещё где-нибудь ? Направление дайте, please...
 
Vladimir M.:
Как увеличить число оптимизируемых параметров в тестере? Может есть какие-нибудь виртуальные способы в MQL, может в Python или ещё где-нибудь ? Направление дайте, please...

OnTester()

 
Vladimir Karputov:

Возьмите же наконец пример из справки! Ну сколько можно? Не нужно использовать своих выдуманных конструкций, если не сильно понимаете их смысл. Используйте стандартные конструкции -  разберитесь как они работают. После этого выкиньте свои конструкции в мусорку.


И используйте для генерации шаблона 'MQL Wizard'.

Код

и результат


Владимир, такое чувство, что говорить пытаются немой с глухим...

  1. Я использовал шаблон 'MQL Wizard' 
  2. Что Вы допарились до моих конструкций? Они не хуже Ваших, тем более именно для моих нужд!

if(rates_total - prev_calculated > 1)

При запуске индикатора rates_total = ХХХ (допустим ХХХ = 1000), prev_calculated = 0, rates_total - prev_calculated (1000 - 0 = 1000) больше 1! Условие сработало!

Далее

if(prev_calculated == 0)

При запуске индикатора prev_calculated = 0. Условие сработало!

А далее объясните мне чем отличается Ваше

      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];

от моего 

            barsBuffer1[0] = newCandles_Open[i];
            barsBuffer2[0] = newCandles_High[i];
            barsBuffer3[0] = newCandles_Low[i];
            barsBuffer4[0] = newCandles_Close[i];

с учётом того, что у меня выставлено ArraySetAsSeries в true ???

Почему Ваши свечи отрисовываются, а мои нет?

Я уже почти 2 недели прошу мне объяснить это! Не нужно меня отправлять читать документацию! Я её уже почти наизусть выучил. Просто скажите ПОЧЕМУ? Или объясните, или скажите, что не знаете, или скажите, что не хотите отвечать!

Блин, Вы часом не забыли название этой темы?

 
Сергей Таболин:


Может так? У Вас все индексы присваиваются в буферах нулевому индексу.

            barsBuffer1[i] = newCandles_Open[i];
            barsBuffer2[i] = newCandles_High[i];
            barsBuffer3[i] = newCandles_Low[i];
            barsBuffer4[i] = newCandles_Close[i];
 
Сергей Таболин:


Так я и пытаюсь Вас научить: без конца даю Вам примеры - но Вы упорно пытаетесь биться головой об стену. 

Повторю последний раз: выкиньте в мусорку свои конструкции и используйте стандартные. После этого можно будет задать вопрос: как отрисовать (например пять самых правых свеч на графике) по своим правилам. Но не ранее чем Вы выкините свои конструкции, не ранее чем Вы прекратите использовать префиксный инкремент вместо постфиксного ...

 
Сергей Таболин:


Пример

//+------------------------------------------------------------------+
//|                                                 Draw Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot USDJPY
#property indicator_label1  "USDJPY"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double   Buffer1[];
double   Buffer2[];
double   Buffer3[];
double   Buffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Buffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Buffer3,INDICATOR_DATA);
   SetIndexBuffer(3,Buffer4,INDICATOR_DATA);
//--- the 0 (empty) value will mot participate in drawing
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   if(rates_total<10)
      return(0);
//---
   int limit=prev_calculated-5;
   if(prev_calculated==0)
     {
      limit=rates_total-5;
      for(int j=0; j<limit; j++)
        {
         Buffer1[j]=0.0;
         Buffer2[j]=0.0;
         Buffer3[j]=0.0;
         Buffer4[j]=0.0;
        }
     }
   for(int i=limit; i<rates_total; i++)
     {
      if(i<rates_total-5)
        {
         //--- затираем всё, что левее пяти свеч (сюда попадаем при рождении нового бара)
         Buffer1[i]=0.0;
         Buffer2[i]=0.0;
         Buffer3[i]=0.0;
         Buffer4[i]=0.0;
         continue;
        }
      //--- четыре левые свечи будут перерисовываться на каждом тике - это не оптимально,
      //--- но пригодится в будущем (если для них потом подсовывать тики)
      //--- пятая свеча (она же самая правая на графике) реагирует онлайн на изменение текущих цен
      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Результат:


Файлы:
 
Vladimir Karputov:

Так я и пытаюсь Вас научить: без конца даю Вам примеры - но Вы упорно пытаетесь биться головой об стену. 

Повторю последний раз: выкиньте в мусорку свои конструкции и используйте стандартные. После этого можно будет задать вопрос: как отрисовать (например пять самых правых свеч на графике) по своим правилам. Но не ранее чем Вы выкините свои конструкции, не ранее чем Вы прекратите использовать префиксный инкремент вместо постфиксного ...

А чем вам он не нравится? Тем, что вы его не понимаете? Я например часто использую такой цикл

for(int i PositionsTotal(); i-- > 0)

и никаких проблем не возникает………

 
Alexey Viktorov:

А чем вам он не нравится? Тем, что вы его не понимаете? Я например часто использую такой цикл

for(int i PositionsTotal(); i-- > 0)

и никаких проблем не возникает………

А если попытаться прочесть вместо того, чтобы спешить отвечать? Вы используете (как и большинство) постфикс. И пример у Вас постфикс. Не нужно спешить лишь бы ответить, вместо подумать.

 
Youri Lazurenko:
Загрузка процессора 100% и после нескольких минут работы копм вырубается (процессор phenom II x4 955 (4 ядра, 3.2 ГГц), кулер стоит с запасом). После двух раз, решил больше не рисковать. Как такое понимать?

Проверьте компьютер в Aida64 или Linx - если там в тестах процессора и памяти проблем не возникает, и температура в пределах нормы, то дальше смотрите HDD. Вообще похоже на БП, если давно не меняли, то вероятно в нем дело. Терминал на феномах вторых работает нормально.

 
Доброго времени суток коллеги, подскажите существует ли такой символ в виде горизонтальной чёрточки в течении одного бала, а то что то найти не могу увы :-(