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

по

Всем привет! Индикатор для QUIK - нештатный, нашару

Всем привет! 
Чуть о себе: зарабатываю на российском рынке (только для себя), делаю торговые программы (для себя и для других).
Давно читаю Smart-lab, нахожу что-то полезное и интересное. Вот добавлю одну свою легенькую утилитку для Квика, надеюсь пригодится.

Всем привет! Индикатор для QUIK - нештатный, нашару

Индикатор Fractal_Chennal, рисует уровни по «фракталам» с задаваемым периодом. В отличии от штатного  «Fractals» дожидается окончательного формирования формации. Я его использовал в качестве трейлинг-стопа в некоторых программах. Отдает два значения скриптам.
Код:

Settings={
Name = "Fractal_Chennal",
period=5,
line={
{
Name = "Level_High",
Type =TYPE_LINE,-- = LINE --линии  = DASH -- тире  = POINT -- точки
Width = 1,
Color = RGB(0,255, 0)--green
},
{
Name = "Level_Low",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255,0,0)--root
}}}

idx_prosl=0

function Init()
return 2
end

function OnCalculate(idx)
if idx==1 then
P = math.floor(Settings.period/2)*2+1
message("Код бумаги: "..getDataSourceInfo().sec_code.." ; период индикатора: "..P,1)
t_H,t_L={},{}
end
if idx~=nil and idx>P then
if idx_prosl~=idx then
local l=idx-P
for l=l,idx-1 do
t_H[l]=H(l)
t_L[l]=L(l)
end
if t_H[#t_H-(P-1)/2]==math.max(unpack(t_H,#t_H-P+1,#t_H)) then
H_ind_value=t_H[#t_H-(P-1)/2]
end
if t_L[#t_L-(P-1)/2]==math.min(unpack(t_L,#t_L-P+1,#t_L)) then
L_ind_value=t_L[#t_L-(P-1)/2]
end
end
else
H_ind_value=nil
L_ind_value=nil
end
idx_prosl=idx
return H_ind_value, L_ind_value
end
Как пользоваться:

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

Разделитель торговых дней и часов.

Всем привет, вышел я с самовольного бана, хотел до лета посидеть, но уж слишком сильна зависимость. Зависимость от смартлаба собственно единственное почему я ушёл — очень много времени и энергии тратиться попусту на смартлабе если себя не ограничивать… Это сродни переторговке на рынке и выжат как лимон и денег нифига. Ну да ладно, я о другом хотел..

 

Тут в одном интересном блоге скачал парочку индикаторов, которые лично мне упрощают визуальное восприятие графиков. Эти индюки рисуют гистограмму в конце часа или в конце дня, тем самым разделяя визуально дни и часы. Вот так:

Разделитель торговых дней и часов.

Вот текст индикаторов:

Делитель дней:

 

---------------------------------------------------------------------------------------

Settings =
{ [«Name»] = «DayDelimiter»,
line =
{ { Name = «Разделитель»,
Color = 0xff0000,
Type = TYPE_HISTOGRAM,
Width = 2
},
}
}



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

Робот для торговли растущей/падающей MA под Quik.

Робот для торговли растущей/падающей MA под Quik.

Всех приветствую.

Представляю вашему вниманию робота для торговли растущей/падающей скользящей. Данный робот позволит вам торговать движение скользяще средней и автоматизировать свою торговлю. С помощью этого робота можно торговать как трендовые алгоритмы так и контртренд. В этой статье рассмотрим тесты трендовой составляющей, опишу как быстро установить и запустить торговлю.

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

Быстрая заявка в терминале Quik

    • 13 февраля 2016, 19:49
    • |
    • Prodik
  • Еще
Проблема такая, роботу дается команда отправки заявки, пока он соображает что нужно уже делать цена уходит и он ждет по таймауту, чтобы закрыть и начать делать свое дело, но уже с новой ценой. Как можно сделать быстрее робота? Я слышал что можно сделать, чтобы функция  выполнения заявки постоянно работала и как только приходит сигнал действия, он ее выполняет, на данный момент насколько знаю обновление в квике идет с интервалом 1 секунда.
Спасибо за помощь!

На данный момент у меня код такой

' Функция отправки заявки на покупку/продажу
FUNC SEND_ORDER(Operation, Price, Type, SecCode, ClassCode, Quantity)
TRANS_PARAMS = CREATE_MAP()
trans_params = set_value (trans_params, «TRANS_ID», TransID)
trans_params = set_value (trans_params, «ACTION», «NEW_ORDER»)
trans_params = set_value (trans_params, «CLASSCODE», ClassCode)
trans_params = set_value (trans_params, «SecCode», SecCode)
trans_params = set_value (trans_params, «ACCOUNT», Account)
trans_params = set_value (trans_params, «OPERATION», Operation)
trans_params = set_value (trans_params, «PRICE», Price)
trans_params = set_value (trans_params, «Quantity», Quantity)
trans_params = set_value (trans_params, «CLIENT_CODE», ClientCode)
trans_params = set_value (trans_params, «TYPE», Type)
trans_result = SEND_TRANSACTION(Order_Timer, trans_params)
FOR while FROM 0 TO 1 ' Ожидаем пока заявка будет выставлена
'while=0
IF GET_VALUE(trans_result, «RESULT_EX») = «3»
OrderNumber = 0+GET_VALUE(trans_result, «ORDER_NUMBER»)
FlagOrder=1
WRITELN(test, DATE &" "& curtime &" Ордер выставлен: "&OrderNumber&" QTY: "&Quantity)
RETURN
END IF
END FOR
RETURN
END FUNC


Журнал сделок для quik

Всем приятного полдника, 

После обновления QUIKа до 7 версии изменился механизм работы таблицы сделок и старые необновленные lua-скрипты приводят у многих к дублированию записей в журнале сделок. Я добавил простую проверку для исключения этого момента, у себя проблем не заметил. Возможно кому-то еще будет полезно, все-таки quik не хранит сделки за другие сессии.
Скрипт запускается как и все lua-скрипты. В папке с терминалом автоматически создается файл trades.csv ( открывается екселем либо простым блокнотом ) куда пишется дата и время операции, инструмент, вид операции, цена, количество и объем. 

Журнал сделок для quik

Скачать можно здесь.  ( Код в топике не выкладываю. т.к. происходит замена ковычек, что приводит к неработоспособности ).


И да, напомню что недавно я выкладывал скриптик для подсчета баланса депозита, кто не видел, но нуждается — прошу. 


Удачного дня. 



Баланс для Quik

Доброго пятничного вечера всем, 

устав каждый раз считать баланс через суммирование чистых, планируемых позиций и маржи написал qlua-скриптик без каких-либо отборов по счетам, инструментам и тд. Под мои нужны хватает и работает как надо по фьюче-опционным позициям, возможно кому-то еще пригодится. Но все на свой страх и риск 8) 
Раз в 5 секунд происходит подсчет баланса и в случае если он относительно предыдущего подсчета увеличился — ячейка зеленая, наоборот — красная. 

Да, не забудте что необходимо наличие QL библиотеки (тут) в папке Quik.

Сам скрипт.


Баланс для Quik



Очень подробно разжёвано для чайников по LUA часть2!

    • 19 ноября 2015, 06:39
    • |
    • aura
  • Еще

Расширенная форма оператора for

В расширенной форме оператора for для последовательного получения значений переменной цикла используется вызов итератора. Цикл завершается, когда итератор возвращает nil.

Примечание

Под итератором понимается любая конструкция, позволяющая перебирать элементы некоторого набора. При каждом обращении к итератору он возвращает очередной элемент набора. В Lua итераторы обычно реализуются в виде функций.

Расширенная форма оператора for имеет следующий вид:

for var1, var2, …, varN in <explist> do

… — тело цикла

end

где:

var1, var2, ..., varN — список переменных, получающих значения на каждом шаге цикла. Список может состоять из одной или нескольких переменных, разделённых запятыми. Первую в списке переменную называют управляющей переменной цикла. Когда эта переменная получает возвращённое итератором значение nil, цикл завершается. Остальные переменные на ход выполнения цикла влияния не оказывают;

<explist> — список выражений, разделённых запятыми. Обычно список состоит из единственного выражения — вызова функции-фабрики итераторов. Такая функция возвращает функцию-итератор, состояние и начальное значение управляющей переменной цикла.



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

Очень подробно разжёвано для чайников по LUA часть1!

    • 19 ноября 2015, 06:38
    • |
    • aura
  • Еще

Скрипты на языке Lua

Написанный на Lua скрипт не имеет какой-либо специальной функции, с которой начиналось бы его выполнение. Скрипт можно рассматривать просто как набор команд (инструкций), который выполняется, начиная с первой инструкции.

Скрипт может быть как очень простым, состоящим всего из одной команды, так и весьма сложным, содержащим десятки, сотни и даже тысячи инструкций. Следующие друг за другом инструкции могут разделяться точкой с запятой (;). Однако это требование не является обязательным, поэтому весь приведённый ниже код является корректным с точки зрения синтаксиса:

a = 1; b = 2

a = 1 b = 2

a = 1;

b = 2;

a = 1

b = 2

Работа с переменными в Lua

Переменные используются для хранения значений в процессе выполнения скрипта.

Имена переменных в Lua

Именами (идентификаторами) переменных в Lua могут быть любые последовательности из букв, цифр и символа подчеркивания, начинающиеся не с цифры.



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

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