Блог им. Karim |Quik. Индикатор корреляции

    • 02 ноября 2017, 16:21
    • |
    • Karim
  • Еще
Написал на досуге по просьбе одного из участников смартлаба индикатор корреляции.
Индикатор простенький, считает коэффициент корреляции Пирсона
для двух выбранных инструментов на заданном таймфрейме.
Выкладываю исходный код. Может кому то пригодится.

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

Как запустить и настроить:


Архив исходника на QLua: https://yadi.sk/d/OxDvAekV3PLn2z
  • обсудить на форуме:
  • QUIK

Блог им. Karim |Дельта. Из Quik в WealthLab

    • 29 июня 2017, 15:56
    • |
    • Karim
  • Еще
Как разрабатывать стратегии на основе дельты или кумулятивной дельты?
Для этого их нужно иметь в программе теханализа.  
Показан способ, как из Quik забрать данные, обработать и перенести в WealthLab,
чтобы получить дельту и кумулятивную дельту в этой программе теханализа.


Блог им. Karim |Quik. Дельта. Как правильно считать.

    • 07 июня 2017, 11:25
    • |
    • Karim
  • Еще

Казалось бы, а в чем проблема, как Quik пишет, так и считать. Написано в таблице всех сделок «Купля», значит покупка и наоборот. То есть, сделку определять по инициатору. Если сделка прошла по биду, значит это продажа. А если по оферу, значит покупка. Это стандартный подход.

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

         Покупатель толкает рынок бидом на верх, набирает позицию, а стандартный индикатор дельты показывает продажу. Что немного искажает истинную картину.

         Предлагается рассчитывать индикатор дельты немного иначе. Если цена сделки выше цены предыдущей сделки (цена растет), то это покупка. И наоборот, если цена сделки ниже цены предыдущей сделки (цена падает), то это продажа.

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

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

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