function VS() -- функция VS local H_tmp={} -- объявление массива под значения High local L_tmp={} -- объявление массива под значения Low local V_tmp={} -- объявление массива под значения VOLUME local it = {[1]=0, l=0} -- в массив попадают номера свечек, из которых потом ищется нужная свечка где и рисуется индикатор return function (I, Fsettings, ds) -- возвращает значение function (I, Fsettings, ds) local Fsettings=(Fsettings or {}) local Ba = (Fsettings.NUMBER_OF_BARS or 300) -- присваивается значение количество баров или 300 for li=Ba,0,-1 do
Как можно указать чтобы треугольники в индикаторе фрактал располагались не так близко к барам.Т.е. чтобы можно было задавать смещение(отступ) треугольников от HIGH или LOW бара на котором "рисуется" фрактал?
if it.l >= nP then local S = it[Squeeze(it.l-nP+1+math.floor(nP/2),P)] local val_h=math.max(unpack(H_tmp)) local val_l=math.min(unpack(L_tmp)) local L = GetValueEX(S,LOW,ds) local H = GetValueEX(S,HIGH,ds) if (val_h == H) and (val_h >0) and (val_l == L) and (val_l > 0) then return S,S
Здесь у вас производится непосредственно расчет фрактала, т.е. на основании значения переменной S квик поймет на какой свече выводить фрактал, или я не правильно понимаю?
function OnCalculate(Index) local Out1,Out2 = func(Index, Settings) SetValue(Out1, 2, ConvertValue(Settings,H(Out1))) SetValue(Out2, 3, ConvertValue(Settings,L(Out2))) return tonumber(Settings.Horizontal_line),nil,nil end
Я так понимаю что Out 1,2 это индекс свечи на которой будет отображено TYPE_TRIANGLE_UP или TYPE_TRIANGLE_DOWN из Settings.line ? Мне не совсем понятно про ConvertValue(Settings,H(Out1)) и return tonumber(Settings.Horizontal_line),nil,nil
Здравствуйте.Есть вопрос по индикатору фрактал который есть в доступе в файловом архиве с индикаторами.Конкретно по этому куску кода
function FRACTALS() --Fractals ("FRACTALS") local H_tmp={} local L_tmp={} local it = {[1]=0, l=0}
Правильно ли я понимаю что local H_tmp={} -- объявление массива под значения High local L_tmp={} -- объявление массива под значения Low local it = {[1]=0, l=0} -- объявление массива it где 1-му элементу массива присваиваем значение 0, элементу с индексом l присваиваем значение 0
Sergey Gorokhov написал: Settings = { Name = "имя индикатора" , MY_LOVE_PARAMETER = 300, line = { .. .. } } function OnCalculate(indx) if indx < Size () - Settings.MY_LOVE_PARAMETER then return end do_calc(indx) end
При запуске выводит ошибку attempt to compare nil with number
на эту строку if indx < Size()-Settings.MY_LOVE_PARAMETER then return end
Sergey Gorokhov написал: QLUA тут вообще не причем. Т.к. происходит непонимание на уровне того что Вам нужно, а не на уровне кода. Давайте вообще забудем про QLUA и посмотрим обычный терминал QUIK. В обычном терминале QUIK Вы где-нибудь видите нужное Вам значение?
Я так понимаю что в КВИКЕ это Поток обезличенных сделок.В обычном терминале нет доступа на сколько я знаю,если только не запросить у брокера чтобы он траслировал их в терминал
Может мы говорим про разные вещи? Что именно Вы понимаете под термином "тиковый" объем?
Если брать ФОРЕКС и мт4 то "Тиковый объем (англ. tick volume) – это количество тиков за некоторый период времени, соответствующее частоте изменений цены маркет-мейкером рынка и не связанное с объемом сделок." В QLUA я так понимаю можно использовать просто объем который был на каждом баре? Извиняюсь за глупые вопросы,я пока что учусь QLUA
Если Вам нужно получать свежие тики, то они и так попадают в OnCalculate, т.к. он срабатывает при каждом изменении. Если нужно получать тики за прошлые периоды, то это можно получить только через GetItem
Мне надо тиковые объемы текущие и прошлые за количество баров которые я указал в вашей подсказке
Settings = { Name = "имя индикатора" , MY_LOVE_PARAMETER = 300, line = { .. .. } } function OnCalculate(indx) if indx < Size () - Settings.MY_LOVE_PARAMETER then return end do_calc(indx) end
Т.е. по идее у меня индикатор должен работать с 300 (или иным заданным количеством) барами.Не совсем понятно как прописать так чтобы он брал и текущие и прошлые значения тикового объема.
Type = TYPE_TRIANGLE_UP, т.е. у нас на графике будет показываться стрелка вверх.Можно ли в квике сделать чтобы вместо стрелки или линий отображался другой символ например крестик или галочка?
Здравствуйте, К сожалению, Вы не уточнили речь про индикаторы или про обычные lua скрипты. Если речь про индикаторы, то в таблице Settings можно добавлять свои собственные параметры. Если речь про обычные скрипты, то есть несколько вариантов: 1) сделать для скрипта ini файл с настройками. 2) сделать через скрипт таблицу в терминале, и установить на таблицу колбек SetTableNotificationCallback в колбеке ловить все изменения которые происходят в таблице. таким образом можно реализовать отдельную таблицу в которой будут нужные настройки.
Речь про индикаторы.Я правильно понимаю что можно написать так :
Settings = {
Name = "имя индикатора",
Size()=300; line = {.... } }
У меня в функции будет присваиваться переменной количество баров .Т.е. примерно следующее
function main () ........ number Li_32 = Size; for (number Li_40 = Li_32; ..............) ........................ end
Здравствуйте.А если я хочу сделать так чтобы можно было менять количество баров для расчета в самом терминале?Это можно вообще реализовать?Просто я до этого изучал только mql4 для mt4 и там можно было так прописать