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

 
Andrei Sokolov #:

Как он будет работать когда нет новых свечей? 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

Alexey Viktorov, 2024.01.03 11:46

А зачем лишняя нагрузка на процессор? Есть тик → проверили новый ли бар. Нет тика → сидим на заборе, курим бамбук… Ведь новый бар любого ТФ наступает одновременно с новым баром минутного ТФ. Если появился новый часовой бар, то обязательно появился и минутный бар. 

По другому я не могу сказать…
 

Всем привет!

Хотел научится использовать платформу МТ4, но никак не могу открыть ни в одной конторе демо-счёт через терминал

Даже на этом сервере не получается, пробовал и неделю назад - никак.

далее продвижения нет


 

Кто не жадный, откройте пожалуйста счёт на сервере 

и скиньте в личку данные доступа - очень нужно.

Вообще, нужна любая демка МТ4, на которой STOPLEVEL равен НЕ "0" = чем больше - тем лучше, с суммой $2000, 

Спасибо!

 
Vitaly Muzichenko #:

Всем привет!

Хотел научится использовать платформу МТ4, но никак не могу открыть ни в одной конторе демо-счёт через терминал

Даже на этом сервере не получается, пробовал и неделю назад - никак.

далее продвижения нет


Если нв предыдущем шаге сервер выбрали правильно, то грохните всё кроме terminal.exe и metaeditor.exe и после запуска терминала всё восстановится без проблемы.

Ну если хотите я открою для вас счёт в MQ-Demo и скину пароли в личку.


Ну вот пока писал ответ поступила от вас просьба. Сейчас скину.

 
Vitaly Muzichenko #:

Кто не жадный, откройте пожалуйста счёт на сервере 

и скиньте в личку данные доступа - очень нужно.

Вообще, нужна любая демка МТ4, на которой STOPLEVEL равен НЕ "0" = чем больше - тем лучше, с суммой $2000, 

Спасибо!

в мкудемо в 4ке счет открываю в мобильном и потом переношу на комп счет. С компа тоже почему то не получается. Кста почему обновились почти все демки на альпах альфа, и других, возможно не открывал 2 недели, но обычно новые счета не появлялись, а тут открыл, и везде 10к везде и новые счета.))) С наступившим!!!

 
Valeriy Yastremskiy #:

в мкудемо в 4ке счет открываю в мобильном и потом переношу на комп счет. С компа тоже почему то не получается. Кста почему обновились почти все демки на альпах альфа, и других, возможно не открывал 2 недели, но обычно новые счета не появлялись, а тут открыл, и везде 10к везде и новые счета.))) С наступившим!!!

Вообще нигде не могу открыть, пробовал неделю назад - трабл.

Ранее всё было без проблем

Сейчас на альпах так, висит почти 2 часа

--

Если что, фамилия польская :)

 

Vitaly Muzichenko #:

Ранее всё было без проблем

Сейчас на альпах так, висит почти 2 часа

Похоже, какие-то (используемые в процессе дополнительные) ip недоступны.

 
Добрый день! Возник вопрос к програмистам mql5. В моем индикаторе я отображаю фракталы и буфер для окраски свечей. Но фракталы не графике не появляются, если удалить код окраски свечей, то все прекрасно работает. Подскажите, в чем проблема. 

код:

//--- номер версии индикатора
#property version   "1.00"
//---- отрисовка индикатора в главном окне
#property indicator_chart_window
//---- для расчета и отрисовки индикатора использовано два буфера
#property indicator_buffers 11
//---- использовано всего два графических построения
#property indicator_plots   3
//+----------------------------------------------+
//|  Параметры отрисовки верхнего индикатора     |
//+----------------------------------------------+
//---- отрисовка индикатора 1 в виде символа
#property indicator_type1   DRAW_ARROW
//---- в качестве цвета медвежьей линии индикатора использован цвет Magenta
#property indicator_color1  Magenta
//---- толщина линии индикатора 1 равна 1
#property indicator_width1  1
//---- отображение бычей метки индикатора
#property indicator_label1  "Up Fractal"
//+----------------------------------------------+
//|  Параметры отрисовки нижнего индикатора      |
//+----------------------------------------------+
//---- отрисовка индикатора 2 в виде символа
#property indicator_type2   DRAW_ARROW
//---- в качестве цвета бычьей линии индикатора использован цвет Blue
#property indicator_color2  Blue
//---- толщина линии индикатора 2 равна 1
#property indicator_width2  1
//---- отображение медвежьей метки индикатора
#property indicator_label2 "Down Fractal"

#property indicator_type3   DRAW_COLOR_BARS
#property indicator_color3  clrDarkGray,clrSandyBrown,clrDeepSkyBlue
//+----------------------------------------------+
//| Входные параметры индикатора                 |
//+----------------------------------------------+
input bool Fine=true;       // Чувствительность
input bool FlatShift=true;  // Сдвиг
input uint AlertCount=0;    // Количество алертов
input int  UpLable=217;     // Метка верхнего фрактала
input int  DnLable=218;     // Метка нижнего фрактала


//--- input parameters
//
input int  inpCmoPeriod       = 20; // CMO period
input int  inpCmoSignalPeriod =  9; // CMO signal period
                                    //
//--- buffers and global variables declarations
//
double cmo[],cmoc[],dslup[],dsldn[],baro[],barh[],barl[],barc[],barcl[];
//+----------------------------------------------+
//---- объявление динамических массивов, которые в дальнейшем
//---- будут использованы в качестве индикаторных буферов
double SellBuffer[];
double BuyBuffer[];
//----
int StartBars;
int FRA_Handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---- инициализация глобальных переменных
   StartBars=6;
//---- получение хендла индикатора ATR
   FRA_Handle=iFractals(NULL,0);
   if(FRA_Handle==INVALID_HANDLE)
     {
      Print(" Не удалось получить хендл индикатора iFractals");
      return(1);
     }

//---- превращение динамического массива в индикаторный буфер
   SetIndexBuffer(0,SellBuffer,INDICATOR_DATA);
//---- осуществление сдвига начала отсчета отрисовки индикатора 1
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,StartBars);
//---- создание метки для отображения в DataWindow
   PlotIndexSetString(0,PLOT_LABEL,"Up Fractal");
//---- символ для индикатора
   PlotIndexSetInteger(0,PLOT_ARROW,UpLable);
//---- индексация элементов в буфере, как в таймсерии
   ArraySetAsSeries(SellBuffer,true);
//---- запрет на отрисовку индикатором пустых значений
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

//---- превращение динамического массива в индикаторный буфер
   SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA);
//---- осуществление сдвига начала отсчета отрисовки индикатора 2
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,StartBars);
//---- создание метки для отображения в DataWindow
   PlotIndexSetString(1,PLOT_LABEL,"Down Fractal");
//---- символ для индикатора
   PlotIndexSetInteger(1,PLOT_ARROW,DnLable);
//---- индексация элементов в буфере, как в таймсерии
   ArraySetAsSeries(BuyBuffer,true);
//---- запрет на отрисовку индикатором пустых значений
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);

//---- установка формата точности отображения индикатора
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- имя для окон данных и метка для подокон
   string short_name="Fine Fractals";
   IndicatorSetString(INDICATOR_SHORTNAME,short_name);
   
   
   
   //--- indicator buffers mapping
   SetIndexBuffer(0,baro,INDICATOR_DATA);
   SetIndexBuffer(1,barh,INDICATOR_DATA);
   SetIndexBuffer(2,barl,INDICATOR_DATA);
   SetIndexBuffer(3,barc,INDICATOR_DATA);
   SetIndexBuffer(4,barcl,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(5,dslup,INDICATOR_CALCULATIONS);
   SetIndexBuffer(6,dsldn,INDICATOR_CALCULATIONS);
   SetIndexBuffer(7,cmo,INDICATOR_CALCULATIONS);
   SetIndexBuffer(8,cmoc,INDICATOR_CALCULATIONS);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| 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(Bars(_Symbol,_Period)<rates_total) return(prev_calculated);
   static int prevDisplayType=-1;int currDisplayType=(int)ChartGetInteger(0,CHART_MODE);
   if(currDisplayType!=prevDisplayType)
     {
      PlotIndexSetInteger(0,PLOT_DRAW_TYPE,currDisplayType==CHART_CANDLES?DRAW_COLOR_CANDLES:DRAW_COLOR_BARS);
      prevDisplayType=currDisplayType;
     }

   double _alpha=2.0/(1+inpCmoSignalPeriod);
   int i=(int)MathMax(prev_calculated-1,0); for(; i<rates_total && !_StopFlag; i++)
     {
      double SumUp=0;
      double SumDn=0;
      for(int k=0; k<inpCmoPeriod && (i-k-1)>=0; k++)
        {
         double diff=close[i-k]-close[i-k-1];
         SumUp += diff>0 ?  diff : 0;
         SumDn += diff<0 ? -diff : 0;
        }
      cmo[i]=(SumUp+SumDn)!=0 ? 100 *(SumUp-SumDn)/(SumUp+SumDn) : 0;
      dslup[i] = (i>0) ? (cmo[i]>0) ? dslup[i-1]+_alpha*(cmo[i]-dslup[i-1]) : dslup[i-1] : 0;
      dsldn[i] = (i>0) ? (cmo[i]<0) ? dsldn[i-1]+_alpha*(cmo[i]-dsldn[i-1]) : dsldn[i-1] : 0;
      cmoc[i]  = (cmo[i] > dslup[i]) ? 2 : (cmo[i] < dsldn[i]) ? 1 : 0;
      //
      //---
      //
      barh[i]  = high[i];
      barl[i]  = low[i];
      barc[i]  = close[i];
      baro[i]  = open[i];
      barcl[i] = cmoc[i];
     }  
     }
  
//---- проверка количества баров на достаточность для расчета
   if(BarsCalculated(FRA_Handle)<rates_total || rates_total<StartBars) return(0);

//---- объявления локальных переменных
   int to_copy,limit;
   double HP1,HP2,HP3,HPi,LP1,LP2,LP3,LPi,res,UpFractal[],DnFractal[];
   static uint UpCount,DnCount;

//---- расчеты необходимого количества копируемых данных
//---- и стартового номера limit для цикла пересчета баров
   if(prev_calculated>rates_total || prev_calculated<=0)// проверка на первый старт расчета индикатора
     {
      to_copy=rates_total;           // расчетное количество всех копируемых данных
      limit=rates_total-StartBars-1; // стартовый номер для расчета всех баров
     }
   else
     {
      to_copy=rates_total-prev_calculated+5; // расчетное количество только новых копируемых данных
      limit=rates_total-prev_calculated+2;   // стартовый номер для расчета новых баров
     }

//---- копируем вновь появившиеся данные в массивы UpFractal и DnFractal
   if(CopyBuffer(FRA_Handle,0,0,to_copy,UpFractal)<=0) return(0);
   if(CopyBuffer(FRA_Handle,1,0,to_copy,DnFractal)<=0) return(0);

//---- индексация элементов в массивах, как в таймсериях  
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(UpFractal,true);
   ArraySetAsSeries(DnFractal,true);

//---- основной цикл расчета индикатора
   for(int bar=2; bar<=limit && !IsStopped(); bar++)
     {
      HP1=high[bar+1];
      HP2=high[bar];
      HP3=high[bar-1];
      HPi=high[bar-2];
      LP1=low[bar+1];
      LP2=low[bar];
      LP3=low[bar-1];
      LPi=low[bar-2];

      res=UpFractal[bar];
      if(res==0.0 && Fine)//повышенная чувствительность
         if(HP1<HP2 && HP2>HP3 && (LP2>=LP3 || HP2>HPi)) res=HP2;

      if(FlatShift && res!=0.0) while(high[bar]==high[bar+1]) bar++;
      SellBuffer[bar]=res;

      res=DnFractal[bar];
      if(res==0.0 && Fine)//повышенная чувствительность
         if(LP1>LP2 && LP2<LP3 && (HP2<=HP3 || LP2<LPi)) res=LP2;

      if(FlatShift && res!=0.0) while(low[bar]==low[bar+1]) bar++;
      BuyBuffer[bar]=res;
     }

//---- сброс счетчиков алертов в нули
   if(rates_total!=prev_calculated)
     {
      UpCount=0;
      DnCount=0;
     }

   res=SellBuffer[2];
//---- подача алерта для верхнего фрактала
   if(UpCount<AlertCount && res!=EMPTY_VALUE && res!=0.0)
     {
      UpCount++;
      Alert("Новый верхний фрактал "+DoubleToString(res,_Digits));
     }

   res=BuyBuffer[2];
//---- подача алерта для верхнего фрактала
   if(DnCount<AlertCount && res!=EMPTY_VALUE && res!=0.0)
     {
      DnCount++;
      Alert("Новый нижний фрактал "+DoubleToString(res,_Digits));
     }
          
//----    
   return(rates_total);
  }





   int i=(int)MathMax(prev_calculated-1,0); for(; i<rates_total && !_StopFlag; i++)

   for(int bar=2; bar<=limit && !IsStopped(); bar++) 



Эти две строчки я изменить не могу. Верно? 
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko #:

Вообще нигде не могу открыть, пробовал неделю назад - трабл.

Ранее всё было без проблем

Сейчас на альпах так, висит почти 2 часа

--

Если что, фамилия польская :)

Хех, на нотике 32 бита в 4ке тоже не удается открыть счет с терминала. На телефоне открыл, но на нотике счет не логинится. пишет старая версия. Версия 1380 от 24 марта 2023.

А 5ка на 32 битах работает версия 2361 от 8 марта 2020 года))) сервер метаквот-демо.

ЗЫ завел 4ку, на нотике нашелся еще один файл терминала, который обновился до версии 4 от 10 ноября 2023 билд 1400
 

Кто-нибудь может дать ссылку на код индикатора mq4 c использованием функции OnTime() при создании графического объекта.

С уважением, Вячеслав.

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