Блог им. 3Qu

Прямая пропаганда Python.

    • 10 февраля 2022, 17:01
    • |
    • 3Qu
  • Еще
Спрашивал многих — на чем вы моделируете и отрабатываете стратегии? Ответы — Луа, С #, Delphi, C++, Java, php и пр.  Хорошие языки, спору нет. Но хороши они для релиза. И лишь немногие при моделировании стратегий работают с Python.
Чем хорош Python?.. Это простота изучения — с нуля можно начать за считанные дни. Это громадные библиотеки — математические, машинное обучения, преобразования, работа с векторами и сложной графикой. Это простота моделирования — слабать стратегию можно за вечер.
Да, когда придет время релиза, придется все это переписывать на другой язык, но библиотеки можно оставить из Python — они оч быстрые, написаны на С++. Интерфейсы ко многим языкам имеются.
Для проверки ваших рыночных гипотез и моделирования стратегий переходите на Python. Чем могу, помогу. Но не обучаю, для этого книги есть- ничего сложного. По книгам и среде посоветую, для начала.

PS. Так, для справки, если покопаетесь в инете, то увидите, что NASA уже почти все пишет и моделирует на Python, и уже потом критические участки кода переводит на С++.
★8
102 комментария
Поддерживаю. 
avatar
 очень удобный язык, особенно c colab и yfinance.
avatar
А где можно посмотреть простейший пример реализации моделирования на Python простейшей стратегии? Может в книге, или еще какой источник? 
avatar
Строгий бык, простейшие можно посмотреть в моих топиках. Посложней — эт не знаю.
avatar
3Qu, последний раз когда я допинывал свой Грааль хватало велслаб и с++, зачем какой-то питон учить
avatar
Строгий бык, => www.backtrader.com/
avatar
потом ещё придумают террагигагерцовые процессоры, классы написаны на питоне, питон написан на с++, с++ написан на с, с написан на асме

количество глюков и ошибок в геометрической прогрессии
avatar
Андрей Первозванный, И тем не менее, никто уже не пишет на Ассемблере, Мало кто пишет на С. так что за питоном будущее и подобными языками. Сложность кода растёт, как и мощности вычислительные, так что на первый план выходит как написать побольше и побыстрее.  
avatar
Зажиточный бюргер, Это вы очень ошибаетесь про си и ассемблер, но для  обычного трейдинга это конечно лишнее :)… что не скажешь о хфт и их фпга девайсах если конечно еще такое делают.
avatar
CloseToAlgoTrading, слышал, что еще делают
avatar
CloseToAlgoTrading, я не очень ошибаюсь я вообще не ошибаюсь. Достаточно взять и посмотреть какую долю популярности раньше ассемблер и с занимали и сейчас.
avatar
Андрей Первозванный, чушь, вообще-то.
avatar

Python тема чё).

Но вообще не совсем корректно. Стратегии пишутся не на языке, а на язык-фреймворк-платформа[-библиотека]. На питоне без какой-то платформы, библиотеки для тестирования именно стратегий ну можно таблички векторно посчитать, распределения построить, графики всякие, но это не стратегии, а если стратегии, то простые, а если не простые то для каждой стратегии нужно заново делать одни и те же телодвижения.

 

Короче язык тут не единственное действующее лицо, вот что хотел сказать. Но питон приятен без сомнений).

avatar
Replikant_mih, => www.backtrader.com/
avatar
Sergeyka, Ну я понимаю, что они есть).
avatar
Александр Матроскин, Сам по себе питон прост, а вот освоение фреймворков может потребовать времени и разных библиотек.
avatar
Зажиточный бюргер, нужные библиотеки тоже быстро находятся и изучаются. Скажем, программирование нейросети, с абсолютного нуля знаний о ПО, у меня заняло вечер. Другие методы МО — примерно все тоже самое.
avatar
3Qu, Программирование каких конкретно нейросетей? Если просто взять чье-то решение и подставить толком не разбираясь что и зачем — может быть и один вечер. 
avatar
Зажиточный бюргер, естественно, с пониманием что делаешь. Результат конкретного применения — это уже другой вопрос, этим можно долго заниматься.
avatar
3Qu, И все же взять готовую вещь и подставить свои цифры — не равно понять как тоже самое сделать что-то новое под свои данные…
avatar
Зажиточный бюргер, это не нужно. Вы же ездите на авто, и можете не до конца понимать его устройство.
Кстати, С++ был придуман именно для того, чтобы использовать ранее разработанные модули не вдаваясь в их внутреннюю структуру.
А, вообще, любую функцию хорошо применять имея представление о том, что она делает, но для этого не обязательно писать ее самому — есть библиотеки.
avatar
Ответы — Луа, С #, Delphi, C++, Java, php и пр.  Хорошие языки, спору нет.

Я бы не назвал lua хорошим языком.
avatar
John Smith, и напрасно. Для своих целей прекрасен.
avatar
И эти цели точно не торговые роботы. Разрабы квика, осчастливившие  пользователей таким прекрасным языком, должны гореть в аду.
avatar
Whalerman, знаю, пробовал, не понравился.
Имхо, R — большая помойка, в смысле библиотек. Возможно там и есть бриллианты, но найти их оч проблематично. Да, и R оч медленный в исполнении.
Ну, и сам язык — это что-то из древних языков.
avatar
Whalerman, недавно видел пост — тут на СЛ кто-то даже на 1С торговые стратегии пишет…
avatar
Mityan, тоже видел.
Ну, у меня первые стратегии (2008 год) тоже на Excel-VBA были, и было достаточно.
avatar
Mityan, Ну если точнее у меня 1С+Pyhon все таки.
Whalerman, у меня тогда медленная стратегия была, не критично. Но тоже порой подвисала.
Это сейчас секунды решают — прибыль/убыток.)
avatar
Whalerman, переходите на Пайтон. С R я лично замудохался работать. Честно, противен был до тошноты. Тут Пайтон попался.
avatar
Ну вооот питонисты проснулись… Хоть бы один чего для трейдинга написал…
avatar
Firetrade, для вас никто ничего писать не будет. Закажи, заплати — лети.©
avatar
3Qu, и выкинь забыли сказать
avatar
Firetrade, у меня для трейдинга на питоне нейросети написаны.
Алексей Никитин, В боевой торговле нейросети используете? Расскажете поподробней? Очень любопытно.
avatar
Replikant_mih, все кто пойдет этой дорогой обречены. Больше тут добавить нечего. 
Алексей Никитин, Ясн)
avatar
Алексей Никитин, применены, наверное.
Они уже написаны в библиотеках, от scilearn до tensorflow.
avatar
Алексей Никитин, не ко мне вопрос, но проще всего НС использовать в качестве программируемой (обучаемой) логики. Т.е., логику не пишешь сам, а она пишется сама, при условии, что ты сам знаешь, какая она должна быть.
avatar
3Qu, вся прелесть нейросетей в том, что каждый пляшет с этим бубном как хочет )))
Whalerman, не знаю. Имхо, плохая идея. Тупиковая.
Я для моделирования кучу сред перебрал, включая и R.
avatar
Как первый язык python прекрасен. Для ресеча вообще огонь. Ну и для не спешного бэк-тестинга и исполнения тоже ок.
avatar
vlad1024, я гигабайтную маркетдату тестирую, очень даже быстрый бектестинг получается )) 
vlad1024, про первый язык очень спорно. Может оболванить без надежды на исцеление.
avatar
Roman Ivanov, во всех топовых западных вузах, идет как первый язык, а дальше уже каждый сам решает надо ему углублять знания или нет. Но я помню как тут советовали первым языком учить C# это вообще финиш.
avatar
Простой? Питон очень сложный язык. Генераторы списков, декораторы функций, метаклассы, монады, мозг взрываеца
avatar
Goreloff, Питон оч простой язык -вхождение за несколько дней с нуля. Все о чем вы говорите, можно оставить на потом без вреда для ваших программ. Чем Питон и ценен.
avatar
Goreloff, ну в других языках реализация подобных вещей вообще зашквар.
Задача lua (хотя я на нем не пишу) это взять сигнал из файла и отправить его в Quik.
А все почему? Потому что писать на нем что-либо больше нескольких десятков строк — верный способ отстрелить себе не только ноги.

Был бы нормальный API, и костылять lua-прокладки бы не пришлось.
avatar
John Smith, возможно, тоже верно. Но и Луа вполне себе ничего. Уходим в ДЛЛ и освобождаем поток Луа. Никаких подвисаний, ничего.
avatar
Спору нет. Он, конечно, лучше чем ничего или какой-нибудь совсем лютый самопал. Опять же свои dll цеплять легко.
avatar
John Smith, Луа уже по замыслу создателей, язык взаимодействия и сценариев. Он здесь на месте, а обработка данных — это изначально не его.
avatar
Whalerman, Есть мнение некоторых людей работающих профессионально в области датасайнс, что это R просто таки бомба и ничего лучше нет.

Я то сам за питон, но проблемы с зависимостями удручает… :( и чем дальше все заходит тем хуже.. 
avatar
CloseToAlgoTrading, R — имхо, в области datascince все о нем благополусно забыли. Скажем, вся астрофизика, а это бешеные по объему и сложности данные — это Питон. NASA- опять Питон. R даже не упоминается.
avatar
3Qu, 
R — имхо, в области datascince все о нем благополусно забыли

Я был тоже такого мнения, но оказывается, что нет, много… довольно много людей им пользуется и считает его намного более гармоничным. Но я думаю он скоро умрет :)
avatar
CloseToAlgoTrading, Думаю, эт по привычке.
Сидел на R, плевался, но пытался работать. Перешёл на Питон, и понял — это самое оно.)
avatar
CloseToAlgoTrading, скорей бы уже ))
avatar
Так с каких книг начинать надо?
avatar
trd-u, чуть попозже же, когда за компом буду.
avatar
По книгам и среде посоветую

3Qu, мне тоже. С чего начать вообще непричастному?
avatar
А какие либы написаны на C++ для python из тех что в статистике используются, скажем?
avatar
_xXx_, у питона вообще С++ по капотом, он весь на нем написан.
Но кроме того есть еще и разница в скорости работы, гигантская. между случаем. когда ты например в цикле  функцию применяешь к каждому элементу итератора, или к массиву numpy сразу. целиком.
Математика. статистика — это библиотеки numpy, scipy, sympy.
Из sympy можно Си-код генерировать даже.
avatar
Mityan, так питон же интерпретируемый язык… Ему что, JIT как в джаве сделали?
avatar
_xXx_, JIT есть в питоне. да.
как конкретно работает — не разбирался

вот взгляните (если будет разборчиво):
возведение в квадрат чисел от 0 до 10000 — 2.7 миллисекунды просто в питоне.
и 15.6 микросекунды с помощью массива numpy



avatar
Mityan, спасибо, мощно.
Обычно в примерах пишут что С раз в 30 быстрее питона.
А тут нампи в 150 раз быстрее питоньего кода.
Т.е. еще в 5 раз быстрее, чем тот же код на С.
avatar
_xXx_, NumPy сам написан на Си. Как он может быть быстрее, чем Си?
avatar
Whalerman, + за R
при всех его недостатках, нравица мне он
avatar
 Придумайте рифму на слово питонисты
avatar
FranzFerdinand, вот однажды из Дубай приезжает ....
Из Дубая как-то раз приезжает…
avatar
сейчас без знания питона (простите программисты ибо я ламер) только региональные финансисты и управы еще обходятся, в Мск без начальных знаний количественного анализа Ты вообще ноль. Думаю через поколение финансистов (адвизори, портфельные управы, инвест советники) которые бы не знали основы Питона и дата сайенса вообще не будет. Язык будущего ИМХО. Тож чуть-чуть моделирую на нем. Реально топ.
avatar
Одна из последовательностей Хофштпдтера, male-female.

Код на пайтоне:

def F(n): return 1 if n == 0 else n — M(F(n-1))
def M(n): return 0 if n == 0 else n — F(M(n-1))

print ([ F(n) for n in range(20) ])
print ([ M(n) for n in range(20) ])

тоже самое на С++

#include <iostream>
#include <vector>
#include <iterator>

class Hofstadter
{
public:
static int F(int n) {
if ( n == 0 ) return 1;
return n — M(F(n-1));
}
static int M(int n) {
if ( n == 0 ) return 0;
return n — F(M(n-1));
}
};

using namespace std;

int main()
{
int i;
vector<int> ra, rb;

for(i=0; i < 20; i++) {
ra.push_back(Hofstadter::F(i));
rb.push_back(Hofstadter::M(i));
}
copy(ra.begin(), ra.end(),
ostream_iterator<int>(cout, " "));
cout << endl;
copy(rb.begin(), rb.end(),
ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}

… DLang

import std.stdio, std.algorithm, std.range;<br /> <br />int male(in int n) pure nothrow { return n ? n - male(n - 1).female : 0; }<br /> <br />int female(in int n) pure nothrow { return n ? n - female(n - 1).male : 1; }<br /> <br />void main() {<br />    20.iota.map!female.writeln;<br />    20.iota.map!male.writeln;<br />}

 

Никакая не рекомендация, так просто, размышления..
Это я к тому, что с++ уж очень безобразен становится последнее время
 
avatar
Отсюда пример взят rosettacode.org/wiki/Mutual_recursion#D
avatar
Всю жизнь пишу на C++, C#, Delphi/Pascal, PL/SQL, недавно на Lua.

Блин, Питона освоить не могу, вот реально, раза три пробовал. Он ваще нелогичный, тупой язык.
avatar
Turbo Pascal, он не тупой, он просто… расслабленный)).


avatar
Turbo Pascal, аналогично. У меня не такой большой перечень  я пишу только на с++. А начало было совсем экзотика  ,  разработка логики контроллеров. Писать приходилось сразу бинарный код. Я думаю что людям  которые пришли в профессию уже во время 14-17 стандарта, питон намного легче заходит .. 
avatar
Andrew Morozov, воще-то, наоборот. Если уже знаешь пару языков, то следующий не проблема. Все языки по сути одинаковые.
avatar
Нувот Вчеранов, пример  безусловно, неудачный. Я имел ввиду тенденции навалилить в продукт фичи, которые на момент создания языка явно не предусматривались. Надо было представить что то из попыток  реализовать рантайм рефлексию в с++, но это много текста .. 
avatar
Не согласен. С основами разбираться  да  не проблема. Пару сотен строк простого кода могу написать на третий день знакомства на любом языке. А вот дальше идут средства разработки, фреймворки, библиотеки и прочее. Это уже несколько иные вещи  требуется приличный срок,, мотивация и время  
avatar
Andrew Morozov, конечно, но не все сразу нужно. Обычно для конкретного проекта все и не требуется.
avatar
Разработчики Python изобрели dll hell во второй раз. С несовместимыми версиями библиотек можно сойти с ума. В одном месте исправил — в другом поломалось.
avatar
deke, не вижу ничего криминального. Любая среда программирования, в этом смысле, аналогична — везде есть несовместимости со старыми версиями.
Короче, наплевать и забыть.)
avatar
3Qu, я такой дичи нигде не встречал, а у меня этого добра навалом и дома и на работе. Огромная цепочка зависимостей, которую менеджер пакетов pip не в состоянии разрешить. Тотальная несовместимость всего и вся — это тоже уникальная особенность питона.
avatar
deke, да, да, весь мир работает, масса организаций, включая NASA, работают — все справляются, одному deke все не так. Случается. Не надо драматизировать.
avatar
3Qu, точно мне одному не нравится? Погугли «Python Dependency Hell»

Для внутренних проектов он хорошо подойдет, но распространять такую поделку конечным пользователям — самоубийство.
avatar
deke, Можно и распространять, в комплекте со всеми используемыми модулями. Как оно и делается.
Я не понимаю, по моему любой софт все аналогично. Скажем, с с++ все тоже самое. Без либ соответствующей версий не пойдет, и надо либы включать в установщик, либо устанавливать отдельно.
avatar
3Qu, Питон все же под Линукс больше заточен, на Винде не все библиотеки есть и нормально разрулить в инсталляторе все зависимости не получится. Я пробовал пару лет назад — запустить получилось только в Linux Subsystem, но после установки второго проекта все рухнуло и Linux больше не запускался. Проще оказалось отдельный VPS под каждый проект запускать, чем виртуальные среды настраивать.

В С++ я рантайм слинкую сразу, а все либы положу в папку программы. И больше никаких проблем и перекрестных зависимостей. Для этого есть redistributable пакеты у нормальных библиотек.

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

А обратная совместимость — это просто песня. У какоего еще языка программирования нарушается совместимость в минорных релизах?
avatar
deke, не пугайте народ, для моделирования стратегий не так много модулей и надо, в основном общего назначения, которые есть в любой ОС.
Собственно, и распространять нам ничего не надо. И бог с ними, с недостатками. Недостатки есть у всего, вопрос лишь, критичны ли они для нашего конкретного применения.
avatar
3Qu, так я разрабатываю продукты для конченых пользователей и смотрю со своей колокольни. Если что-то ковырять у себя дома на коленке, то вопросов нет.
avatar

теги блога 3Qu

....все тэги



UPDONW
Новый дизайн