Избранное трейдера Александр
//Читаем их Excel данные в массив List getParamsFromExcel(string filePath) { //С какой строки начинаем читать данные int start_from_row = 2; //Индекс колонки с Тикером int symbol_index = 1; //Индекс колонки с типом ордера int order_type_index = 2; //Индекс колонки с ценой входа int entry_price_index = 4; //Индекс колонки с ценой стопа int stop_price_index = 5; //Индекс колонки с временем входа int entry_time_index = 7; int current_index = start_from_row; //Текущий символ графика string read_symbol = Bars.Symbol; //Текущий считанный из Excel символ string current_symbol; //Список параметров считанный из Excell List result; result = new List(); //Переменная Excel приложение Excel.Application xlApp; //Переменная рабочая книга Excel.Workbook xlWorkBook; //Переменная рабочий лист Excel.Worksheet xlWorkSheet; //Переменная диапазон Excel.Range range; //Инициализируем переменные xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(filePath); xlWorkSheet = xlWorkBook.Worksheets.get_Item(1); range = xlWorkSheet.UsedRange; //Считываем тикер из Excel current_symbol = (string)(range.Cells[current_index, symbol_index] as Excel.Range).Value2; //Читаем тикеры, пока не наткнемся на пустую строку while(current_symbol != null) { //Если считанный тикер совпадает с тикером графика, на котором запустили робота if(read_symbol == current_symbol) { //Читаем и добавляем параметры ордера result.Add(new OrderParams { ePrice = Convert.ToDouble((range.Cells[current_index, entry_price_index] as Excel.Range).Value2), sPrice = Convert.ToDouble((range.Cells[current_index, stop_price_index] as Excel.Range).Value2), eTime = DateTime.FromOADate((range.Cells[current_index, entry_time_index] as Excel.Range).Value2), pType = ((string)(range.Cells[current_index, order_type_index] as Excel.Range).Value2 == "Short" ? PositionType.Short : PositionType.Long) }); } current_index++; //Считываем очередной тикер current_symbol = (string)(range.Cells[current_index, symbol_index] as Excel.Range).Value2; } //Закрываем рабочую книгу xlWorkBook.Close(true, null, null); //Выходим из приложения xlApp.Quit(); //Уничтожаем созданные объекты releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); return result; } //Уничтожаем переданный объект private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; } finally { GC.Collect(); } }
Первая часть лежит тут… smart-lab.ru/blog/155810.php… думал частично переписать, но решил просто добавить...
1 Основа торговли
Трейдинг — это прогнозирование будущих цен и торговля этого прогноза с целью извлечения прибыли.
Прогнозирование будущих цен можно делать на основе различных методов и способов, например: фундаментального анализа, новостей, цены, объемов, элиотов и прочих методов или их сочетания. В любом случае выделяется параметр наблюдения или ряд параметров на основании которых принимается решение об исходе прогноза.
В конечном итоге, исходы прогноза всего 2 — тренд и контртренд. В случае тренда мы делаем вывод что параметр наблюдения достаточно изменился, чтоб движение продолжилось, а для контртенда на основаниии такого же изменения параметра мы сделаем вывод что движение прекратится и сменится на противоположное.
Для написания индикатора мне потребовался массив типа очередь. Т.е. чтобы не было необходимости задавать размерность массива, можно было добавлять значения без указания индекса в конец и так далее. В C# и C++ есть такая удобная штука как Queue (с разными методами, но с общим смыслом), а вот в MT4 такого нет. Я подумал, что уже не первый раз сталкиваюсь с необходимостью такой очереди. Решил дописать несколько функций, которые мне нужны и из простого массива сделать очередь. Когда несколько функций было написано, я вынес все в файл *.mqh и думал куда бы поместить его, чтобы использовать в дальнейшем во всех своих работах. И тут я обнаружил, что в папке MQL4 (в MT5 все аналогично) уже есть папка Include, которая УЖЕ вкючает в себя расширения для массивов (и не только).
Разобрав все, что связано с массивами я не расстроился, так как тех методов, что мне нужны, я не нашел. Я вынес их отдельно в файлик ArrayDouble_ext.mqh. Добавил три новых функции: нахождение суммы всего массива, поиск максимального и минимального значений массива. Зачем нужны две последние спросите вы? Поясню. Есть стандартная фунция ArrayMaximum, например:
Вложения в золото не совсем правильно называть инвестициями, так как никаких дивидендов от этих вложений вы не получаете, но заработать или сохранить деньги в “жёлтом металле” можно. В определённые моменты, именно золото является хорошим убежищем от разных геополитических и экономических рисков, которых, в ближайшие годы, будет всё больше и больше.
За последние четыре года золото упало более чем на 35% с отметки 1800 долларов, до отметки 1150. Сейчас цена тройской унции торгуется близи отметки 1200 долларов. Столь существенное падение за последние годы было связано, прежде всего, с падением инфляции во всех развитых экономиках. Несмотря на то, что Америка и Япония без перерыва печатала деньги, а теперь вместо Америки это делает Европа, мы до сих пор не видим разгона инфляции, так как в реальную экономику деньги как не шли, так и не идут. Более того, за последние годы, практически все Центральный Банки, для борьбы с дефляцией опустили ставки до исторического минимума и продолжают их там удерживать. Не исключено, что некоторые регуляторы снизят в скором будущем ставки до отрицательного значения. Второй момент, который повлиял на падение золота – это американская валюта, которая укрепилась до многолетнего максимума ко всем валютам. Нельзя забывать, что все сырьевые активы номинированы в долларах, поэтому напрямую зависят от его динамики. Чем слабее американский доллар, тем будет выше стоимость тех активов, которые в нём рассчитываются и торгуются и наоборот, если доллар укрепляется, то все сырьевые активы начинают испытывать давление. За последние три года, индекс доллара (DXY) вырос более чем на 30%, что также оказало существенное давление не только на золото, но и на остальные промышленные металлы, и конечно же на нефть. В свою очередь, именно падение цен на нефть почти в два раза ещё больше подстегнуло падение инфляции в мире, которую всячески пытались разогнать.