if(cell.Value.ToString() == «Unchecked»)
тут мало того что идёт работа со строками так ещё и чтобы сравнивать нужно сначала привести к формату строки. Почему не использовать перечисления? Допустим создать мап где ключём будет перечисление а значением текст(чтобы транслировать в ГУЙ). Тогда бы код выглядел так
if(cell.Value == UNCHECKED)
...где-то в коде
...
enum class ПеречислениеОнлиДляГуя: uint16_t {
UNCHECKED = 65535
}
...
std::map<ПеречислениеОнлиДляГуя, std::string> _;
...
_[ПеречислениеОнлиДляГуя::UNCHECKED] = «Unchecked»;
..._gridDataGrid.Rows[0].Cells[4].Value = _[UNCHECKED]
...
без постоянных преобразований в строки(все ведь в курсе что работа со строками это очень «дорого»). Удобство кода типа ...ToString() это хорошо но в приложениях которые критичны к скорости такие моменты не позволительны. Просто даже наличие ГУЯ в приложении ставит его в конец очереди в плане конкуренции за миллисекунды(не говоря уже о микросекундах) поэтому то что OsEngine «пришёл в коллокацию» это конечно позитивный момент(но только не для тех кто его использует т.к. просто беглый взгляд на код говорит о том что если пытаться таким софтом конкурировать за микросекунды(даже за миллисекунды) то ничего хорошего из этого не получится)
В данной статье рассмотрим новый коннектор OsEngine для получения новостей из каналов стандарта RSS и Atom.
RSS (Really Simple Syndication) и Atom — это два формата синдикации веб-контента, которые позволяют пользователям подписываться на обновления сайтов, блогов и новостных ресурсов через специальные программы-агрегаторы или браузеры.
Если при использовании OsEngine вы хотите в своем роботе получать новости и как-то их использовать, необходимо найти новостной портал с интересующей вас информацией и убедиться в наличии у него RSS канала, который обычно отмечен значком.
def sharpe_ratio(close: Series, benchmark_rate: float = 0.0, log: bool = False, use_cagr: bool = False, period: int = RATE["TRADING_DAYS_PER_YEAR"]) -> float: """Sharpe Ratio of a series. Args: close (pd.Series): Series of 'close's benchmark_rate (float): Benchmark Rate to use. Default: 0.0 log (bool): If True, calculates log_return.
В роботах, особенно с большим кол-вом настроек, бывает, требуется как-то визуально выделить некоторые Параметры и/или разделить их на группы. В OsEngine имеется такая возможность, и сегодня мы рассмотрим доступный функционал, как он выглядит и как им пользоваться.
Знакомиться с функционалом будем на примере робота VisualSettingsParametersExample. Открываем проект OsEngine в Visual Studio и находим файл в папке Robots\TechSamples:
Открываем робота, смотрим Конструктор:
В данной статье будем учиться подключать OsEngine к боевому серверу Мосбиржи по протоколам FIX и FIX/FAST для фондового рынка.
На примере DMA АЛОР брокера.
1. ЧТО ДЕЛАЕМ НА САЙТЕ БРОКЕРА
1. Подключаем услугу DMA (Direct Market Access), или по-русски прямой доступ к рынкам.
Не у всех брокеров такая услуга доступна, о наличии лучше сразу спросить у специалистов техподдержки. Обычно прямой доступ предоставляют брокеры с уклоном в «большую профессиональность». Например, у АЛОРа прямой доступ есть, поэтому будем рассматривать на их примере.
У прямого доступа есть два основных варианта подключения и размещения торгового терминала:
Уже много лет у нас классическая IT компания, базирующаяся на Open Source проекте. Это означает, что в основном мы делаем софт на заказ.
Это в каком-то смысле даже стандарт для Open Source. Сотни и тысячи компаний так живут:
1 – Имеем классный Open Source бесплатный, которым пользуются люди.
2 – Получаем от рынка классные заказы на разработку расширений для него (в нашем случае в основном торговых роботов).
Решили написать для ГАЙДА небольшую серию статей о том, как это работает.
В данной серии постов пойдёт речь о том:
И это введение и оглавление для этой серии!
Оглавление:
В данном посте поговорим о параметрах индикаторов в OsEngine. Какие они бывают. Как их добавлять в индикатор. Как различные типы параметров потом выглядят в пользовательском интерфейсе.
Параметры для индикаторов упрощают и стандартизируют настройку индикаторов в OsEngine. Позволяют несколькими строками кода дать возможность пользователю настраивать индикатор, дают автоматические средства для сохранения настроек между перезагрузками.
Всего в слое создания индикаторов есть четыре различных типа параметров:
Посмотреть на реализацию параметров для индикаторов можно вот в этом классе: