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

по

Python: поиск поддержки и сопротивления

Написал тут питонячью библиотечку небольшую для поиска поддержки/сопротивления.

Там пара алгоритмов для поиска уровней, один алгоритм для скоринга и возможность отрисовать уровни на чарте.

Общая концепция такая:
1. Ищем разворотные точки
2. Обучаем Agglomerative Clustering, собираем уровни из точек

Находит оно примерно следующее:
Python: поиск поддержки и сопротивления


Юзайте в общем. Работает на Python 3.6+

Когда не лень выкладываю что-то по трейдингу в телегу

Пища для размышления. Биржевые аукционы открытия и закрытия

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

Пятница вечер. Отчетик по роботам....

Ура ура ура! Спасибо Трампу, его Твиттеру, Пауэлу, новостям с КНР и всем всем всем кто дернул рынок сегодня!!!  — Циркуль на полетах пятницы «добил» наконец до 50% профиту :)

Пятница вечер. Отчетик по роботам....

Ну а рыбачок… так и идет тихой сапой. Скоро шестьдесят...

Пятница вечер. Отчетик по роботам....

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

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

Как построить систему на контртренде?

    • 08 августа 2019, 18:16
    • |
    • Stoic
  • Еще
Как построить систему на контртренде?
 Я в основном трендовых, пробойных роботов делаю. С ними проблем все больше. 
 Кто может подсказать, как сделать КОНТРТРЕНД?
 Может есть у кого полезные ссылки или идеи?

Вопрос к АЛГОТРЕЙДЕРАМ! Флудильщикам просьба не писать тут!


Ребят, кто по делу, в личку пишите!
Кто знает, как, тоже в личку хотя бы намек!



Просьба к мордерам! В раздел «Тороговых роботов» закиньте плиз! Сенкью!

Обновление w32.dll x64 бита для Quik v8 с поддержкой автологина

    • 31 июля 2019, 23:19
    • |
    • П М
  • Еще
Оказывается в моём предыдущем посте Раздаю x64 lua библиотеки для Quik8, w32 исходники которые я взял с открытого репозитария, были не самые последние.
Как мне подсказали здесь, известнейший скрипт автологина не работал, т.к. ему не хватало нужных функций FindWindowEx, SetFocus и тп

Ну что делать, не фотошопить же объёмы, а? Я просто обновил библиотеку, добавив в неё недостающие функции. Затем нашел более полный исходник.
Там добавлены ещё функции проигрывания звуков. Собрал с этим исходником. 

Автологин теперь работает и в Quik v8

w32.dll


Автологин для Quik 8 x64

Здравствуйте, друзья :)
Автологин для Quik 8 x64


Был у всех нас раньше хороший скрипт Autologin.lua, который авторизовывался автоматически в Quik, но с выходом 8-й версии он работать перестал, т.к. перестала работать библиотека w32.dll. Мы по совету одного из участников нашего сайта решили пойти самым быстрым путем и написали консольное приложение, которое ловит окно авторизации терминала Quik, вводит в него указанные логин и пароль и нажимает кнопку «Войти в систему».
Данное решение очень упрощает жизнь, особенно при алготорговле, когда терминал стоит на выделенном сервере.

Кому интересно, качайте https://quikluacsharp.ru/quik-qlua/qlua-lua-skript-avtomaticheskoj-avtorizatsii/

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

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

Подскажите по индикатору ATR

Всех приветствую! Может кто нибудь будет так добр что растолкует мне по индикатору ATR, т.к. из всех он для меня пока самый непонятный, гуглил читал много статей но не все понятно, в частности меня пока интересует фондовый рынок а везде в многочисленных статьях в инете ATR обьясняется на примере форекса/валютного рынков и опционов а это другая кухня, что представляет из себя значение ATR? некоторое среднее значение величины свечей за рассчитываемый период? т.е. если  значение ATR маленькое значит и свечи маленькие, правильно? Правда если и стоимость одного лота ценных бумаг небольшая и в целом к примеру если отношение величины ATR к стоимости одного лота будет значительным значит получается что свечи инструмента на данном временном интервале имеют значительный размер.
Везде говорится о пункта индикатора, например tlap.com/indikator-atr/
«ATR часто используют для установки адаптивного стоп лосса, как фиксированного, так и плавающего (

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

Обучение с подкреплением (код)

Интересный код, для тех, кто в теме.


Это подборка различных RL алгоритмов в реализации для трейдинга. Если пишете свой алго, возможно, тут есть что позаимствовать. Код, понятное дело, на Python.  Для тех, кто не знает, что такое reinforcement learning — погуглите, это действительно крутая штука. Имхо, это единственная технология machine learning, которая может дать что-то стоящее в трейдинге. Порог входа достаточно серьезный, но дорогу осилит идущий:)

Часть, которая завязана на принятии решении, сильно упрощена, но это реально неплохая стартовая точка.

Раздаю x64 lua библиотеки для Quik8

    • 15 июля 2019, 10:06
    • |
    • П М
  • Еще
В рамках добра. 
Для тех кто любит плюшки на lua.
Пересобрал либины w32.dll и ffi.dll для Квика v8.0
ffi проверил на прилагаемом к ней тесте — работает, w32.dll не проверял, сами скажите если что не так.

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

Исходный код w32.dll не менялся вообще, у ffi я внёс минимальные изменения в заголовочный файл чтобы всё собралось.
Возможны некоторые косяки с изменением размера данных в w32.dll, ранее я ей никогда не пользовался. Проверяйте.
хотя судя по этой теме, проблем скорей всего вообще не будет, обрезать данные можно:
https://stackoverflow.com/questions/1822667/how-can-i-share-hwnd-between-32-and-64-bit-applications-in-win-x64

Исходники брал с гита.
ссылки:
ffi - 
www.dropbox.com/s/mqtpqyhi4b35lcq/ffi.dll?dl=1

w32 -
www.dropbox.com/s/1b6kb98uiad7pnc/w32.dll?dl=1
ps: собирал на windows 10, на более ранних скорее всего не взлетит у вас.
  • обсудить на форуме:
  • Quik Lua

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