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

 
vdv2001:

Сталкнулся с такой проблемой, знакомый попросил написать эксперта, что бы проверить работоспособность ТС. Подумал, напишу в пятерке (удобнее писать + отладчик). Написал, получил такой результат:

 

Думаю отлично, можно переписывать под четверку.

Передрал 1:1. В данной ТС не используются индикаторы, только время и диапазон цены. Результат меня сильно удивил:

 

Период тестирования с 1.01.2000 по сегодня.

Интересно какой тестер показывает правельный результат?

Количество сделок очень большое, поэтому возникает вопрос о спредах - они одинаковы для обоих тестов?

 

Как назначить двумерному массиву значение? Пишу так:

positions[j, 0]=PositionGetInteger(POSITION_MAGIC);

 В результате появляется ошибка: "',' - unexpected token"


 
EvgeTrofi:

Как назначить двумерному массиву значение? Пишу так:

 В результате появляется ошибка: "',' - unexpected token"


Сделайте так:

   double array[2][4];
   array[1][0]=5;
PS. В справке есть примеры объявления массивов.
 

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

Например, значение с плавающей точкой округлить и передать в переменную с целочисленным типом данных. 

При попытке это сделать:

   double Close = iCloseMQL4(Symbol(),Period(), 1);
   double Open =  iOpenMQL4(Symbol(),Period(), 1);
   int Midle=MathRound(MathAbs(Close-Open)/_Point);

 На последней строчке при компилировании возникает предупреждение: "possible loss of data due to type conversion

Его можно как-нибудь избежать? 

 
Rosh:

Сделайте так:

PS. В справке есть примеры объявления массивов.
Спасибо! всё получилось. Но в справке то как раз такой строки 
array[1][0]=5;
 не нашёл!
 
EvgeTrofi:
Спасибо! всё получилось. Но в справке то как раз такой строки  не нашёл!

Может в лоб и не написано, но есть пример объявления многомерного массива, в тексте есть пример обращения к элементу массива:

Массивы

Массив - это индексированная совокупность однотипных данных:

int    a[50];           // Одномерный массив из 50 целых чисел.
double m[7][50];    // Двухмерный массив из семи массивов,
                           // каждый из которых состоит из 50 чисел.
MyTime t[100];      // массив содержащий элементы типа MyTime

 

Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива начинается с 0. Последний элемент одномерного массива имеет номер на 1 меньший, чем размер массива, то есть обращение к последнему элементу массива из 50 целых чисел будет выглядеть как a[49]. То же самое относится и к многомерным массивам – индексация одного измерения производится от 0 до размер измерения-1. Последний элемент двумерного массива из примера будет выглядеть как m[6][49].

 
EvgeTrofi:

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

Например, значение с плавающей точкой округлить и передать в переменную с целочисленным типом данных. 

При попытке это сделать:

 На последней строчке при компилировании возникает предупреждение: 

Его можно как-нибудь избежать? 

Да, сделайте явное приведение типов.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:
Да, сделайте явное приведение типов.
Спасибо! разобрался!!! :)
 
Rosh:

Количество сделок очень большое, поэтому возникает вопрос о спредах - они одинаковы для обоих тестов?

 

Валютная пара EURJPY  в Пятерке тест по Вашим данным.

Четверка - Альпари, минутные данные скачаны с вашего сервера через Архив котировок -> Загрузить.

Очевидно разница в спрейдах есть, но результат уж очень сильно отличается.

НА 2500 сделок разница должна быть в крайнем случае  2500$-5000$ а она 10000$, как говорится не верь глазам своим.

Кстати заключается 1 сделка в день при условии профита не меньше 8 (80 - пятизначных) пунктов.

 
Как в своем профиле поменять email?
Причина обращения: