Settings=
{
Name = "Piton",
N = 100,
legend = "price2",
line =
{
{ Name = "Sint",
Color = RGB(0, 132, 0),
Type = TYPE_LINE,
Width = 1
}
}
}
function Init()
return 1
end
Candles = {};
function OnCalculate(index)
local numCandles = getNumCandles(Settings.legend);
if index <= Settings.N or numCandles <= Settings.N then
return nil;
end
Candles, n, _ = getCandlesByIndex(Settings.legend, 0, index - Settings.N, Settings.N);
if n ~= Settings.N then
return nil;
end
-- Предварительный расчет
sum1, sum2, sum3 = advancePaynemt(index);
-- расчет коэффициента корреляции Пирсона
r = sum3/math.sqrt(sum1*sum2);
return r;
end
-- Предварительный расчет
----------------------------------------
function advancePaynemt(index)
local sum1 = 0;
local sum2 = 0;
local sum3 = 0;
local j = 0;
-- Вычислить среднее арифметическое
for i=index - Settings.N + 1, index, 1 do
sum1 = sum1 + C(i);
sum2 = sum2 + Candles[j].close;
j = j + 1;
end
aver1 = sum1/Settings.N;
aver2 = sum2/Settings.N;
-- Вычислить сумму квадратов отклонений
sum1 = 0;
sum2 = 0;
j = 0;
for i=index - Settings.N+1, index, 1 do
sum1 = sum1 + math.pow(C(i) - aver1, 2);
sum2 = sum2 + math.pow(Candles[j].close - aver2, 2);
j = j + 1;
end
-- Вычислить сумму произведений разности
j=0;
for i=index - Settings.N+1, index, 1 do
sum3 = sum3 + (aver1 - C(i))*(aver2 - Candles[j].close);
j = j + 1;
end
return sum1, sum2, sum3;
end
Как запустить и настроить:
Индикатор крестики-нолики для Quik. Рисуется в отдельном окне.
Основное отличие это отсутствие временной шкалы, что создавало определенные трудности при рисовании в Quik.
Проблему удалось решить, написав отдельную dll, которая забирает данные с Quik, создает свое окно и в нем рисует индикатор.
Демо-версия работает только с фьючерсом сбербанка SR*.
Менять можно шаг и параметр разворота.
Архив демо-версии yadi.sk/d/s0WOWbTr3M6BVW
Индикатор рендж-баров для Quik. Рендж-бар это бар диапазона, то есть новый бар строится,
если цена вышла за заданный диапазон (или рендж). Главное отличие индикатора
отсутствие временной шкалы. Если к таким барам привязывать индикаторы, то они меньше «шумят».
В данном варианте привязана дельта и кумулятивная дельта.
Демо-версия работает только с фьючерсом акций сбербанка. Рендж фиксирован 50п.
Архив демо-версии: yadi.sk/d/2WAihH0R3Lqcmz
Казалось бы, а в чем проблема, как Quik пишет, так и считать. Написано в таблице всех сделок «Купля», значит покупка и наоборот. То есть, сделку определять по инициатору. Если сделка прошла по биду, значит это продажа. А если по оферу, значит покупка. Это стандартный подход.
А если представить, что на рынке есть покупатель, который не хочет брать с офера. Как правило, если большой объем, то ставится бид и, затем он передвигается.
Покупатель толкает рынок бидом на верх, набирает позицию, а стандартный индикатор дельты показывает продажу. Что немного искажает истинную картину.
Предлагается рассчитывать индикатор дельты немного иначе. Если цена сделки выше цены предыдущей сделки (цена растет), то это покупка. И наоборот, если цена сделки ниже цены предыдущей сделки (цена падает), то это продажа.
Если пойти дальше, то можно построить индикатор разницы двух дельт, рассчитанных по-разному. Если на рынке преобладают покупатели и сделки в основном идут с офера, цена растет, то обе дельты покажут покупки, и разница между ними будет минимальна. А если кто-то толкает рынок бидом вверх, а толпа сопротивляется, то одна дельта покажет покупки, а стандартная продажи. Разница между ними увеличится, что будет означать усиление борьбы покупателей и продавцов. В этом случае стоит подождать, и встать на сторону победителя, то есть когда дельты сравняются, зайти в рынок.