Привет всем !! подскажите - возможно ли написать скрипт который бы брал котировки по определенным валютным парам и подсчитывал что-то наподобие "среднеарифмитического" по этим показателям ?
т.е. ,пример курс валютной пары А - 50 пп, В - 50, С - 150 (50+50+150/3= 83,33)
"курс валютной пары" - это, наверно, размер свечи??? А Вы знаете, что свечи бывают "бычьи" и "медвежьи"? И по этой логике размер свечи может быть, как положительным (бычья свеча), так и отрицательным (медвежья свеча).
P.S. Чего народ по-напридумывает в погоне за "лёгким хлебом"! :)))
Я набросал скрипт, если какие ошибки, пишите сюда, подпилим.
Инструкция:
- В pairs прописываем пары через пробел, максимум 10
- Если ничего не введено, то будут использованы пары, выбранные при прошлом запуске (реализовано через запись в файл)
- Точность цены в Alert'ах задается через #define DIGITS
·
#property show_inputs #define DIGITS 5 // Количество знаков у цены в алертах extern string pairs; int start() { string name[10] = {""}; pairs = StringTrimRight(pairs); pairs = StringConcatenate(pairs, " "); bool input = false; int cur_pos = 0; int edge = StringFind(pairs, " ", cur_pos); if(cur_pos != edge) { input = true; for(int index = 0; edge != -1; index++) { name[index] = StringSubstr(pairs, cur_pos, edge - cur_pos); cur_pos = edge; cur_pos ++; edge = StringFind(pairs, " ", cur_pos); } } int handle; if( ! input ) { handle = FileOpen("last_pairs.csv", FILE_CSV | FILE_READ); if(handle == -1) { Alert("Не удалось открыть файл: last_pairs.csv"); return(0); } for(int i = 0; i < 10; i++) name[i] = FileReadString(handle); } else { handle = FileOpen("last_pairs.csv", FILE_CSV | FILE_WRITE); if(handle == -1) { Alert("Не удалось открыть файл: last_pairs.csv"); return(0); } for(int i_2 = 0; i_2 < 10; i_2++) { if( FileWrite(handle, name[i_2]) < 0 ) { Alert("Ошибка при записи"); return(0); } } } FileClose(handle); double value = 0; int count = 0; string output; for(int i_3 = 0; i_3 < 10; i_3++) { if(StringLen(name[i_3]) != 0) { if(MarketInfo(name[i_3] ,MODE_BID) == 0) { Alert("Имя инструмента не найдено"); return(0); } value += MarketInfo(name[i_3] ,MODE_BID); count++; output = StringConcatenate(output, name[i_3], " "); } } output = StringConcatenate( output, ": ", DoubleToStr(value / count ,DIGITS) ); Alert(output); return(0); }
P.S:
Создайте скрипт и целиком запихните это туда;
Имя файла last_pairs.csv, вдруг конфликт имен (пары, выранные при прошлом запуске);
Если нужно, то лимит количество пар можно сделать настраиваемым (отпишитесь если надо);
Подсчитывается средни Bid, в принципе можно сделать настройкой (bid или ask).
Или речь шла о создании среднего графика? Если так, то можно взять скрипт отсюда https://www.mql5.com/ru/code/10746 и создавать avg историю. Сначала соединить два графика, потом график-результат и третий график и т.д.
Или речь шла о создании среднего графика? Если так, то можно взять скрипт отсюда https://www.mql5.com/ru/code/10746 и создавать avg историю. Сначала соединить два графика, потом график-результат и третий график и т.д.
видимо все я не правильно обьяснил, наверное нужен индикатор который считает , к примеру GBPUSD = 1.5266,USDJPY=98.08,EURUSD=1.3016
1.5266+98.08+1.3016 / 3 (пары или больше до 10)=32,98 и это значение должно в онлайне висеть на графике любом , куда я его добавлю
вот как то так ...
Переделывать как-то желания нет. Но это не сложно, у Вас есть от чего оттолкнуться. Для большей разборчивости добавил комментарии для основных блоков.
#property show_inputs #define DIGITS 5 // Количество знаков у цены в алертах extern string pairs; int start() { string name[10] = {""}; //begin// парсим введенную строку pairs, сохраняем символы в массив name[] pairs = StringTrimRight(pairs); pairs = StringConcatenate(pairs, " "); bool input = false; int cur_pos = 0; int edge = StringFind(pairs, " ", cur_pos); if(cur_pos != edge) { input = true; for(int index = 0; edge != -1; index++) { name[index] = StringSubstr(pairs, cur_pos, edge - cur_pos); cur_pos = edge; cur_pos ++; edge = StringFind(pairs, " ", cur_pos); } } //end// int handle; if( ! input ) { //begin// Ввода не было, формируем name[] из файла handle = FileOpen("last_pairs.csv", FILE_CSV | FILE_READ); if(handle == -1) { Alert("Не удалось открыть файл: last_pairs.csv"); return(0); } for(int i = 0; i < 10; i++) name[i] = FileReadString(handle); //end// } else { //begin// Мы что-то ввели, переписываем файл, источник - name[] handle = FileOpen("last_pairs.csv", FILE_CSV | FILE_WRITE); if(handle == -1) { Alert("Не удалось открыть файл: last_pairs.csv"); return(0); } for(int i_2 = 0; i_2 < 10; i_2++) { if( FileWrite(handle, name[i_2]) < 0 ) { Alert("Ошибка при записи"); return(0); } } //end// } FileClose(handle); //begin// Рассчитываем среднее значение (value), формируем пояснительную строку (output) double value = 0; int count = 0; string output; for(int i_3 = 0; i_3 < 10; i_3++) { if(StringLen(name[i_3]) != 0) { if(MarketInfo(name[i_3] ,MODE_BID) == 0) { Alert("Имя инструмента не найдено"); return(0); } value += MarketInfo(name[i_3] ,MODE_BID); count++; output = StringConcatenate(output, name[i_3], " "); } } output = StringConcatenate( output, ": ", DoubleToStr(value / count ,DIGITS) ); //end// Alert(output); return(0); }
Здравствуйте!
Ищу программиста с Волгограда или области!!! Если кто есть ответьте, спасибо!Привет всем !! подскажите - возможно ли написать скрипт который бы брал котировки по определенным валютным парам и подсчитывал что-то наподобие "среднеарифмитического" по этим показателям ?
т.е. ,пример курс валютной пары А - 50 пп, В - 50, С - 150 (50+50+150/3= 83,33)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
т.е. ,пример курс валютной пары А - 50 пп, В - 50, С - 150 (50+50+150/3= 83,33)