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

 
ANDREY:

Правильно я понимаю, что сейчас в mql4  инициализировать массивы нужно исключительно  при помощи функции 

не обязательно, но такие вопросы лучше проверять тестовыми скриптами:

void OnStart()
{
   int arr_1[10] = {123};
   int arr_2[10] = {0,1,2,3,4,5,6,7,8,9};
   int arr_3[10];
   ArrayInitialize(arr_3,777);
   ArrayPrint(arr_1);   // 123   0   0   0   0   0   0   0   0   0
   ArrayPrint(arr_2);   // 0 1 2 3 4 5 6 7 8 9
   ArrayPrint(arr_3);   // 777 777 777 777 777 777 777 777 777 777
}
ANDREY:

В учебнике Ковалева написано что инициализировать массив можно одновременно с его объявлением( как я и сделал), без специальной функции.

Ваш вариант в моем примере arr_1 - так можно инициализировать нулевым значением! - а если другим, то первый элемент массива будет значением инициализации, а все остальные нулевыми.

Думаю, что учебник Вам советовал инициализировать как в моем примере arr_2

 

Добрый день.

Необходимо в советнике визуализировать значения используемого в нём индикатора. Не обязательно рисовать его именно так, как он выглядит. Вполне достаточно отметить точками значение индикатора на каждой свече. Попытался сделать это через объект OBJ_ARROW и выяснилось, что точка привязки не может быть по центру объекта. Она либо выше объекта либо ниже объекта. В итоге точки не совпадают с реальными значениями индикатора. Подскажите какое-нибудь решение этой проблемы.

отображение индикатора через OBJ_ARROW

 
Oleg Remizov:

Добрый день.

Необходимо в советнике визуализировать значения используемого в нём индикатора. Не обязательно рисовать его именно так, как он выглядит. Вполне достаточно отметить точками значение индикатора на каждой свече. Попытался сделать это через объект OBJ_ARROW и выяснилось, что точка привязки не может быть по центру объекта. Она либо выше объекта либо ниже объекта. В итоге точки не совпадают с реальными значениями индикатора. Подскажите какое-нибудь решение этой проблемы.

Создайте шаблон со всеми нужными индикаторами и сохраните его с именем tester или с именем советника.

 
Alexey Viktorov:

Создайте шаблон со всеми нужными индикаторами и сохраните его с именем tester или с именем советника.

К сожалению, шаблон мне не подойдёт. Надо чтобы функция отображения индикаторов была включаема / выключаема в настройках, а отрисовка происходила прямо из советника. Чтобы советник можно было переносить одним файлом.

 
Oleg Remizov:

К сожалению, шаблон мне не подойдёт. Надо чтобы функция отображения индикаторов была включаема / выключаема в настройках, а отрисовка происходила прямо из советника. Чтобы советник можно было переносить одним файлом.

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

 
Alexey Viktorov:

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

Да дело не в том, что я не хочу давать файл индикатора. Советник, требующий дополнительных файлов, не опубликовать на Маркете. Да и вообще удобно когда всё необходимое для работы в одном файле.

Кроме того мне не всегда нужно показывать все буферы индикатора, если их несколько. Например, есть индикатор Ишимоку. В нём 5 линий, но для использования в советнике выбирается какая-то одна. И именно её одну и хотелось бы отобразить, а не весь индикатор целиком.

 
Igor Makanu:

не обязательно, но такие вопросы лучше проверять тестовыми скриптами:

Ваш вариант в моем примере arr_1 - так можно инициализировать нулевым значением! - а если другим, то первый элемент массива будет значением инициализации, а все остальные нулевыми.

Думаю, что учебник Вам советовал инициализировать как в моем примере arr_2

Cпасибо за ценную для меня информацию.

 
Oleg Remizov:

Да дело не в том, что я не хочу давать файл индикатора. Советник, требующий дополнительных файлов, не опубликовать на Маркете. Да и вообще удобно когда всё необходимое для работы в одном файле.

Кроме того мне не всегда нужно показывать все буферы индикатора, если их несколько. Например, есть индикатор Ишимоку. В нём 5 линий, но для использования в советнике выбирается какая-то одна. И именно её одну и хотелось бы отобразить, а не весь индикатор целиком.

Ну так для маркета и цепляют индикаторы в качестве ресурса. А зачем он пользователю? Никого не интересует по каким принципам открываются позиции. Если есть желание можете в описании расписать всю стратегию. А надо-ли оно кому-то?

 
Igor Makanu:


Думаю, что учебник Вам советовал инициализировать как в моем примере arr_2

Вот как написано в учебнике Ковалева о инициализации массива одновременно с его объявлением

8.4.4 Инициализация массива 

 Массив может быть инициализирован только константами соответствующего типа.Одномерные и многомерные массивы инициализируются одномерной последовательностью констант, перечисленных через запятую. Последовательность обрамляется фигурными скобками:

int Mas_i[3][4] = { 0, 1, 2, 3,   10, 11, 12, 13,   20, 21, 22, 23 };   

double Mas_d[2][3] = { 0.1, 0.2, -0.3,    -10.2, 1.5, 7.0 };   

bool Mas_b[5] = { false, true, false, true, true }

В инициализирующей последовательности допускается пропуск одной или нескольких констант.

Из учебника , как мне кажется, следует что при объявлении массива  происходит полноценная инициализация массива всеми данными , а не только первый элемент массива.
Если я не правильно понял учебник , буду признателен если укажете что  я недопонял.

 
Alexey Viktorov:

Ну так для маркета и цепляют индикаторы в качестве ресурса. А зачем он пользователю? Никого не интересует по каким принципам открываются позиции. Если есть желание можете в описании расписать всю стратегию. А надо-ли оно кому-то?

А по моим наблюдениям, пользователям нравится, когда советник выводит разную информацию на экран: рисует стрелочки, линии, каналы и прочее для демонстрации бурной деятельности "искусственного интеллекта".)

По индикаторам советник обеспечивает трейлинг. Я хочу этот процесс визуализировать, чтобы пользователю было видно пунктир, по которому тянется StopLoss.