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

 
Alexey Viktorov #:

Уверенность потому, что это всего лишь картинка. Хотите поставьте вот такую


Блин! Хороша картинка!

Улыбнуло!

 
Aleksey Vyazmikin #:

Это что ещё за порнография от ИИ?

Нет. Это шалости столяра.

 
Tretyakov Rostyslav #:

Я думаю у Вас проблема с большим количеством индикатор.

У берите половину индикаторов и перезагрузите терминал

Попробую, конечно. И сам думал про это.

Но!

Далек от того, чтобы умничать - просто хочется понять.

Взял, скопировал все эти пропавшие индикаторы, открыл новую папку под тем же именем МА, но, набранную латинским шрифтом. И скопировал в эту новую папку.

Индикаторы из предыдущей папки МА не трогал - т.е. они остались в терминале и их совокупное количество, получается, увеличилось. 

Получается, что в терминал добавил фигову тучу индикаторов - и они нормально скомпилировались и вполне себе хорошо отображаются в навигаторе.

Так что можно предположить, что проблема не в количестве индикаторов, а в чем то другом!

Так в чем?

Вот этого не понимаю!

Ну да ладно!

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

Тем более все индикаторы восстановил и все работает.

Спасибо всем за неравнодушие.

А картинка - повеселила! 

Удачи всем!

 
Vitaly Muzichenko #:

 

Я так понял вашей квалификации не хватит, чтобы исправить?

 
darirunu1 #:

Я так понял вашей квалификации не хватит, чтобы исправить?

Я не знаю что исправить, и у меня нет мт4 

 

Здравствуйте, нужно получить цены эктремумов ZigZag. В Mql4 использую функцию и всё прекрасно работает:

//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3)
  {
   if(sy=="" || sy=="0")
      sy=_Symbol;
   double zz;
   int    i, k=iBars(sy, tf), ke=0;

   for(i=0; i<k; i++)
     {
      zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
      if(zz!=0)
        {
         ke++;
         if(ke>ne)
            return(zz);
        }
     }
   Print("GetExtremumZZPrice(): Extremum ZigZag ",ne," not found");
   return(0);
  }
//--- End ---

Пытаюсь переделать под Mql5, но что то гдето не так делаю и получаю нереальные значения, которые с ценой никак не ассоциируются. 

//+----------------------------------------------------------------------------+
//|  Версия   : 13.10.2024                                            MQL 5    |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string symb="", ENUM_TIMEFRAMES tf=PERIOD_CURRENT, int ne=0, int dp=12, int dv=5, int bs=3)
  {
   if(symb=="" || symb=="0")
      symb=_Symbol;
   double zz;
   int    i, k=iBars(symb, tf), ke=0;

   for(i=0; i<k; i++)
     {
      zz=iCustom(symb, tf,"Examples\\ZigZag", dp, dv, bs, 0, i);
      if(zz!=0)
        {
         ke++;
         if(ke>ne)
            return(zz);
        }
     }
   Print("GetExtremumZZPrice(): Extremum ZigZag ",ne," not found");
   return(0);
  }
//--- End ---

Помогите по версии для Mql5 или подскажите что не так делаю.

 
Volodymyr Zubov #:

Здравствуйте, нужно получить цены эктремумов ZigZag. В Mql4 использую функцию и всё прекрасно работает:

Пытаюсь переделать под Mql5, но что то гдето не так делаю и получаю нереальные значения, которые с ценой никак не ассоциируются. 

Помогите по версии для Mql5 или подскажите что не так делаю.

Для начала, закинь  ZigZag в OnInit

// Init the zz indicator
  Handle = iCustom(Symbol(), Period(), "Examples\\ZigZag", InpDepth, InpDeviation, InpBackstep);
  if(Handle==INVALID_HANDLE) {
    Print("Could not create a handle to zigzag indicator");
    return(INIT_FAILED);
  }

Почитай, если не разберёшься, напиши

Там получение хендла в функции, что не лучшее решение, желательно вынести в OnInit(), и данные уже получать через 

  for (int i=0; i<rates_total-1; i++) {
    if(CopyBuffer(Handle, 0, i, 1, Buffer)<1) continue;
    double zz = Buffer[0];
    if (zz!=0 && zz!=EMPTY_VALUE) {
     ...

https://www.mql5.com/ru/forum/294099/page3#comment_9876911

Поиск экстремумов индикатора ZigZag - Попробуйте сменить бмв на жигули.
Поиск экстремумов индикатора ZigZag - Попробуйте сменить бмв на жигули.
  • 2018.12.11
  • Vitaly Muzichenko
  • www.mql5.com
например Extremum 1 совсем далеко не равен цене 1. что Static инициализируется в момент рестарта программы. из всех вариантов пока лучшими оказались вот эти Все идеально работает
 
Vitaly Muzichenko #:

Для начала, закинь  ZigZag в OnInit

Закинул в  OnInit, но ничего не изменилось.

 
Volodymyr Zubov #:

Закинул в  OnInit, но ничего не изменилось.

//+------------------------------------------------------------------+
//|                                                       ZZ_MQ5.mq5 |
//+------------------------------------------------------------------+
#property version   "1.00"

// Zigzag inputs
input int      InpDepth         = 12; // Depth
input int      InpDeviation     = 5;  // Deviation
input int      InpBackstep      = 3;  // Backstep

int handleZZ=-1;
double BufZZ[1];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
// Init the zz indicator
  handleZZ = iCustom(Symbol(), Period(), "Examples\\ZigZag", InpDepth, InpDeviation, InpBackstep);
  if(handleZZ==INVALID_HANDLE) {
    Print("Could not create a handle to zigzag indicator");
    return(INIT_FAILED);
  }
//---
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  IndicatorRelease(handleZZ);
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
  Print( GetExtremumZZPrice(0) );
}

//+----------------------------------------------------------------------------+
//|  Версия   : 13.10.2024                                            MQL 5    |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(int ne=0)
{
  double zz;
  int ke=0;
  int k=iBars(NULL,0)<100?iBars(NULL,0):100;
  for(int i=0; i<k; i++) {
    if(CopyBuffer(handleZZ, 0, i, 1, BufZZ)<1) continue;
    zz = BufZZ[0];
    if(zz!=0) {
      ke++;
      if(ke>ne)
        return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Extremum ZigZag ",ne," not found");
  return(0);
}
//--- End ---
 
Отлично твоя функция и всё остальное вставилось в советник, показания полностью правильные. Огромное спасибо!