В связи с тем, что данная тема предназначена в основном для начинающих программистов, то желательно коды сопровождать подробными комментариями, чтобы они понимали о чём идёт речь. Подчеркиваю, не ОБЯЗАТЕЛЬНО, а ЖЕЛАТЕЛЬНО. Всем за ранее спасибо!
С уважением, Владимир.
Вроде, всё достаточно прозрачно, но если что-то надо пояснить, готов.
Вроде, всё достаточно прозрачно, но если что-то надо пояснить, готов.
Это не для меня лично, а для тех новичков, которые иногда заходят или ещё будут заходить в данную тему. Если, конечно, это Вам не трудно будет сделать! ))
Продолжаю самообучение. Решил написать скрипт, который определяет - есть ли в окне "Обзор рынка" те символы, которые были заданы мною во входных параметрах. Вот код:
//+------------------------------------------------------------------+//| Test.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"inputstring Symb_1="EURUSDrfd"; //Символ 1inputstring Symb_2="GBPUSDrfd"; //Символ 2inputstring Symb_3="AUDUSDrfd"; //Символ 3inputstring Symb_4="NZDUSDrfd"; //Символ 4inputstring Symb_5="AUDCHFrfd"; //Символ 5inputstring Symb_6="USDCHFrfd"; //Символ 6inputstring Symb_7="EURCHFrfd"; //Символ 7inputstring Symb_8="GBPCHFrfd"; //Символ 8//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---// объявим переменную для хранения количества символов выбранных в MarketWatchint symb_total=SymbolsTotal(true);
for(int i=0; i<symb_total; i++) // переберём символы выбранные в MarketWatch
{
// объявим переменную для хранения имён символов выбранных в MarketWatchstring symb_name=SymbolName(i, true);
// объявим и инициализируем массив для хранения имён символов выбранных в MarketWatchstring arr_symb_name[]= {symb_name};
// получим количество элементов массива arr_symb_name[]int arr_size=ArraySize(arr_symb_name);
// объявим и инициализируем массив для хранения имён символов заданных во входных параметрахstring arr_symb_name_input[]= {Symb_1,Symb_2,Symb_3,Symb_4,Symb_5,Symb_6,Symb_7,Symb_8};
// получим количество элементов массива arr_symb_name_input[]int size_symb_input=ArraySize(arr_symb_name_input);
if(arr_symb_name[arr_size-1]==arr_symb_name_input[size_symb_input-1])
Print(arr_symb_name_input[size_symb_input-1]);
}
}
//+------------------------------------------------------------------+
По моей задумке должны быть выведены на печать все 8 символов, заданных во входных параметрах, из 41 символа, находящихся в окне "Обзор рынка" (они там есть), а выводится только один символ:
Продолжаю самообучение. Решил написать скрипт, который определяет - есть ли в окне "Обзор рынка" те символы, которые были заданы мною во входных параметрах. Вот код:
По моей задумке должны быть выведены на печать все 8 символов, заданных во входных параметрах, из 41 символа, находящихся в окне "Обзор рынка" (они там есть), а выводится только один символ:
Помогите понять, где ошибка!
С уважением, Владимир.
Для 41 итерации принтовал бы на каждой итерации и смотрел. Дешево и сердито.)
Denis Kirichenko #: Какой сложный код, можно голову сломать ))
Имхо, если по-простому, то нужно:
1) собрать в массив все инпуты;
2) создать 2 цикла for, где второй будет вложенным;
3) в первом for перебираем символы из Обзора, а во втором - из массива инпутов;
4) на итерациях сравниваем имена функцией ::StringCompare().
Из уважения к Владимиру специально не пишу код, чтобы автор вопроса подумал ))
Спасибо за подсказку, Денис! Код мне и не нужен. Нужно направление, куда смотреть и над чем думать. А код такой сложный только потому, что бывшие электронщики не ищут легкий путей! Шутка! ))
Кстати, пытался написать решение через цикл в цикле, но что-то пошло не так. )
Спасибо за подсказку, Денис! Код мне и не нужен. Нужно направление, куда смотреть и над чем думать. А код такой сложный только потому, что бывшие электронщики не ищут легкий путей! Шутка! ))
Кстати, пытался написать решение через цикл в цикле, но что-то пошло не так. )
С уважением, Владимир.
Если только для символов из "обзора рынка", то можно было в одном цикле запросить любое свойство символа (например имя).
string name;
if (SymbolInfoString(SymbolName,SYMBOL_NAME,name) && name!=NULL && name!="") {
PrintSymbol("Symbol %s was found",SymbolName);
}
то есть в одном цикле перебирать имена из параметров и спрашивать...
В связи с тем, что данная тема предназначена в основном для начинающих программистов, то желательно коды сопровождать подробными комментариями, чтобы они понимали о чём идёт речь. Подчеркиваю, не ОБЯЗАТЕЛЬНО, а ЖЕЛАТЕЛЬНО. Всем за ранее спасибо!
С уважением, Владимир.
Вроде, всё достаточно прозрачно, но если что-то надо пояснить, готов.
Вроде, всё достаточно прозрачно, но если что-то надо пояснить, готов.
Это не для меня лично, а для тех новичков, которые иногда заходят или ещё будут заходить в данную тему. Если, конечно, это Вам не трудно будет сделать! ))
С уважением, Владимир.
Всем доброго дня и хорошего настроения!
Продолжаю самообучение. Решил написать скрипт, который определяет - есть ли в окне "Обзор рынка" те символы, которые были заданы мною во входных параметрах. Вот код:
По моей задумке должны быть выведены на печать все 8 символов, заданных во входных параметрах, из 41 символа, находящихся в окне "Обзор рынка" (они там есть), а выводится только один символ:
Помогите понять, где ошибка!
С уважением, Владимир.
Всем доброго дня и хорошего настроения!
Продолжаю самообучение. Решил написать скрипт, который определяет - есть ли в окне "Обзор рынка" те символы, которые были заданы мною во входных параметрах. Вот код:
По моей задумке должны быть выведены на печать все 8 символов, заданных во входных параметрах, из 41 символа, находящихся в окне "Обзор рынка" (они там есть), а выводится только один символ:
Помогите понять, где ошибка!
С уважением, Владимир.
Для 41 итерации принтовал бы на каждой итерации и смотрел. Дешево и сердито.)
Привет, Валерий! Спасибо, попробую. ))
С уважением, Владимир.
Какой сложный код, можно голову сломать ))
Спасибо за подсказку, Денис! Код мне и не нужен. Нужно направление, куда смотреть и над чем думать. А код такой сложный только потому, что бывшие электронщики не ищут легкий путей! Шутка! ))
Кстати, пытался написать решение через цикл в цикле, но что-то пошло не так. )
С уважением, Владимир.
Спасибо за подсказку, Денис! Код мне и не нужен. Нужно направление, куда смотреть и над чем думать. А код такой сложный только потому, что бывшие электронщики не ищут легкий путей! Шутка! ))
Кстати, пытался написать решение через цикл в цикле, но что-то пошло не так. )
С уважением, Владимир.
Если только для символов из "обзора рынка", то можно было в одном цикле запросить любое свойство символа (например имя).
string name;
if (SymbolInfoString(SymbolName,SYMBOL_NAME,name) && name!=NULL && name!="") {
PrintSymbol("Symbol %s was found",SymbolName);
}
то есть в одном цикле перебирать имена из параметров и спрашивать...
Проход по базе нужен только если символ не выбран
Если только для символов из "обзора рынка", то можно было в одном цикле запросить любое свойство символа (например имя).
string name;
if (SymbolInfoString(SymbolName,SYMBOL_NAME,name) && name!=NULL && name!="") {
PrintSymbol("Symbol %s was found",SymbolName);
}
то есть в одном цикле перебирать имена из параметров и спрашивать...
Проход по базе нужен только если символ не выбран
Добрый вечер, Максим! За подсказку спасибо. Попробую разобраться и реализовать скрипт, используя Ваш вариант.
С уважением. Владимир.
Какой сложный код, можно голову сломать ))
А зачем два цикла? Разве
уже не работает?