алготрейдинг


алготрейдинг - подход к биржевой торговле, основанный на автоматизации торгового процесса при помощи программных алгоритмов и различных аппаратных решений.

Ниже приведены все записи на нашем сайте по теме алготрейдинга.

А готовы ли использовать чужого робота в торговле?

Приветствую.

В одном из заданий (собрать алго) я давал «болванку» скрипта. абсолютно примитивный контртрендовый скрипт, в сделке меньше минуты проводит и решил на нем тестировать стабильность на бинанс фьюче, так как рынок новый и не знал какие есть в нем косяки. 
не суть в логике торговли. рынок реально новый для меня, и первое что понял, коммисс при торговле лимитками — значительно меньше (в половину) а потому чуток пришлось подшаманить для «экономии» на тестах.
Вначале только на битке торговал, потом добавил эфир. недавно добавил бнб линк и прочие незвучные (для меня) названия более менее активных тикеров.
в целом конечно все более менее стабильно и в исполнении и в «стресс тестах» когда рынки резко припали и их заштормило (+конечно везение)
Но заметил что на эфире чаще всего стабильность стремится к 100% а на битке чаще пропускаются входы если ставится лимитка. 
Ниже агент по битку
А готовы ли использовать чужого робота в торговле?
расчетные цифры из лабы 



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

Построение фронтов Парето на языке R

При оптимизации параметров стратегий, выборе акций, да и во многих других случаях, может возникать необходимость одновременно оптимизировать несколько (возможно противоречивых) показателей. Например:
1. Интересны стратегии с максимальной годовой доходностью, минимальной максимальной просадкой и максимальным коэффициентом Шарпа;
2. Интересны акции компаний, недооцененных рынком и имеющих низкую долговую нагрузку.

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

(На протяжении всей этой статьи я буду ограничиваться лишь случаем максимизации по каждому показателю. Если вам нужна минимизация — для применения представленного кода, очевидно, будет достаточно сменить у соответствующего показателя знак, прежде чем скормить его функции.)

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

Интеграция MatLab Engine и С++ (1)

В сложных вычислительных задачах (или просто при нежелании программировать на Lua, Cpp и т.д., а пользоваться более высокоуровневыми инструментами разработки), незаменимым оказывается API интерфейс Матлаба реализованный в качестве Active-X COM Automation Server.  Для его реализации на языке Си существует специальная библиотека libeng.lib, позволяющая языкам Си, С++, Фортран обмениваться данными и пользоваться всеми ресурсами Матлаба (обычно это обработка видео, автопилоты, ИИ, нейронные сети и т.п.).


Поэтому, в качестве изучения возможностей, попробуем реализовать простейший проект обмена данными и вызова функций Матлаб со стороны Си++ при использовании CodeBlocks и MinGW64.



  • Запуск интерфейса Матлаб

Чтобы адресовать все внешние процессы к единому процессу Матлаб, а не запускать Engine для каждого процесса в отдельности, 
запустим «двигатель» матлаба внутренней командой :

server=actxserver('matlab.application.single'); server.Execute(' enableservice (''AutomationServer'', true)');


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

Индикатор изменения рынка

Индикатор изменения рынка


Анализ криптовалютного рынка по динамике изменения цен отдельных монет не позволяет оценить приток и отток денег в рынок в целом.
Чтобы оценить динамику рынка, в торговый терминал Easytrading встроен разработанный нами индикатор изменения размера рынка.
Горизонтальная линия позволяет отделить положительную динамику от отрицательной.
Зеленым цветом обозначено значение для рынка USDT, белым для BTC.

Индикатор изменения размера рынка позволяет наглядно оценить динамику не по общему объему торгов и изменению цен, но по сложной формуле включающей в себя эти составляющие компоненты.
Известно, что резкое изменение стоимости главной криптовалюты, объемы торгов которой выше 40% от общего, влечет за собой изменения в цене других монет.
Чтобы учесть вклад в динамику изменения всего рынка от каждой монеты, наш индикатор берет во внимание процент изменения цены и объем торгов.
Собирая все данные в одно значение, можно быстро и наглядно оценить приток или отток денег с рынка.

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

Алготрейдинг, Quik и Visual Studio 2017.

    • 24 марта 2020, 14:04
    • |
    • 3Qu
  • Еще
Делаю новую алгоритмическую торговую систему (АТС) под Quik. Базовой в системе является достаточно сложная многопоточная C++ DLL, связывающаяся с Quik через Lua. Для разработки с самого начала использовалась VS 2015. Т.к. в настоящее время перешел на х64 Quik занялся перекомпиляций всего своего х86 софта под Quik на платформу х64.
Все бы ничего, но при больших рыночных потоках данных Quik начинал подтормаживать, а при подключении DDL, Quik подтормаживал еще сильнее и через некоторое время падал вместе с DLL. Переход на х64 существенно улучшил ситуацию, Однако эпизодические падения, значительно реже, но продолжались.
Надо сказать, что все эти многопоточности и были ранее введены в DLL для снижения нагрузки на Quik, чтобы не грузить поток событий терминала. Вся обработка событий заключалась лишь в том, чтобы преобразовать данные получаемые из Lua и отдать их соответствующему потоку для дальнейшей обработки.
В общем, о стабильной АТС приходилось только мечтать, и думать что дальше с этим делать.
У меня на компе давно без дела пылилась Visual Studio 2017. Требований к железу она предъявляет больше чем VS 2015, и я ее использовал считанные разы, скорее, чтобы посмотреть что в ней нового и отличия от VS 2015. Существенных отличий не заметил, и продолжал работать на старой VS 2015.

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Переход на 64-бит Quik. Пляски с DLL. 2.

    • 22 марта 2020, 18:00
    • |
    • 3Qu
  • Еще

Не далее как вчера опубликовал топик "Смена x86 Quik 7.27.2.1 на x64 Quik 8.4.1.6. Пляски вокруг DLL", где кратко рассказывалось как перекомпилировать проект С++ с платформы х86 на х64. Надеюсь, что у вас все уже получилось или получится.
Но я «крутой» программист, и, естественно, у меня вначале вообще ничего и никак не получалось. А так как проект большой, да еще и непонятно в чем дело, а своими экспериментами я могу вообще все испортить, то решил сделать маленькую простенькую DLL LuaProba.dll, на ней отработать переход на х64, и потом перенести это в большой проект.
Привожу код С++ DLL целиком:

// LuaProba.cpp: определяет экспортированные функции для приложения DLL.
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

//=== Необходимые для Lua константы ============================================================================//
#define LUA_LIB
#define LUA_BUILD_AS_DLL

//=== Заголовочные файлы LUA ===================================================================================//
extern "C" {
#include "Lua\lua.h"
#include "Lua/lauxlib.h"
}

static int forLua_TestFunc(lua_State *L) // Возвращает заданный текст
{
        const char *cc = "Привет из C/C++ и от меня 2 раза"; //str.c_str();
        lua_pushstring(L, cc);
        return(1);
}

//= == Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua == == == == == == == == == == == == == == == ==//
static struct luaL_reg ls_lib[] =
{
        { "TestFunc", forLua_TestFunc },
        { NULL, NULL }
};

//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_LuaProba(lua_State *L)
{
        luaL_openlib(L, "LuaProba", ls_lib, 0);
        return 0;
}
Весь проект DLL для VS 2015 можно скачать по ссылке - 

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Общий финансовый анализ на Python (Часть 2)

    • 22 марта 2020, 13:48
    • |
    • Zmey56
  • Еще
Ну что продолжим?

Скользящее окно(Moving Windows)

В заголовке я привел дословный перевод. Если кто меня поправит, и другой термин применяется — то спасибо.

Смысл скользящего окна– с каждым новым значением функция пересчитывается за заданный период времени. Этих функций большое количество. Для примера: rolling.mean(), rolling.std(), которые чаще всего и используют при анализе движения акций. rolling.mean() — это обычная скользящая средняя, которая сглаживает краткосрочные колебания и позволяет визуализировать общую тенденцию.

# Выделяю скорректированную цену закрытия 
adj_close_px = sber['Adj Close']

# Вычисляю скользящую среднию
moving_avg = adj_close_px.rolling(window=40).mean()

# Вывожу результат
print(moving_avg[-10:])
Общий финансовый анализ на Python (Часть 2)
Дальше построим график, чтоб лучше понять то, что получается в результате работы данной функции:
# Вычисление короткой скользящей средней
sber['40'] = adj_close_px.rolling(window=40).mean()

# Вычисление длинной скользящей средней
sber['252'] = adj_close_px.rolling(window=252).mean()

# Построение полученных значений
sber[['Adj Close', '40', '252']].plot(figsize=(20,20))

plt.show()


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

....все тэги
2010-2020
UPDONW