код


Работа с датой и временем в С++

В свое время для алготрейдерских задач мне нужно было много оперировать датой и временем. Конечно, в С++ и Си есть библиотеки для работы с датой и временем. Но мне захотелось сделать свой велосипед, который бы мог легко и удобно превращать строковое представление времени в метку времени, менять часовой пояс, получать время UTC компьютера, преобразовывать метку времени в стандартный формат даты и времени и обратно и т.д. и т.п. Одним словом, целый спектр задач.

В итоге я сделал библиотеку xtime (ну, громко сказано «библиотека», это всего лишь два файла .cpp и .hpp). Для хранения и преобразования меток времени используется тип данных uint64 либо double, поэтому у данной библиотеки нет проблемы 2038 года.

Используемые типы данных:
  • timestamp_t — тип длиной 64 бита для хранения метки времени.
  • ftimestamp_t - тип с плавающей точкой длиной 64 бита для хранения метки времени с дробной частью секунд.
  • oadate_t - тип с плавающей точкой длиной 64 бита для хранения даты автоматизации (OADate)


( Читать дальше )

Тестирование стратегий для бинарных опционов на истории. Библиотека для С++ и пример с "граалем".

В данной статье будет рассмотрен только технический аспект тестирования стратегий для бинарных опционов. Если вы считаете, что бинарные опционы не предсказуемы, или что брокеры «разводят» трейдеров, то данный пост будет не об этом и просьба не обращать на него внимания. Здесь будет рассмотрен только технический аспект для тех, кто хочет сам тестировать стратегии и проводить эксперименты на БО. Впрочем, используемый код можно адаптировать при желании и под форекс.

Итак, математика бинарных опционов не очень сложная. Тем не менее, проводить тесты будет гораздо  проще, если сделать отдельную библиотеку для тестирования и вообще подготовить «среду», где проводить свои изыскания. Не всегда же строить «велосипед» заново. К тому же, могут быть ситуации, когда ТС использует несколько экспираций опционов во время тестирования сразу, или может отличаться процент выплат и ставок. Поэтому есть смысл выделить «тестер» в виде отдельной библиотеки, несмотря на то что его задача по сути банально считать результат.

( Читать дальше )

API moex

Вопрос к знатокам кода.

Задача как в гугл-таблицу вытащить с сайта moex значение ГО и Стоимость Шага Цены?
Хочу что бы в журнал сделок автоматом подгружались текущие значения

Кодеры как IT-эскорт

Бум «типичных стартапов» и краткосрочные хайпы вокруг бигдат, ботов и лохчейнов выявили любопытную картину.

Нет, то что у множества кодеров и PMов снесло крышу давно и и ЧСВ заменил там мозг — это известно. То, что при всем этом ЧСВ, большая часть кодеров и PMов — это убогие омега-nolife-субстанции, которым бабы не дают, зато про них регулярно пишет Ebanoe.it  — это тоже известно. То, что средний кодер, за вычетом скиллов по коду — это существо глупое, наивное и трусливое — было тоже известно. Спасибо за окончательное просвещение все тому же Ebanoe.it.



( Читать дальше )

Алготрейдинг в опционной торговле на Qlua. (МНОГО КОДА!)

Добрый день, уважаемые алготрейдеры!
Написал на днях некий алгоритм самостоятельного расчета греков опционов на Qlua срочном рынке ММВБ-РТС, которые 
показываются в виде таблицы значений в Quik.

Подскажите, каким образом добавить в этот алгоритм выставление заявок после сравнения расчетных величин с теми, что транслирует биржа?

( Читать дальше )

Тест открытой ТС

Лениво бродив по западному интернету, нашел интересную стратегию, которая своими корнями уходит к некоему 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();
                        }
                        
                }
        }
}


( Читать дальше )

Ретроградный Меркурий + ингрессия Марса = все только начинается.

История развивается по спирали — это утверждение принадлежит древнегреческому писателю и историку Ксенофонту. Высказыванию почти 2500 лет. Мы не станем углубляться в дебри столетий, а посмотрим гораздо ближе. Причем в астрологической развертке.

Наверное, цивилизация дошла до понимания, что чистый метод экстраполяции безнадежно устарел, хотя раньше на него возлагались неимоверные надежды. Экстраполяция — это метод статистического анализа, который позволяет переносить тенденции и связи, которые сложились в прошлом, на текущий период и на перспективу.

Ко мне иногда обращаются программисты, которые понимают, что у астролога могут быть некие алгоритмы, по которым он прогнозирует финансовые рынки. При этом, они знают, что ничего сложного нет в кодировании обычных паттернов. Каждый программер сварганит домашнюю заготовку, которую получит с объяснениями от заказчика. Но фокус в том, что я не открываю секреты, и потому давно не приглашаю новых кодировщиков. С их стороны попытки были, например с применением машинного обучения — искусственного интеллекта, нейро сети. Это наверное хорошо, но в виду моей закрытости (коммерческой тайны)… завершилось ничем. Сейчас модное направление BIG DATA, которое элементарно статистически раскурочит все мои алгоритмы. Но я продолжаю молчать, берегу вселенские секреты.

( Читать дальше )

Для Quik. Авто тейк & стоп. Новый подход, код.

Терминал позволяет разрабатывать самодельные индикаторы, работающие в отдельном потоке. Но индикаторам можно давать и дополнительную нагрузку, реализовывать даже легких роботов-индикаторов, торгующих автономно. Из плюсов – получаем штатное диалоговое окно средствами Квика, что-то рисуем не отходя от кассы…   Не требуется подключения внешних библиотек для работы и отображения диалоговых окон, что повышает надежность и простоту установки.
Для примера сделал вполне рабочую программку авто стоп-тейк. Торговлю для примера на скользящих делать не стал, никому не нужна, а автостоп пригодится. Проверял на собственном реальном счете – работает. Пользуйтесь на здоровье!
   Есть один недостаток: по одному графику инструмента (бумаги) не может работать индикатор, получающий данные извне этого графика (как этот) и луа скрипт с main. Происходит конфликт и  Квик подвисает. Поэтому сейчас становится сложно надежно графически отобразить арбитражный спред например и его торговать. Но эту проблемку разработчики терминала обещают устранить в свежей версии.



( Читать дальше )

....все тэги
UPDONW