Суть: Коллеги, предлагаю нативный совместный (shared) доступ (API) к провайдеру исторических биржевых данных IQFeed www.iqfeed.net за $20 в месяц.
Только исторические данные (тики бид-аск-трейд, минутки OHLCV и выше). Не real-time, не Level II.
Проект: некоммерческий, складчина. Технически уже всё работает.
Просьба: если тема Вам не интересна, но Вы знаете кому может быть полезна – дайте ему знать. Отдельное спасибо за ссылки-репосты.
История: Тики (bid-ask, миллисекунды, код сделки, extended hours) — до 180 дней, Минутки… Дневки, Недельки — с середины 2000х (минутки, как правило, с 2007го). Мировые фьючерсы (большинство). Опционы. Американские, Канадские, Лондонские акции (non-adjusted). Индексы… список столь длинный (сотни тысяч позиций), что проще проверить в режиме Free trial (см. в конце).
Форекса — нет (не подписаны, у Айкьюфида так себе данные по качеству).
Данные специально неотфильтрованы.
В общем, TSLab в прошлом, а ведь только недавно это было самое что ни на есть настоящее, я немного ветреный)). Не успев особо углубившись в платформу понял, что это не то, что кубики — это очень ограниченно, а от людей узнал, что на этапе торговли тоже хватает проблем в платформе. И я продолжил поиск. Совсем слегка расстроился, что купил платный курс по платформе, но целеустремленного человека так просто не сломить)), тем более опыт интересные и не бесполезный, интересные идеи и мысли почерпнул.
Собственно, что имеем, у меня пробел в технической части, я не технарь, не кодер, для меня синтегрироваться с торговой платформой, с Plaza-2 и т.д. пока нереализуемо. В то же время я устал метаться между платформами, между вариантами реализации торговой алгоритмической инфраструктуры, между разными костыльными решениями. В общем сейчас я определился со входящими параметрами, мне нужна мощная готовая платформа для аналитики, тестирования, оптимизации стратегий и прочего и чтобы… она же эти стратегии и торговала на реальном рынке, плюс мне надо чтобы кодинг внутри платформы был на C# — классный язык — немного его знаю, + когда проапгрейжу этот язык смогу писать уже свои вещи — свои платформы, свои тестеры и прочее.
Лениво бродив по западному интернету, нашел интересную стратегию, которая своими корнями уходит к некоему Larry Connors. Стратегия построена на простом RSI с периодом 2.
Суть ее в следующем:
покупаем индексный ETF, когда значение меньше 15 на закрытии дня (да, это можно сделать без проблем и проскальзываний на всех ликвидных ETF) и продаем, когда клоуз текущего дня выше хая предыдущего (можете придумать свои выходы, стратегия не очень-то чувствительна к выходам).
В общем MR в чистом виде. И в принципе это должно работать на большинстве ETF развитых рынков.
Тестил на Multicharts.Net, код ниже.
using System; using System.Drawing; using System.Linq; using PowerLanguage.Function; using ATCenterProxy.interop; namespace PowerLanguage.Strategy { public class rsi_2_spy : SignalObject { public rsi_2_spy(object _ctx):base(_ctx){} private IOrderMarket buy_order; private IOrderMarket sell_order; private RSI m_RSI; private VariableSeries<Double> m_myrsi; private ISeries<double> Price { get; set; } protected override void Create() { // create variable objects, function objects, order objects etc. buy_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Buy)); sell_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Sell)); m_RSI = new RSI(this); m_myrsi = new VariableSeries<Double>(this); } protected override void StartCalc() { // assign inputs Price = Bars.Close; m_RSI.price = Price; m_RSI.length = 2; } protected override void CalcBar(){ // strategy logic m_myrsi.Value = m_RSI[0]; if (Bars.Close[0]>Bars.High[1]){ sell_order.Send(); return; } if (m_RSI[0]<15){ buy_order.Send(); } } } }
Урок 1.
Урок 2.
Урок 3.
Урок 4.
Урок 5.
Урок 6. Создание индикатора.
Теперь, когда мы знаем, как форматировать линии и текст на графике, мы можем вернуться к созданию индикатора, который показывает дневные экстремумы. В соответствии с логикой описанной выше, нам нужно найти самый высокий максимум и самый низкий минимум на графике. Самый лучший способ сделать это – взять две переменные, которые будут обновляться по мере того, как график будет рисовать новые вершины и новые минимумы. Трудность заключается в том, чтобы по декларации сбросить и установить значение переменной “High” и “Low” из бара. Для того чтобы сбросить мы используем простую конструкцию “if…then begin…end”. Истинно это выражение будет, если дата в этом баре отличается от даты предыдущего бара. В этом случае это будет каждый первый бар, каждого дня.
Урок 1.
Урок 2.
Урок 3.
Урок 4.
Урок 5. Текст и линии тренда.
Цель данного урока — попрактиковаться в программировании, и создать индикатор, который отслеживает дневные экстремумы. Если вы не читали предыдущие уроки, то я советую вам начать с 1 урока, так в этом уроке будут использованы приемы, описанные в предыдущих уроках.
Как я уже сказал, целью данного урока является создание индикатора, который отслеживает, дневные экстремумы и показывает их на графике. Мы хотим иметь возможность видеть экстремумы текущего дня, а так же показать экстремумы вчерашнего дня на сегодняшних данных. Давайте посмотрим, что нам нужно для этого индикатора, и решим, как лучше сделать этот индикатор:
В сегодняшнем уроке вы узнаете, как менять направление выполнения вашего кода при соблюдении определенных условий. Это возможно при использовании операторов. Вы можете найти их в практически любом языке программирования, по своей сути они являются основой каждой программы. Например, операторы могут быть использованы для того чтобы менять цвет скользящей средней, в зависимости от ей размещения по отношению к цене закрытия бара. Если вы хотите закрыть все позиции по истечении определенного времени, то необходимо использовать операторы. Если вы хотите включить алерт, после выполнения определенного условия, так же необходим оператор. Этот список можно продолжать довольно долго, но я думаю, вы уже поняли, что утверждения не только очень полезны, но и крайне важны. Ни один учебник по программированию не может обойтись без операторов, и поэтому крайне важно хорошо разобраться в них, прежде, чем мы можем перейти к более сложным вещам.
Добро пожаловать на новый урок, на пути освоения MultiCharts и PowerLanguage. Если вы не читали предыдущие уроки, то я бы предложил вам сделать это. Этот урок будет основан на понятиях изложенных в предыдущих уроках. На уроке 02 мы узнали, как можно построить скользящую среднюю на графике. Мы использовали цикл, чтобы просуммировать значения предыдущих баров, которые нужно привести к среднему. Сегодня вы изучите еще один тип цикла. Так же вы узнаете, как использовать редактор для вывода информации в окне отладки.
На первом уроке мы изучили главное окно в редакторе PowerLanguage. Когда вы откроете редактор, то вероятно увидите, что он разделен на три части. Если это не так, то скорее всего вы изменили внешний вид в меню «Вид» (View). Убедитесь, что «Окно отладки» (Output Bar) на месте, так как оно будет нужно нам на этом уроке.