Избранное трейдера dimaAg

по

Camarilla Equation. Индикатор для QUIK. Часть 3.

    • 22 августа 2019, 12:29
    • |
    • XXM
  • Еще
Получил такое сообщение:

привет!
у меня в квике стояла камарилла аж с 2014 года, когда вы выложили здесь этот индикатор.
квик обновился до 8 и камарилла пропала.
это не исправить?

Глянул по тэгу https://smart-lab.ru/tag/Camarilla/ и вот они:
1. Camarilla Equation. Индикатор для QUIK.
2. Camarilla Equation. Индикатор для QUIK. Часть 2.

Выкладываю вариант, не зависящий от обновлений QUIK.

-- Camarilla.lua
Settings={
	Name = "Camarilla",
	period = 'D',
	line =
		{
			{Name = "S5", Color = RGB(255, 0, 0), Type = 1, Width = 2},
			{Name = "S4", Color = RGB(255, 165, 0), Type = 1, Width = 2},
			{Name = "S3", Color = RGB(255, 255, 0), Type = 1, Width = 2},
			{Name = "PP", Color = RGB(0, 255, 0), Type = 1, Width = 2},
			{Name = "R3", Color = RGB(0, 191, 255), Type = 1, Width = 2},
			{Name = "R4", Color = RGB(0, 0, 255), Type = 1, Width = 2},
			{Name = "R5", Color = RGB(139, 0, 255), Type = 1, Width = 2},
		}
}

local math_floor = math.floor
local levels = 0
local ydH, ydL, ydC, ydO = {},{},{},{}
local PP, R3, R4, R5 = 0,0,0,0
local S3, S4, S5 = 0,0,0
	local delta = 0
	local cl = 0
local predThisDay=0
local function dTs(t) return 100*(100*t.year+t.month)+t.day; end
local OldDay = ''	-- для выделения начала торгового дня

function Init ()
	local t=getDataSourceInfo()
	local tt = t.interval
	if tt == -3 then 
		message('Месячный график не обрабатывается.',1)
		return 
	end
	return 7
end

function OnCalculate (index)
	local time tt=T(index); ---время из свечи
	--local ThisDay=dTs(tt)	-- дата в формате yyyyMMdd
	local tDay=dTs(tt)	-- дата в формате yyyyMMdd
	local ThisDay = tDay
	if Settings.period == 'W' then
		ThisDay=tt.week_day	-- номер недели
	end
	if index == 1 then
		--message('First ThisDay = '..tostring(ThisDay),1)
		local t=getDataSourceInfo()
		--7.2.5 Функция предназначена для получения информации об источнике данных для индикатора.
		local scale = getSecurityInfo(t.class_code, t.sec_code).scale	--	NUMBER, Количество значащих цифр после запятой
		mul = 10^scale  -- возведение в степень
		local tt = t.interval
		if tt == -3 then tt = 'месяц' 
		elseif tt == -2 then tt = 'неделя'
		elseif tt == -1 then tt = 'день' 
		else
			tt = tt..' мин.'
		end
		--message(t.sec_code..'('..t.class_code..'), цифр после запятой: '..scale..', mul = '..mul..', дата = '..ThisDay,1)
		levels = levels + 1
		if ThisDay ~= OldDay then
			OldDay = ThisDay
		end	
		predThisDay = ThisDay
		--
		delta = H(index) - L(index)
		cl = C(index)
		R5 = (H(index) / L(index))*cl
		calcLevels(index)
		local per = 'daily'
		if Settings.period == 'W' then
			per = 'weekly'
		end
		message('Camarilla '..per..', Т = '..tt..', © xsharp.ru 20.06.2015', 1)
		return
	end
	if Settings.period == 'W' then
		if ThisDay < OldDay then	-- для неделек
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	elseif Settings.period == 'D' then
		if ThisDay ~= OldDay then	-- для дневок
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	elseif Settings.period == 'H4' then
		if ThisDay ~= OldDay then	-- для дневок
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	end
	return S5, S4, S3, cl, R3, R4, R5
end

function round(value)
	return math_floor(value*mul + 0.5) / mul
end

function ThisDayF(index)
	ydC[levels] = C(index)
	if H(index) > ydH[levels] then
		ydH[levels] = H(index)
	end
	if L(index) < ydL[levels] then
		ydL[levels] = L(index)
	end
end

function calcLevels(index)
	ydO[levels] = O(index)
	ydH[levels] = H(index)
	ydL[levels] = L(index)
	ydC[levels] = C(index)
	--
	R3 = cl + delta * 1.1/4
	R4 = cl + delta * 1.1/2
	--
	S3 = cl - delta * 1.1/4
	S4 = cl - delta * 1.1/2
	S5 = cl - (R5-cl)
	--
	R5 = round(R5)
	R4 = round(R4)
	R3 = round(R3)
	S3 = round(S3)
	S4 = round(S4)
	S5 = round(S5)
end
  • обсудить на форуме:
  • QUIK

Российские банки продолжают сокращать свой «шорт» по доллару

Кредитные организации продолжили «сбрасывать» короткие позиции по американской валюте.

По данным Банка России в июне российские банки снизили совокупную балансовую короткую позицию по американскому доллару на 73,2 млрд рублей. В итоге к началу июля она составила 1,9 трлн рублей, чего не было с февраля 2019 г.

Совокупная балансовая позиция на начало месяца (лонг+шорт; млрд. руб.)


Российские банки продолжают сокращать свой «шорт» по доллару

Источник: Банк России

Кредитные организации сделали крупную ставку на рост рубля к доллару в начале текущего года и вплоть до марта постепенно увеличивали ее. Но уже в апреле банки приступили к фиксации прибыли и постепенному выходу из позиций. Так за три месяца они сократили свой «шорт» на 417,6 млрд рублей или на 18%.

Резюме

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



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

Список интересных телеграм каналов для трейдеров и инвесторов.

@MarketTwits – оперативные новости. 
@dohod – аналитическая компания. 
@AK47pfl – рынки Деньги Власть. 
@marketstoday – сборник обзоров со всех областей на английском языке. 
@sistema_news – новости от компании АФК Система. 
@sgcapital  — авторский канал об инвестициях. 
@oil_capital – аналитические обзоры нефтегазовой отрасли и комментарии ведущих экспертов. 
@globalcommodities — комментарии по сырьевым рынкам от УК «Система-Капитал». 
@glhfx — телеграмм-канал о глобальном рынке акций. Автор — Емельянов Никита, Head of Equities в УК «Система Капитал». 
@rusbiotech  — канал о биотехнологиях и фармацевтике. Автор Ушаков Андрей, старший аналитик УК «Система Капитал.» 
@bcs_express — новости про бизнес, акции, инвестиции. Аналитические обзоры и рекомендации от экспертов БКС Экспресс. 

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

Machine Learning. Kaggle соревнование по предсказание цен по американским акциям от Хедж фонда "Two sigma". Мой опыт участия.

Добрый день мои маленькие любители машинлернинга:) Наконец нашел время написать по теме.

Только что закончилось интересное соревнование на Каггле проходившее почти год, в котором я принимал участие и благополучно попал в Топ 1% и занял 20 место. https://www.kaggle.com/c/two-sigma-financial-news/leaderboard .

Machine Learning. Kaggle соревнование  по предсказание цен по американским акциям от Хедж фонда "Two sigma". Мой опыт участия.



Если кто не в курсе про Kaggle, это такая соревновательная площадка, принадлежащая гуглу, на которой различные компании ставят задачи связанные с анализом данных, и датасайтесты со всего мира соревнуются кто лучше решит. Похоже на наш ЛЧИ, только по машинлернингу. Призовой фонд на каждое соревнование как правило 10-100 тыс. долларов. (в этом конкретном было 100 тыс.). Одновременно проходит 5-10 соревнований.
Суть всех заданий примерно одна, участникам дают трэйн выборку, с известной целевой переменной и тестовую выборку без целевой переменной, которую надо предсказать.

Хедж фонд «Two Sigma» в этом соревновании поставил следующую задачу: необходимо предсказать для каждой американской акции, на сколько она будет лучше или хуже рынка, значение может принимать значение в диапазоне [-1,1] — это и есть целевая переменная, Score соответвенно меряется как усредненное значение по всем акциям и по всем дням, разницы между реальными значениеми и предсказанными целевой переменной из тестовой выборки. Подробней можно почитать здесь

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

Получение котировок и других параметров нашего рынка в google spreadsheets

Для смартлабовца иногда важно вести какие-либо вычисления по бумагам в режиме лайв.
Да, есть DDE в Квике, но у меня например нет такой возможности на работе. А в гуглспредшитс можно заглянуть прямо с телефона. Гораздо мобильнее получается.

Про функцию GOOGLEFINANCE слышали многие, там можно например получить курсы валют или какие-то основные акции. Но например цены и прочие параметры облигаций там не получить.

Итак, у нас есть открытые данные Мосбиржи в виде древовидной структуры, которые лежат по адресу https://iss.moex.com/iss/engines/

Если тыркнуть по ссылке, увидим список основных площадок.

Как с этим работать

Допустим, нам нужны котировки какой-нибудь ОФЗ, например 26222.
Облигации — это у нас фондовый рынок или stock 
Открываем ссылку https://iss.moex.com/iss/engines/stock/markets/ там мы увидим все субрынки фондового рынка. Нам нужны bonds
Идем по адресу https://iss.moex.com/iss/engines/stock/markets/bonds, видим список площадок с различными режимами 

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

Качаем данные Питоном: Всемирный банк

    • 25 мая 2019, 12:40
    • |
    • Albus
  • Еще
Всемирный банк выкладывает в открытый доступ тонны экономической статистики. Её можно скачивать, используя язык программирования Питон. Для этого Всемирный банк разработал питоновскую библиотеку wbank. Опишу как ею пользоваться. Писать буду так, чтобы получилось даже у человека, который из этого поста впервые узнал про Питон и Всемирный банк.
Полная документация (в этом посте она не понадобится)
---
Если вы не хотите программировать, то и не надо. Все данные можно получить и без питона и построить красивый график:
Вот, к примеру, ВВП России и Италии:
Качаем данные Питоном: Всемирный банк
Ссылка на этот показатель. Там можно выбирать любые страны. 
Но мы пойдём другим путём! Сложным! Этот путь позволяет строить графики любого вида и анализировать данные так гибко, как только вы захотите.
На выходе у нас получится такой график: ВВП по паритету крупнейших 10 стран мира. Скрипт сам понимает, какие страны крупнейшие:

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

Портфельная оптимизация как бустинг на «слабых» моделях

Часть 2.

В прошлой части мы подбирали такую комбинацию статистических оценок динамики акций, которая давала нам возможность стабильно выбирать портфель акций лучше среднерыночного,  с показателем Шарпа на 26% выше индексного.

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

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

Портфельная оптимизация как бустинг на «слабых» моделях
Рис. 6. Иллюстрация динамики волатильности акций США, входящих в состав индекса S&P 500.

 

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



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

Основы (генерация волатильности , часть 3)

Последние что мы сделаем с нашими ценами. Зададим лимиты по волатильности. Я постараюсь сделать график РИ, дневной, с настоящими характеристиками.  После чего мы сможем проверить на нем различные стратегии.

Мы используем хорошо забытую методику имени Орнштейна-Уленбека. В общем, это основа, из которой все понемногу брали и почетные имена забыли. Качаем файл и смотрим формулу:

https://cloud.mail.ru/public/2TTp/33yg8KSna

Это дифур и его решение. Где х(t) это наша искомая волатильность на следующий день. При этом мы получаем три члена. Альфа «а», которая отвечает за среднее значение и уровень притяжения. Битта «б», отвечает за скорость этого «притяжения» и сигма за границы «коридор». Если вы, когда ни будь, слышали такое название «компрессор лимитер»,  то это оттуда. На листе «ОУ» видны свойства этой формулы. У нас есть некий ряд со средним 5,6. Мы можем задать альфу 5,6 и битту 0,5. Мы получим ряд со средним 5,6, но более «сплоченную» вокруг среднего значения. Чем больше у нас битта, тем ближе мы к среднему значению. Можете поменять цифры в зеленой зоне и посмотреть, кто за что отвечает.



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

Позор мне, позор...

    • 09 апреля 2019, 11:15
    • |
    • А. Г.
      Проверенный аккаунт
  • Еще
Вот в этой дискуссии я поддался общему настрою и согласился, что у логнормального случайного блуждания среднее приращений исходного ряда больше нуля. НИЧЕГО ПОДОБНОГО! Логнормальное случайное блуждание — это когда приращения логарифмов цен являются независимыми одинаково распределенными случайными величинами. НО! Исходным рядом для этого блуждания являются НЕ цены и их приращения, а ОТНОШЕНИЯ цен

Ct/Ct-1

Ничего удивительного, что у этого отношения математическое ожидание является положительным, так как и в числителе и знаменателе стоят положительные величины. Но только из отношения не перейти к разностям Ct-Ct-1

/*Более того, в силу однозначности логарифма легко доказать, что C1,...,Ct,… — мартингал, тогда и только тогда, когда  LN(C1),...,LN(Ct),… — мартингал.

(как правильно заметили в обсуждении, в общем случае я ошибся в этом утверждении, но оно верно в случае схемы Кэптейна Ct=C

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

Завтра Московская опционная конференция

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

План

Завтра Московская опционная конференция

Мне очень сложно судить о публике. Поэтому зайдем издалека. Я не буду говорить, что рынок случает. Хотя тема интересная. Меня убедили. Только остался один вопрос. Как те, которые знают, что рынок не случаен, совершают отрицательные сделки. То есть встают с утра и зная, что сегодня в вверх, поэтому надо продавать, а то на рынке деньги закончатся и я не смогу больше зарабатывать. Но не будем об этом. Скажем так рынок вероятностный. Соответственно мы будем использовать закономерности из теории вероятности. Предмет нашего рассмотрения это логприращения к цене БА. То есть мы берем логарифм цены закрытия сегодня и отнимаем логарифм закрытия цены вчера. Получается число. Почему логарифм, я раскрывать не буду, а то мы уйдем в дифуры. Но, скажем, это удобно. Мы потом можем суммировать все числа и получить изменение за период. Это проще чем проценты. Второе, что мы возьмем, это квадрат этого приращения или второй момент.  Это нам позволит сравнивать средние значения и оценивать разброс.



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

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