Блог им. XXM |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

Блог им. XXM |Визуализация сделок участников ЛЧИ в Quik. Часть 3.

    • 26 сентября 2016, 17:09
    • |
    • XXM
  • Еще

1. Визуализация сделок участников ЛЧИ-2015 в Quik. 
2. Визуализация сделок участников ЛЧИ-2015 в Quik. Часть 2. 
3. Скачать индикаторы на языке Lua.

Визуализация сделок участников ЛЧИ в Quik. Часть 3.

На ЛЧИ 2016 не запускал, вирусов нет, применяйте, как хотите, не хотите — не применяйте.

UPD 19:17, 26.09.2016:
Написали сообщение: «Индикаторы для ЛЧИ-2016 подходят»


#ДоброПропадает


Блог им. XXM |Индикатор Ratio. На Lua, для QUIK.

    • 13 декабря 2015, 21:57
    • |
    • XXM
  • Еще

Индикатор «Gold/oil Ratio» (количество баррелей нефти, которые можно купить за одну тройскую унцию золота) пользуется успехом у аналитиков, поскольку является одним из индикаторов, сигнализирующих о возросшей вероятности кризиса в экономике.
Ее значение всегда стремится к среднему значению 14,83, как считают некоторые (Forbes).
Индикатор Ratio. На Lua, для QUIK.
Ссылка

Это соотношение (с некоторыми погрешностями) можно увидеть и на терминале QUIK:



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

Блог им. XXM |Лимит колебаний фьючерса.

    • 30 апреля 2015, 18:33
    • |
    • XXM
  • Еще
Есть такая тема в финансовом словаре: Лимит колебаний фьючерса, поэтому добавить особо нечего, кроме рисунка:
Лимит колебаний фьючерса.
и ссылки для скачивания индикатора для QUIK: limit.lua.

Блог им. XXM |Канал Кёльтнера. Индикатор для QUIK.

    • 01 марта 2015, 11:40
    • |
    • XXM
  • Еще

Канал Кёльтнера (англ. Keltner channel) — технический индикатор, состоящий из двух полос, построенных вокруг экспоненциальной cкользящей средней (Exponential Moving Average, EMA), ширина которых зависит от волатильности рынка, определяемой индикатором среднего изменения цены за период (average true range, ATR)
Период вычисления EMA  - 20, ATR — 10 периодов, ширина полосы — две величины ATR.
Можно перенастроить.
Канал Кёльтнера. Индикатор для QUIK.
Представлена версия индикатора, рисующая сигналы на торговлю внутри канала:
1. Продать: закрытие свечи внутри канала а максимум свечи был выше верхней линии канала.
2. Купить: закрытие свечи внутри канала а минимум свечи был ниже нижней линии канала.
Для настройки индикатора на случай торговли на пробой канала наружу, следует направления линий «bue» и «sell» поменять наоборот: параметр Type «Треугольник вверх» с «Треугольник вниз».
Скачать: KeltnerChannel.lua
 


Блог им. XXM |Camarilla Equation. Индикатор для QUIK. Часть 2.

    • 29 декабря 2014, 17:11
    • |
    • XXM
  • Еще
Первая часть: Camarilla Equation. Индикатор для QUIK. 26.12.2014г.
В обновленном варианте индикатора появилась возможность выбора расчета недельных уровней: 
Настройки индикатора:
вкладка «Общие» — «Пользовательские настройки» — period: D/W

 
Camarilla Equation (Daily/Weekly)

Скачать: там же.

Блог им. XXM |Camarilla Equation. Индикатор для QUIK.

    • 26 декабря 2014, 14:44
    • |
    • XXM
  • Еще
Цитата из smart-lab.ru:

Я никогда раньше не торговал по Camarilla Equation, и совсем недавно только прочитал про эти уровни. Перед открытием торгов, начертил уровни H3 L3, было любопытно посмотреть как будет цена себя вести относительно них.
...
Поставил заявку по Камарилла, и через некоторое время был удивлён, как точно цена сходила!
Результат: на 300п. профит больше. Приятно. Жаль только, что всего 10 лотами зашёл… Сегодня буду изучать Camarilla Equation :)
P.S. — спасибо Gugenot!

Рисунок ниже — из запасников smart-lab.ru

Camarilla Equation. Индикатор для QUIK.

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

Блог им. XXM |Номера минутных свеч внутри 20 минутной свечи.

    • 25 декабря 2014, 12:15
    • |
    • XXM
  • Еще
Есть стратегии, по которым длинные позиции могут быть открыты только с пятой по десятую минутную свечи внутри двадцатиминутки.
Могут быть другие моменты, в которых следует учитывать номер бара меньшего тайм-фрейма внутри бóльшего тайм-фрейма. В помощь приходят индикаторы на LUA.
В качестве иллюстрации привожу пример нумерования минуток внутри 20-минуток. 
Номера минутных свеч внутри 20 минутной свечи.

Скачать: http://www.xsharp.ru/indikators

Блог им. XXM |Робот на LUA для QUIK. Торговые сделки по ценовым уровням.

    • 08 сентября 2014, 15:48
    • |
    • XXM
  • Еще
В роботе lbot есть две возможности работы с ценовыми уровнями. Проиллюстрирую настройку в ini-файле на примере сделки покупки актива при снижении до определенной величины 8000 пунктов:
1. OpenLong = {Close} <= {8000}
При этом робот получает указание купить, как только цена актива станет ниже или равно 8000 пунктов.
2. OpenLong = {Close} <= {Level8000}
В этом случае мы должны на график цены добавить индикатор уровня цены, присвоив ему идентификатор «Level8000». Уровень может настраиваться параметром «level».

Текст индикатора: Робот на LUA для QUIK. Торговые сделки по ценовым уровням.
— Level8000.lua

Settings=
{
       Name = «L8000»,
       level = 8000,
       line=
       {
              {
              Name = «Level»,
              Color = RGB(255, 0, 0),
              Type = TYPE_LINE,
              Width = 2
              }
       }
}

function Init()
       return 1
end

function OnCalculate(index)
       if index == 1 then
              t=getDataSourceInfo()
              message(t.sec_code..", level="..Settings.level..", interval="..t.interval,2)
       end
       return Settings.level
end

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