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

 
Честно говоря, я вообще не понимаю, как нормально пользоваться библиотекой в терминале без поиска и возможности сортировки... Просто тупо прокручивать сотни строчек?!!!
 
Alena000:
Честно говоря, я вообще не понимаю, как нормально пользоваться библиотекой в терминале без поиска и возможности сортировки... Просто тупо прокручивать сотни строчек?!!!

Поиск встроен в MetaEditor (верхний правый угол). Искать можно вхождения по:

  • открытому документу
  • по всем файлам
  • MQL4/MQL5.community
Поиск встроен в сам терминал (верхний правый угол). Поиск из терминала идёт по всему MQL5.community (Статьи, Продукты, Библиотека, Сигналы, Форум, Блоги, Документация).

 
ни у кого мыслей нет по поводу вопроса? ))
 
Maxim Dobrovolskii:
ни у кого мыслей нет по поводу вопроса? ))

Может поможет

Файлы:
Fractal.mq4  4 kb
 
Victor Nikolaev:

Может поможет

спасибо, однако мне бы хотелось понять и узнать, почему мой вариант не работает. Как отдельный индикатор себя показывает, так как должен. и мне кажется что дело именно в связке советник+индикатор. а в чем именно дело, не ясно.
 
Maxim Dobrovolskii:
спасибо, однако мне бы хотелось понять и узнать, почему мой вариант не работает. Как отдельный индикатор себя показывает, так как должен. и мне кажется что дело именно в связке советник+индикатор. а в чем именно дело, не ясно.
А может дело в том, что в OnTick() читаешь только нулевой буфер, а в OnDeinit() и нулевой и первый?
 
Maxim Dobrovolskii:
спасибо, однако мне бы хотелось понять и узнать, почему мой вариант не работает. Как отдельный индикатор себя показывает, так как должен. и мне кажется что дело именно в связке советник+индикатор. а в чем именно дело, не ясно.

Хотите докажу что проблем особых нет.

Только нужен код индикатора. Не люблю копировать.

Может кое-что изменю в Вашем индикаторе (и даже знаю что).

 
Alexey Viktorov:
А может дело в том, что в OnTick() читаешь только нулевой буфер, а в OnDeinit() и нулевой и первый?
Deinit я привел, что бы показать что в одном буферов значение есть. скрин и лог выше.
 
Victor Nikolaev:

Хотите докажу что проблем особых нет.

Только нужен код индикатора. Не люблю копировать.

Может кое-что изменю в Вашем индикаторе (и даже знаю что).

//+------------------------------------------------------------------+
//|                                               modify_Fractal.mq4 |
//|          MoneyRobotics Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MoneyRobotics Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_label1  "Up"
#property indicator_label2  "Down"
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_style1  STYLE_SOLID
#property indicator_style2  STYLE_SOLID
#property indicator_width1  1
#property indicator_width2  1
#property indicator_color1 Red
#property indicator_color2 Blue


//--- indicator buffers

double ExtUpFractalsBuffer[];
double ExtDownFractalsBuffer[];

//+-----------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---- indicator buffers mapping  
    SetIndexBuffer(0,ExtUpFractalsBuffer);
    SetIndexBuffer(1,ExtDownFractalsBuffer);  
//---- drawing settings
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,217);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,218);
//----
    SetIndexEmptyValue(0,0.0);
    SetIndexEmptyValue(1,0.0);
//---- name for DataWindow
    SetIndexLabel(0,"Modify_Fractal Up");
    SetIndexLabel(1,"Modify_Fractal Down");
//---- initialization done  
   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[])
  {
//---
   int    i, nCountedBars;
   double dCurrent;
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted    
   
   if(nCountedBars<=8) i=Bars-nCountedBars-4;
   if(nCountedBars>8)
     {
      nCountedBars--;
      i=Bars-nCountedBars-4;
     }
//----Up and Down Fractals
   while ( i >= 4 )
     {
      //----Fractals up bFound=false;
      dCurrent=High[i];
      if(dCurrent>High[i+1] && dCurrent>High[i+2] && dCurrent>High[i+3] &&
         dCurrent>High[i-1] && dCurrent>High[i-2] && dCurrent>High[i-3] && 
         dCurrent>High[i-4] )
        {
         ExtUpFractalsBuffer[i]=NormalizeDouble(dCurrent + 1* Point,Digits);
        }
                           
      //----Fractals down
      dCurrent=Low[i];
      if(dCurrent<Low[i+1] && dCurrent<Low[i+2] && dCurrent<Low[i+3] && 
         dCurrent<Low[i-1] && dCurrent<Low[i-2] && dCurrent<Low[i-3] && 
         dCurrent<Low[i-4])
        {
         ExtDownFractalsBuffer[i]=NormalizeDouble(dCurrent - 1* Point,Digits);
        }
      i--;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


код индикатора.
 
Maxim Dobrovolskii:
Deinit я привел, что бы показать что в одном буферов значение есть. скрин и лог выше.

Есть значение и в нулевом и в первом буфере. На М15 сейчас фракталы на 5м и 21м барах. Этот скрипт

/********************Script program start function*******************/
void OnStart()
{
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 1, 5));
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 0, 21));
}/*******************************************************************/

всё исправно находит и печатает. Соответственно и советник будет находить iCustom() работает одинаково и в скрипте и в советнике.

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