Избранное трейдера Роман Давыдов

по

Рисование графиков в С++

Однажды мне нужно было отрисовать пару графиков в консольной программе, написанной на С++. Можно было решить эту проблему двумя способами:
  1. Сохранить график в файле и нарисовать его в экселе или другой софтине, м.б. даже в онлайн рисовалке
  2. Рисовать график прямиком из программы
Первый способ мне не подходил, так как я проводил тестирование алгоритмов, и лишней возней с копированием данных заниматься не хотелось. Второй способ имеет множество решений, но увы я не нашел быстрого решения, чтобы библиотека для рисования не требовала целую кучу зависимостей. Обычно библиотеки для рисования из С++ программы хотят OpenCV или питон с матлабом. Еще как вариант я знаю SFML и ImGUI. Вопрос — нафига столько всего нужно для обычного графика, если по сути нужен OpenGL и все. Решил исправить эту проблему и набросал header-only С++ библиотеку, которая работает в отдельном потоке и способна рисовать графики зависимостей X от Y и тепловые карты. Из зависимостей библиотека требует FreeGLUT.

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

Библиотека С++ для загрузки экономических новостей

Есть один хороший сайт www.investing.com с экономическими новостями, которым пользуются многие трейдеры на Форексе. И решил я как-то раз попробовать посмотреть, что будет на бэктестинге торговли по новостям. Поковырявшись в страничке экономического календаря сделал в итоге С++ библиотеку для загрузки новостей. Для http запросов библиотека использует curl. Новости загружаются по UTC времени, загрузить их можно со времен начала эпохи UNIX

Класс для хранения одной новости:
/** \brief Класс Новостей
*/
class News
{
public:
	std::string name;          /**< Имя новости */
	std::string currency;      /**< Валюта новости */
	std::string country;       /**< Страна новости */
	int level_volatility = -1; /**< Уровень волатильности (-1 не инициализировано,  низкий уровень = 0, средний 1, высокий 2) */
	double previous;           /**< Предыдущее значение */
	double actual;             /**< Актуальное значение */
	double forecast;           /**< Предсказанное значение */
	bool is_previous = false;  /**< Наличие предыдущего значения */
	bool is_actual = false;    /**< Наличие актуального значения */
	bool is_forecast = false;  /**< Наличие предсказанного значения */
	uint64_t timestamp = 0;    /**< Метка времени новости */

	News() {};
};
Для хранения массива исторических данных новостей используется библиотека 

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

Выбор облигации по доходности и риску

Всем добрый день. Записал короткое видео про то как выбрать облигацию по доходности и риску (всего 2 минуты). Надеюсь будет полезно !

 



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

Рубрика конкурса БОТ / иГРЫрАЗУМа 2019 «Задай свой БОТ-вопрос конкурсанту». Участник FateevVV

Коллеги, всем добра! Предлагаю пообщаться в нашей традиционной рубрике вопросов конкурсантов с конкурсантом FateevVV. Участник был заявлен в основной рубрике БОТ, на данный момент времени сумма на счете зафиксирована и работа не ведется. Конкурсант в опционных кругах известен созданием своего замечательного опционного аналитика OptionFVV, работающем в связке с терминалом Quik, переданного автором общественности совершенно бесплатно. Аналитик категорически рекомендуем для изучения тем, кто работает с опционами, там хорошо реализованы некоторые возможности, которых нет даже в серьезных платных аналитиках. В общем, автору респект, виртуально жму руку и всё такое.

Результаты участника:

Рис. 1. График изменений суммы счета.
Рубрика конкурса БОТ / иГРЫрАЗУМа 2019 «Задай свой БОТ-вопрос конкурсанту». Участник FateevVV


Рис. 2. Кривая с учетом вводов-выводов
Рубрика конкурса БОТ / иГРЫрАЗУМа 2019 «Задай свой БОТ-вопрос конкурсанту». Участник FateevVV



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

Использование математических методов для прогнозирования в трейдинге

Использование математических методов для прогнозирования в трейдинге

Этой статьей я хочу дать пищу для размышлений тем трейдерам, которые ищут свой подход к торговле и не пугаются, когда видят формулу и пытаются с помощью нее что то просчитать. Не собираюсь писать нравоучения, устраивать жаркие споры и дискуссии о ТА. Имейте уважение к точке зрения других. В то же время, если будут конструктивные вопросы или дискуссия по теме, которую я здесь затронул, буду рад обсудить по существу.

Много раз видел в сообщениях на смарт-лабе язвительные мнения о прогнозировании с использованием математических методов и вообще отрицание математики в трейдинге. Самое удивительное для меня в таком отношении, это то, что все противники математической формализации, на самом деле, сами занимаются прогнозированием – как направления движения цены (выбор между лонгом и шортом), так и интервалов торговли (цены входа и выхода из позиции). Кто-то делает это интуитивно ( не задумываясь о мыслительных процессах, которые совершает ваш мозг при этом), кто-то смотрит свечки (волны, Фибо и проч.). Сомневаюсь, что трейдер для определения лонг или шорт тупо бросает монетку – типа орел, лонг, решка – шорт (тем, кто так и поступает – просьба дальше не читать ))..). Но ведь графики, свечи, волны – все это способы графического анализа известных параметров торговли, таких как цены открытия, максимум, минимум и закрытия на интервале, объем (есть еще число открытых позиций, суммарный спрос и предложение – о них я говорить здесь не буду). Так уж исторически сложилось, что анализ цен проводился графически. И во времена, когда компьютеров еще не было, графики чертили на кальке, а интерполировали и экстраполировали линейками (были такие специально изогнутые линейки). Просто тогда не было другого способа. А когда компьютеры появились, мнение о том, как надо анализировать уже было основательно сложившимся. И в принципе работало. Добавились различные индикаторы. Короче говоря, сформировался сложившийся ранее подход о том, как надо и каким образом анализировать ситуацию на рынке. Кроме того, традиционный свечной анализ – это же ведь анализ поведения цены на интервале, просто результат выражен графически через свечи, показывающие соотношение цен открытия, максимума, минимума и закрытия (OHLC). Это не какая то абсолютная и независимая догма, а скорее — результат обобщения исторического опыта.



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

О покерных игроках и опционах


Опцион (OTM) — это такое флэш-дро: сам по себе он не имеет никакой ценности (внутренней стоимости), но даёт вам право выиграть банк, если будущие выпавшие карты, составляющие элемент случайности, дополнят ваше дро (draw), до полной комбинации.  Вы платите за дополнительные карты, отдаете временную стоимость оппоненту — владельцу готового фьючерса (внутренней стоимости), и, в случае удачи, выигрываете банк.


О покерных игроках и опционах


Как ни странно, но все игроки в покер начинают изучать азы с волатильности, считая вероятность, с которой OTM-дро станет ITM — флэшом и выйдет в деньги. Для этого даже придумываются специальные калькуляторы, рассчитывающие EV (средний поток выигрышей) на основе Pot-Odds (вероятность исполнения флэш-дро в деньгах), моделируемые методом Монте-Карло и формулой Блэка-Шоулза.

Самые продвинутые игроки, конечно, уже не используют HV и Pot-Odds, заменяя их на IV и Implied Odds, потому что знают, что существует  tail-effect и leverage-effect и часто, после собирания готового флэша из дро, владельцы фьючерсов умудряются ещё несколько раз накуконить в банк до вскрытия (Expiration),  фактически (!) раздаривая деньги. Так, например, на вышеприведённой картинке вполне оправдана покупка опциона (Call) для красного игрока.

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

В помощь QLUA-водам. Функция чтения CSV файла.

    • 21 ноября 2019, 12:01
    • |
    • Egorax
  • Еще
В былую давность пытался решить вопрос с интерфейсом для QLUA.
Испробовал IUP, VCL и еще какая-то библиотека была. Но ни одна библиотека стабильно не работала, через какой-то промежуток времени Квик вставал колом.


Т.к. нам красоты не надо, а удобство хочется, то решил пусть интерфейсом будет Excel(файл.CSV).

В помощь QLUA-водам. Функция чтения CSV файла.


Вот вам функция для чтения CSV файлов:

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

-----------------------------
function File_Read(filename)


local col = 1
local pat = "(.*)"
local A={};local B={};local C={};local D={};local E={};
local F={};local G={};local H={};local I={};local J={};
local K={};local L={};local M={};local N={};local O={};
local P={};local Q={};local R={};local S={};local T={};
local file, err = io.open(filename,«r»)
if err ~= nil then PrintDbgStr(«err read file: »..err); return; end
str = file:read()
for var in string.gmatch (str, ";") do col=col+1 end
for i = 2, col do pat = pat..";(.*)" end
for line in io.lines(filename) do
--PrintDbgStr(line)
local _,_,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20 = string.find(line,pat)
--PrintDbgStr(tostring(s1))
table.insert(A,s1);table.insert(B,s2);table.insert(C,s3);table.insert(D,s4);table.insert(E,s5);
table.insert(F,s6);table.insert(G,s7);table.insert(H,s8);table.insert(I,s9);table.insert(J,s10);
table.insert(K,s11);table.insert(L,s12);table.insert(M,s13);table.insert(N,s14);table.insert(O,s15);
table.insert(P,s16);table.insert(Q,s17);table.insert(R,s18);table.insert(S,s19);table.insert(T,s20);
end
file:close()
table.remove(A,1);table.remove(B,1);table.remove(C,1);table.remove(D,1);table.remove(E,1);
table.remove(F,1);table.remove(G,1);table.remove(H,1);table.remove(I,1);table.remove(J,1);
table.remove(K,1);table.remove(L,1);table.remove(M,1);table.remove(N,1);table.remove(O,1);
table.remove(P,1);table.remove(Q,1);table.remove(R,1);table.remove(S,1);table.remove(T,1);
--Print_Table® Print_Table(S) Print_Table(T)
return A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T
end

 



-------------------------------


Во время работы робота смело изменяем CSV файл и сохраняем, и новые параметры у вас в роботе.
CSV файл можно держать открытым.



  • обсудить на форуме:
  • Quik Lua

Опционы для новичков. Как забить болт на Б-Ш?

    • 20 ноября 2019, 09:01
    • |
    • KarL$oH
  • Еще
Сегодня я отвечу на тривиальный вопрос, на который наши гуру-математики со смартлаба почему-то так и не смогли найти решения методом дифференциирования афинно-квадратичных функций: Как торговать опционы не используя Б-Ш?

Другими словами, как забить болт на формулу Блэка-Шоулза и при этом спать спокойно, осознавая, что не в пирогах счастье, Карлсон (зачеркнуть)?

Для этого необходимо разобраться всего лишь в двух опционных понятиях: внутренняя (intrinsic value) и временная стоимость (time value).

Чтобы было удобнее работать с этими понятиями также напомню, что опционы бывают трёх типов: otm (out of the money), atm (at the money), itm (in the money).

Вне денег, около денег и в деньгах.

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

С itm все понятно, опционы в деньгах, когда спот выше цены страйка для купленного call-опциона, например.

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

Любителям опционов

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

Было бы интересно узнать а какие собственно результаты можем давать опционная торговля. Не правда ли? Нашлись добрые люди и протестировали результаты применения различных опционных стратегий на истории. Результаты за 30 лет (1986 — 2016) на картинках ниже

Любителям опционов

Лучше всех (по доходности) себя показала стратегия под кодовым названием BXMD. Это покупка индекса S&P и продажа call-опциона на него с дельтой 30.
Второе место стратегия PUT — это просто продажа пут-опциона на центральном страйке.
В цифрах это выглядит следующим образом



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

ЛЧИ и иГРырАЗУМа. Тяжела и Неказиста... BRENT...



     А куда деваться продавцу (во) времени?


Лосизм крепчал, но было всё неважно. (трейдеры мы!)
И рост на сорок центов – ни о чём. (ваще!)
В лонгах лежат рогатые отважно, (смелые, бл*)
Зарыв в песок всю «морду кирпичом». (страшно)

В руках у нас – отскоки и подскоки. (см. соотв. граф-фик)
Мы тащим нефть на финишный наш страйк (63-й).
Зажаты мёртво оба наши коки. (в простонародье – яйца)
А сдохнем — ставьте погребальный лайк! (и поделом!)

     Бабочка моя 59/63/67 уже не летает, как Великий Кондор Стерх, а лишь подпрыгивает, как полупридавленная мандавошка. Поделом ей. Нехрен крылушки растопырчивать.


ЛЧИ и иГРырАЗУМа. Тяжела и Неказиста... BRENT...


     Игра близится к экспирации. Вот тама цыплятосов всех и сосчитаем. И это будет пока ещё осень (26 ноября). Последняя (шутка) осень…



     Не я… Не он… Не мы...




....все тэги
UPDONW
Новый дизайн