Ошибки, баги, вопросы - страница 2269

 

Ошибка при выполнении:

void OnStart()
{
    Print(StringToTime("2018.02.30 01:99:15")); //(*)
}

Результат:                      Ожидалось:

2018.03.02 01:59:15        wrong datetime


Кроме того непонятно почему ниже

void OnStart()
{
        Print( D'2018.02.30 01:99:15' ); //Warning: invalid date
}
Warning, а не Error и результат аналогичен (*)
 
A100:

Результат:                      Ожидалось:

2018.03.02 01:59:15        wrong datetime

Ожидаю другого: 2018.03.02 02:39:15.

 
fxsaber:

Ожидаю другого: 2018.03.02 02:39:15.

Так по крайней мере хоть какая то логика есть. Или допустим: 2018.02.28 01:59:15 - то же есть логика. В любом случае текущий результат крайне сомнительный.

 

Ошибка при выполнении: Cannot find 'g' in 'Test2.ex5'

//Test.mqh
class A {};
//Test1.mq5
#include "Test.mqh"
#import "Test2.ex5"
        void g( A* );
#import
void OnStart()
{
        A  a[1];
        ArrayPrint( a ); //(*)
        g(&a[0]);
}
//Test2.mq5
#property library
#include "Test.mqh"
void g( A* ) export {}

А если в Test1.mq5 строку со (*) убрать - то нормально. А как она повлияла??? Build 1881\32

 

Почему-то в одном рейтинге mql5 проигрывает альпари в три раза. Это соотношение популярности Сигналы vs ПАММы?

 
fxsaber:

Почему-то в одном рейтинге mql5 проигрывает альпари в три раза. Это соотношение популярности Сигналы vs ПАММы?

Это криворукость админов поисковой системы... 

 

В чем разница 

SetIndexBuffer(1,ValuesPainting,INDICATOR_COLOR_INDEX);

и

PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrBlue); 

?

Я кручу верчу код и никак не могу понять как раскрасить мувинг.

Если растет один цвет если падае другой.

Может кто нибудь пример показать ?

 
Vladimir Pastushak:

Я кручу верчу код и никак не могу понять как раскрасить мувинг.

Если растет один цвет если падае другой.

Может кто нибудь пример показать ?

c MQL5 только разбираюсь, но примерно так должно быть:

//+------------------------------------------------------------------+
//|                                                         myMA.mq5 |
//|                                                            IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot Red
#property indicator_label1  "Red"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot Blue
#property indicator_label2  "Blue"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2
//--- input parameters
input int      PeriodMA=10;
//--- indicator buffers
double         RedBuffer[];
double         BlueBuffer[];
int handleMA;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ArraySetAsSeries(RedBuffer,true);
   ArraySetAsSeries(BlueBuffer,true);
   SetIndexBuffer(0,RedBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,BlueBuffer,INDICATOR_DATA);
   handleMA=iMA(NULL,0,PeriodMA,0,MODE_SMA,PRICE_CLOSE);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   int i,limit;
   double ma[];
   if(prev_calculated==0) limit=rates_total-2; else limit=rates_total-prev_calculated;
   for(i=limit;i>=0;i--)
     {
      CopyBuffer(handleMA,0,i,2,ma);
      if(ma[0]<ma[1])
        {
         RedBuffer[i]=ma[0]; BlueBuffer[i]=EMPTY_VALUE;
        }
      else
        {
         BlueBuffer[i]=ma[0];RedBuffer[i]=EMPTY_VALUE;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
Ошибка при компиляции:
template<typename T>
void f( T& ) {}
void g1() { class A {} a; f( a ); } //(1)//нормально 
void g2() { class A {} a; f( a ); } //(2)//Error: '&' - parameter conversion not allowed

А какая принципиальная разница между (1) и (2) ? Почему в одном случае ошибка, а в другом - нормально?

 
A100:

А какая принципиальная разница между (1) и (2) ? Почему в одном случае ошибка, а в другом - нормально?

Так классы внутри функций могут быть одинакового имени, но разного содержания. Сигнатура f не понятная во втором варианте.

После первого она определилась. А после второго не переопределяться же с тем же именем.