Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 536

 
Artyom Trishkin:
Откуда именно запускаете индикатор в терминале?
Если вы про мой, то C:\Users\Царь\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90, если про ВВ, то честно говоря не знаю откуда он запускается, но юзал и принтовал проблему(узнавал даёт ли в самом ВВ больше 4-х знаков индюк) был тоже с этой папки брал ВВ.
 
Павел Козлов:
Так я вроде в его код и залазил, что бы посмотреть вот эту вестчь.

Не знаю как у всех, но у меня есть два места где индюки и эксперты лежат, это C:\Program Files (x86)\ MT4\MQL4\indicators и C:\Users\Царь\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90(эта папка открывается именно с самого терминала Файл-Открыть каталог данных) в обоих местах я посмотрел код и он идентичен.  Возможно я опять упустил где-то суть, можете пояснить еще раз незнающему. Чем отличается кастомный от стандартного и где найти оба варианта?

Стандартный называется BollingerBands а кастомный Bands и расположены в разных местах.


 
Artyom Trishkin:
Откуда именно запускаете индикатор в терминале?

Я сомневаюсь что он знаком с режимом /portable

 
Alexey Viktorov:

Стандартный называется BollingerBands а кастомный Bands и расположены в разных местах.


Спасибо. А то с мобилы не могу никак Его Величеству объяснить где, и что расположено.
Поэтому и пытался сказать что он запускает одно, а код глядит у другого.
 
Alexey Viktorov:

Я сомневаюсь что он знаком с режимом /portable

Я действительно не знаком с этим режимом и в своей теме, которую создал отдельно по этой проблеме, я раскрыл уровень своих знаний, прошу простить за глупость всё же, но это было не так просто как вам могло показаться для меня. Всё же проблему вы мне показали, теперь попробую понять как её решить. Спасибо за ваши советы и советы Артема.
 
Павел Козлов:
Я действительно не знаком с этим режимом и в своей теме, которую создал отдельно по этой проблеме, я раскрыл уровень своих знаний, прошу простить за глупость всё же, но это было не так просто как вам могло показаться для меня. Всё же проблему вы мне показали, теперь попробую понять как её решить. Спасибо за ваши советы и советы Артема.

Я никоим образом не хотел вас зацепить незнанием. Это был диалог с Артёмом, простое пояснение что он спрашивает о том, что вы не знаете, с моей точки зрения. Не знать не стыдно и вполне нормально.

 
Ну что не так я сейчас делаю, освоил функцию iCustom. Сделал код(взял для примера верхнюю линию). А он всё равно выдаёт 4 знака. Через DoubleToString выдаёт 5, но чушь слоновью, а не реальные данные.
double   BUp = iCustom(NULL,0,"Bands",20,0,2,1,1);
Прошу помощи, помощи именно кодом. Не в принте, а именно запись в переменную данных из индикатора Bands.ex4 в мой индикатор, для примера верхнюю линию. Желательно использовать числовые значения, а не заменять их переменными. 
 
Павел Козлов:
Ну что не так я сейчас делаю, освоил функцию iCustom. Сделал код(взял для примера верхнюю линию). А он всё равно выдаёт 4 знака. Через DoubleToString выдаёт 5, но чушь слоновью, а не реальные данные.Прошу помощи, помощи именно кодом. Не в принте, а именно запись в переменную данных из индикатора Bands.ex4 в мой индикатор, для примера верхнюю линию. Желательно использовать числовые значения, а не заменять их переменными. 

Код размещён в OnInit() потому, что сегодня OnTick() работать не будет.


зы: Я как-то невнимательно прочёл. Не заметил эту фразу

Желательно использовать числовые значения, а не заменять их переменными. 


но от того что вписано в iCustom число или переменная, ничего не зависит.

Файлы:
 
Павел Козлов:
Ну что не так я сейчас делаю, освоил функцию iCustom. Сделал код(взял для примера верхнюю линию). А он всё равно выдаёт 4 знака. Через DoubleToString выдаёт 5, но чушь слоновью, а не реальные данные.Прошу помощи, помощи именно кодом. Не в принте, а именно запись в переменную данных из индикатора Bands.ex4 в мой индикатор, для примера верхнюю линию. Желательно использовать числовые значения, а не заменять их переменными. 
Неправильно проверяете.  iCustom, iBands не округляют возвращаемое значение.
   double   BUp = iCustom(NULL,0,"Bands",20,0,2.0,1,1);
   Print(DoubleToString(BUp,16));
 

помогите разобраться, почему не отрисовывается индикатор. Хочу в итоге создать что-то типа ZigZag.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
//--------------------------------
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет линии 0 буфера
double Buf_0[];
double Max_B=0,
Min_B=10000;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,Buf_0);                  //Назначение массива буфера
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //стильлинии
   return(0);
  }
//------------------------------
int start()
  {
   int i;
   int n,
   step=10;
   int Counted_bars;
   double Max_A,
   Min_A;
   Counted_bars=IndicatorCounted();
   i=Bars-Counted_bars-1;
//--------------------------------------------------------------------------------------------------------------+
   while(i>=0) //цикл, который считает просчитывает значение на i-ом баре               
     {
      Max_A=High[i];                         //присвоили максимальное значение i-ого бара переменной Max_A            
      Min_A=Low[i];                          //присвоили минимальное значение i-ого бара переменной Min_A
      if(Max_A>Max_B)
         Max_B=Max_A;
      if(Min_A<Min_B)
         Min_B=Min_A;
      //------------------------------------------------------------------------------------------------------------- 
      if(i>=step)
        {
         for(n=0;n<step;n++) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i+n]>Max_A)
              {
               Max_A=High[i+n];
              }
            else
              {
               if(High[i+n]<Min_A)
                  Min_A=High[i+n];
              }
           }
        }
      if(i<step)
        {
         for(n=step;n>0;n--) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i-n]>Max_A)
              {
               Max_A=High[i-n];
              }
            else
              {
               if(High[i-n]<Min_A)
                  Min_A=High[i-n];
              }
           }
        }
      if(Max_A>Max_B)
        {
         Buf_0[i]=Max_A;
        }
      else
        {
         if(Min_A<Min_B)
            Buf_0[i]=Min_A;
        }
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
Причина обращения: