
В нашем блоге мы уже публиковали истории о том, как программисты зарабатывали на фондовом рынке, применяя свои знания новых технологий (например, машинного обучения). В комментариях к подобным материалам некоторые пользователи Хабра говорили о том, что их смущает необходимость рисковать при работе на бирже своими собственными деньгами.
Сегодня мы подробнее расскажем о том, как можно заработать на фондовом рынке, занимаясь только программированием, и не вкладывая собственных средств. Сделать это можно участвуя в специальном конкурсе разработчиков от проекта StockSharp и ITinvest.
Что нужно делать
StockSharp — это open source-платформа для онлайн-трейдинга. Команда проекта совместно с ITinvest приглашают профессиональных разработчиков этим летом посоревноваться друг с другом, разрабатывая новые функции и дополнения к этому продукту.
Условия предельно просты: за каждое изменение (pull request), примененное в репозиторий StockSharp на GitHub, его автору будет выплачиваться денежное вознаграждение. Изменение может являться новой «фичей» для платформы (например, индикаторы технического анализа, стратегии торговли, новый вид графиков и т.д.) или обновление уже имеющейся функции (да-да, тот самый рефакторинг).
Все изменения будут проходить code review от участников проекта StockSharp и после успешного прохождения проверки применены к основной ветке.
Используется единый стиль кодирования, совместимый с Microsoft C#, который является основным языком платформы (кстати, в блоге ITInvest было интересное интервью о том, почему C# и C++ популярны на фондовом рынке).
В качестве примера стиля можно использовать код одного из индикаторов технического анализа (Highest):
namespace StockSharp.Algo.Indicators
{
using System.ComponentModel;
using System.Linq;
using System;
using StockSharp.Localization;
/// <summary>
/// Максимальное значение за период.
/// </summary>
[DisplayName("Highest")]
[DescriptionLoc(LocalizedStrings.Str733Key)]
public class Highest : LengthIndicator<decimal>
{
/// <summary>
/// Создать <see cref="Highest"/>.
/// </summary>
public Highest()
{
Length = 5;
}
/// <summary>
/// Обработать входное значение.
/// </summary>
/// <param name="input">Входное значение.</param>
/// <returns>Результирующее значение.</returns>
protected override IIndicatorValue OnProcess(IIndicatorValue input)
{
var newValue = input.GetValue<decimal>();
var lastValue = Buffer.Count == 0 ? newValue : this.GetCurrentValue();
// добавляем новое начало
if (input.IsFinal)
Buffer.Add(newValue);
if (newValue > lastValue)
{
// Новое значение и есть экстремум
lastValue = newValue;
}
if (Buffer.Count > Length)
{
var first = Buffer[0];
// удаляем хвостовое значение
if (input.IsFinal)
Buffer.RemoveAt(0);
// удаляется экстремум, для поиска нового значения необходим проход по всему буфферу
if (first == lastValue && lastValue != newValue)
{
// ищем новый экстремум
lastValue = Buffer.Aggregate(newValue, (current, t) => Math.Max(t, current));
}
}
return new DecimalIndicatorValue(this, lastValue);
}
}
}
Также можно изучить код коннектора для работы с биткоинами. Дополнительно мы рекомендуем использовать продукт под названием ReSharper, который помогает контролировать качество создаваемого кода.
Прежде чем приступать непосредственно к написанию кода, рекомендуем написать в чат StockSharp сообщение с пометкой «Конкурс» или в раздел фич и почти-фич на GitHub — это позволит обсудить детали планируемого изменения с разработчиками проекта, что повысит шансы на его успешное применение.
Какова награда
За каждое примененное изменение автор будет получать 9 тысяч рублей. Но это еще не все: конкурс продлится до самого конца лета (он закончится 31 августа). После его завершения посредством голосования в группе «ВКонтакте» подписчики сообщества выберут автора лучшего изменения. Этот разработчик дополнительно получит 50 тысяч рублей.
Disclaimer: Изменения, авторами которых являются члены команды StockSharp, не участвуют в конкурсе.
Ссылки в помощь
Почитать больше об алгоритмической торговле и написании торговых роботов можно по следующим ссылкам: