
//Читаем их 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

