Ни чего не пойму, версия МТ5 1545. В прошлых версиях в листинге Math.mqh были функции:
//+------------------------------------------------------------------+//| Computes the minimum value in array[] |//+------------------------------------------------------------------+doubleMathMin(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count==0)
return(QNaN);
if(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- first element by default, find minimumdouble min_value=array[ind1];
for(int i=ind1+1; i<=ind2; i++)
min_value=MathMin(min_value,array[i]);
//--- return minimum valuereturn(min_value);
}
//+------------------------------------------------------------------+//| Computes the maximum value in array[] |//+------------------------------------------------------------------+doubleMathMax(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count==0)
return(QNaN);
if(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- first element by default, find maximumdouble max_value=array[ind1];
for(int i=ind1+1; i<=ind2; i++)
max_value=MathMax(max_value,array[i]);
//--- return maximum valuereturn(max_value);
}
//+------------------------------------------------------------------+//| Computes the range of the values in array[] |//+------------------------------------------------------------------+double MathRange(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count==0)
return(QNaN);
if(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- default values, find minimum and maximum valuesdouble min_value=array[ind1];
double max_value=array[ind1];
for(int i=ind1+1; i<=ind2; i++)
{
double value=array[i];
min_value=MathMin(min_value,value);
max_value=MathMax(max_value,value);
}
//--- return rangereturn(max_value-min_value);
}
//+------------------------------------------------------------------+//| Computes the sum of the values in array[] |//+------------------------------------------------------------------+double MathSum(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count==0)
return(QNaN);
if(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- calculate sumdouble sum=0.0;
for(int i=ind1; i<=ind2; i++)
sum+=array[i];
//--- return sumreturn(sum);
}
//+------------------------------------------------------------------+//| Computes the standard deviation of the values in array[] |//+------------------------------------------------------------------+double MathStandardDeviation(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count<=1)
return(QNaN);
if(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- calculate meandouble mean=0.0;
for(int i=ind1; i<=ind2; i++)
mean+=array[i];
//--- average mean
mean=mean/data_count;
//--- calculate standard deviation double sdev=0;
for(int i=ind1; i<=ind2; i++)
sdev+=MathPow(array[i]-mean,2);
//--- return standard deviationreturnMathSqrt(sdev/(data_count-1));
}
//+------------------------------------------------------------------+//| Computes the average absolute deviation of the values in array[] |//+------------------------------------------------------------------+double MathAverageDeviation(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count<=1)
return(QNaN);
if(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- calculate meandouble mean=0.0;
for(int i=ind1; i<=ind2; i++)
mean+=array[i];
mean=mean/data_count;
//--- calculate average deviationdouble adev=0;
for(int i=ind1; i<=ind2; i++)
adev+=MathAbs(array[i]-mean);
adev=adev/data_count;
//--- return average deviationreturn(adev);
}
//+------------------------------------------------------------------+//| Computes the median value of the values in array[] |//+------------------------------------------------------------------+double MathMedian(double &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count==0)
return(QNaN);
if(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- prepare sorted valuesdouble sorted_values[];
ArrayCopy(sorted_values,array,0,start,count);
ArraySort(sorted_values);
//--- calculate median for odd and even cases//--- data_count=oddif(data_count%2==1)
return(sorted_values[data_count/2]);
else//--- data_count=evenreturn(0.5*(sorted_values[(data_count-1)/2]+sorted_values[(data_count+1)/2]));
}
//+------------------------------------------------------------------+//| Computes the mean value of the values in array[] |//+------------------------------------------------------------------+double MathMean(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count<1)
return(QNaN); // need at least 1 observationif(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- calculate meandouble mean=0.0;
for(int i=ind1; i<=ind2; i++)
mean+=array[i];
mean=mean/data_count;
//--- return meanreturn(mean);
}
//+------------------------------------------------------------------+//| Computes the variance of the values in array[] |//+------------------------------------------------------------------+double MathVariance(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count<2)
return(QNaN); // need at least 2 observationsif(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- calculate meandouble mean=0.0;
for(int i=ind1; i<=ind2; i++)
mean+=array[i];
mean=mean/data_count;
//--- calculate variancedouble variance=0;
for(int i=ind1; i<=ind2; i++)
variance+=MathPow(array[i]-mean,2);
variance=variance/(data_count-1);
//--- return variancereturn(variance);
}
//+------------------------------------------------------------------+//| Computes the skewness of the values in array[] |//+------------------------------------------------------------------+double MathSkewness(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count<3)
return(QNaN); // need at least 3 observationsif(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- calculate meandouble mean=0.0;
for(int i=ind1; i<=ind2; i++)
mean+=array[i];
mean=mean/data_count;
//--- calculate variance and skewnessdouble variance=0;
double skewness=0;
for(int i=ind1; i<=ind2; i++)
{
double sqr_dev=MathPow(array[i]-mean,2);
skewness+=sqr_dev*(array[i]-mean);
variance+=sqr_dev;
}
variance=(variance)/(data_count-1);
double v3=MathPow(MathSqrt(variance),3);
//---if(v3!=0)
{
skewness=skewness/(data_count*v3);
//--- return skewnessreturn(skewness);
}
elsereturn(QNaN);
}
//+------------------------------------------------------------------+//| Computes the kurtosis of the values in array[] |//+------------------------------------------------------------------+double MathKurtosis(constdouble &array[],constint start=0,constint count=WHOLE_ARRAY)
{
int size=ArraySize(array);
int data_count=0;
//--- set data countif(count==WHOLE_ARRAY)
data_count=size;
else
data_count=count;
//--- check data rangeif(data_count<4)
return(QNaN); // need at least 4 observationsif(start+data_count>size)
return(QNaN);
//--- set indexesint ind1=start;
int ind2=ind1+data_count-1;
//--- calculate meandouble mean=0.0;
for(int i=ind1; i<=ind2; i++)
mean+=array[i];
mean=mean/data_count;
//--- calculate variance and kurtosisdouble variance=0;
double kurtosis=0;
for(int i=ind1; i<=ind2; i++)
{
double sqr_dev=MathPow(array[i]-mean,2);
variance+=sqr_dev;
kurtosis+=sqr_dev*sqr_dev;
}
//--- calculate variance
variance=(variance)/(data_count-1);
double v4=MathPow(MathSqrt(variance),4);
if(v4!=0)
{
//--- calculate kurtosis
kurtosis=kurtosis/(data_count*v4);
kurtosis-=3;
//--- return kurtosisreturn(kurtosis);
}
elsereturn(QNaN);
}
а теперь их нет в этом листнге, просмотрел в других листингах каталога Math, но там тоже этих функций не нашел.
Alexey Viktorov: А зачем они там нужны если есть весь набор математических функций.
Прежде чем отвечать сравните с теми, что выложены мной в листинге. Кстати в справке к стандартной библиотеке эти функции указаны, поэтому больше похоже, что кто то случайно затер.
Прежде чем отвечать сравните с теми, что выложены мной в листинге. Кстати в справке к стандартной библиотеке эти функции указаны, поэтому больше похоже, что кто то случайно затер.
Ответ из сервисдеска получен, данные функции из стандартной поставки библиотеки удалили целенаправленно, вопрос снят. Еще справку нужно привести в соответствие, а то время иногда теряется на поиск того, чего уже нет из функционала.
2. Создаем прямоугольник по координатам времени от 7:50 до 8:05 сегодняшнего дня (звучит как бред, но это так). Ставим галочку "Отображать объект как фон" в настройках прямоугольника;
3. Нажимаем кнопку "Отступ графика от правой границы";
4. Начинаем прокручиватьграфик в сторону уменьшения дат от самой правой границы (до момента, пока не будет виден прямоугольник) и обратно (кнопка "Отступ графика от правой границы" НАЖАТА);
5. Да, нужно, чтобы размер свечей был 2-3 (достаточно крупные, но не самые крупные));
Получаем исчезновение прямоугольника и его появление...
@Vladimir Karputov попробуйте сделать то, что я описал выше, если не получится - сделаю скриншоты, которые Вы просили...
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Не вижу противоречия.
Противоречия с чем?
Я показал отрицательный баланс в тестере. Кроме того, эквити уходило ниже нуля. Надо полагать, что это баг.
Ни чего не пойму, версия МТ5 1545. В прошлых версиях в листинге Math.mqh были функции:
а теперь их нет в этом листнге, просмотрел в других листингах каталога Math, но там тоже этих функций не нашел.
Их убрали вообще или случайно затерли?
проверил до версии 1554 МТ5, та же история, этих функций больше нет
А зачем они там нужны если есть весь набор математических функций.
Прежде чем отвечать сравните с теми, что выложены мной в листинге. Кстати в справке к стандартной библиотеке эти функции указаны, поэтому больше похоже, что кто то случайно затер.
Прежде чем отвечать сравните с теми, что выложены мной в листинге. Кстати в справке к стандартной библиотеке эти функции указаны, поэтому больше похоже, что кто то случайно затер.
Ответ из сервисдеска получен, данные функции из стандартной поставки библиотеки удалили целенаправленно, вопрос снят. Еще справку нужно привести в соответствие, а то время иногда теряется на поиск того, чего уже нет из функционала.
Как такое может быть? Открываю демо счет на одном сервере компании btc-e.com, а он открывается совершенно на другом сервере другой компании!

btc-e предоставляют МТ4 бридж на их биржу. fxopen одни из тех кто его использует и наверное были первые кто стал.
Подозреваю что btc-e договорились с ними чтобы не мучаться с демо счетами. А может уже и полностью через них на МТ4 работают.
Всем привет. Проверьте, пожалуйста, рисуются ли сегодня у Вас по фьючерсу РТС прямоугольники! Очень ВАЖНО!
Прямоугольник должен полностью лежать в пределах сегодняшнего дня!
Да, должна быть установлена опция "Рисовать объект как фон"!
Пожалуйста, укажите дополнительные данные: таймфрейм, скриншот "Настройки" - "Графики", скриншот параметров прямоугольника (вкладки "Общие", "Параметры", "Отображение").
Пожалуйста, укажите дополнительные данные: таймфрейм, скриншот "Настройки" - "Графики", скриншот параметров прямоугольника (вкладки "Общие", "Параметры", "Отображение").
Извиняюсь, тут похоже моя ошибка...
Нет, ошибка разработчиков:
1. Открываем чистый график фьючерса РТС М1;
2. Создаем прямоугольник по координатам времени от 7:50 до 8:05 сегодняшнего дня (звучит как бред, но это так). Ставим галочку "Отображать объект как фон" в настройках прямоугольника;
3. Нажимаем кнопку "Отступ графика от правой границы";
4. Начинаем прокручиватьграфик в сторону уменьшения дат от самой правой границы (до момента, пока не будет виден прямоугольник) и обратно (кнопка "Отступ графика от правой границы" НАЖАТА);
5. Да, нужно, чтобы размер свечей был 2-3 (достаточно крупные, но не самые крупные));
Получаем исчезновение прямоугольника и его появление...
@Vladimir Karputov попробуйте сделать то, что я описал выше, если не получится - сделаю скриншоты, которые Вы просили...