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


Узнал, что продается робот на Lua, «Автологин терминала QUIK».
Продается то, что есть в открытом виде на quik2dde.ru
Выкладываю тут:
-- quik_login.lua
-- Автологин терминала QUIK
-- © http://qui2dde.ru/
-- Версия: 2.0
-- для Quik от версии 7.11.1.5
local w32 = require("w32")
-- логин и пароль для терминала
QUIK_LOGIN = "Uxxxxxxx"
QUIK_PASSW = "yyyyy"
function FindLoginWindow()
hLoginWnd = w32.FindWindow("", "Идентификация пользователя")
if hLoginWnd == 0 then
hLoginWnd = w32.FindWindow("", "User identification")
end
return hLoginWnd
end
timeout = 1000 -- таймаут между попытками поиска окна логина
is_run = true
function OnStop()
timeout = 1
is_run = false
end
function main()
while is_run do
sleep(timeout)
if isConnected() == 0 then
local hLoginWnd = FindLoginWindow()
if hLoginWnd ~= 0 then
local n1 = w32.FindWindowEx(hLoginWnd, 0, "", "")
local n2 = w32.FindWindowEx(hLoginWnd, n1, "", "")
local n3 = w32.FindWindowEx(hLoginWnd, n2, "", "")
local n4 = w32.FindWindowEx(hLoginWnd, n3, "", "")
w32.SetWindowText(n2, QUIK_LOGIN)
w32.SetWindowText(n3, QUIK_PASSW)
w32.SetFocus(n4)
w32.PostMessage(n4, w32.BM_CLICK, 0, 0)
end
end
end
endБлагодарности, как понимаю, следует адресовать swerg 
В свое время у меня была задумка — посмотреть какой в реальности (включая комиссии) спред между спотом и фьючерсом и стОит ли его торговать. Так как, ни С#, ни Lua я, пока, не изучил, то пришлось писАть на Qpile…
Торговый функционал в скрипте не прописывал, поэтому его можно использовать только, как анализатор.
Кому надо – забирайте, так как я решил для себя дальше эту тему не развивать (по крайней мере пока)…
Выглядит интерфейс вот так:

Особенности:
— текущий фьючерс определяется автоматически, в день экспирации автоматически переключается на новый;
— перед использованием надо указать папку в настройках пользователя для расчетов;
— в скобках отражается средний процент за последние 500 замеров для объективности расчетов (цифру можно менять в настройках пользователя);
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. Вернее она всегда показывает немного больше открытых позиций, чем терминал. Как я понимаю, дело во внебиржевых сделках, которые в терминал не попадают.
Информация интересная. На предложение визуализировать её я с удовольствием прикинулся золотой рыбкой. Написан шаблон, генерирующий комплект индикаторов, которые выводят на график историю как сырых данных, так и результат определённых математических действий над ними.
Общество всегда настаивает на необходимости помогать ближнему. Идея помогать людям не обязательно плохая, но и не по умолчанию хорошая. Ниже приведены причины, по которым лично я перестала помогать людям.
