//Читаем их 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(); } }
Писал коментарий к посту http://smart-lab.ru/blog/262419.php, но он получается очень объемным. Решил немного расширить и оформить отдельным постом. Возможно, кому-то будет полезным.
Опишу немного нестандартные способы автоматизации трейдинга, фильтрации акций и геренации сигналов для частного трейдинга и неглубокой разработки. В моем понимании из одной задачи вытекают другие.
АПИ платформ, TOS и платные программы описывать не буду. Информации и так очень много в свободном доступе. Кто захочет-найдет.
Первый вопрос — где брать маркет дату. Историческую и в удобном формате.
Совсем бесплатно проблематично найти что то стоящее. Никто не дает маркет дату бесплатно. риал тайм можно брать с яху финанс, через их апи и получать, например, в эксель, но история доступна в дневках только. Риал тайм, без истории в тот же эксель можно тянуть из стерлинга через АПИ или через RTD add in, что проще. Другой костыль — брать АПИ фьюжина(можно демку) и качать историю куда-то. Тут уже нужно писать свой код.
Теперь о платных вариантах
Хочу разобраться в сделках РЕПО. Никогда не имел с ними дело, но интересно понять, как этот инструмент работает. Мне лучше понимается на примере созданных моделей в excel, так как там можно проследить взаимосвязь ячеек в формулах и через это разобраться в механизме работы инструмента.
Выкладываю на суд разбирающейся в вопросе общественности модель РЕПО excel, а также краткое описание этого инструмента. Цель:
1. Проверить мое понимание инструмента. Откорректировать, дополнить.
2. Помочь другим разобраться в вопросе (тем, кто как и я не знаком с РЕПО).
Для начала краткое описание:
РЕПО – это по сути краткосрочный заём под залог ценных бумаг (ЦБ).
Одна сторона (сторона А) хочет получить деньги в займы и продает свои ЦБ по оговоренной цене (рыночная цена минус дисконт) с условием обратного выкупа по заранее оговоренной цене (цена продажи плюс ставка репо) и оговоренной дате стороне Б.
Другая сторона (сторона Б) хочет заработать проценты на своих свободных деньгах, поэтому даёт свои деньги в заём, покупая ЦБ у стороны А (рыночная цена минус дисконт) и продавая их позже этой же стороне А по более высокой цене (цена продажи плюс ставка репо).
Мы обновили платформу, добавив новую функцию — интеграция с Excel. Для тех клиентов Exante, которые предпочитают алгоритмическую торговлю, мы предоставляем интеграцию с Excel, которая позволит импортировать данные из АТП быстро и удобно.
На данный момент, эта функция позволяет переносить следующие данные:
Sub максрос1()
x = 8
Do While Cells(2, 8) <> «123»
Cells(5, x).Value = Cells(2, 8).Value
If Cells(5, x) <> Cells(2, 8) Then
x = x + 1
Else
x = x
End If
Loop
End Sub