Блог им. XXM

SuperScalp - новобранец полка приводов для QUIK.

Приводов для быстрого ввода заявок так много, что времени нет для их рассмотрения.
Несть числа им, да и обзоров море:
1. smart-lab:  Статья: анализ скальперских приводов
2. smart-lab:  Супер список приводов для торговли на бирже!!!
3. 2stocks  :  На выбор скальперу — обзор 14 приводов
4. quik        :  Полезные ссылки
А вот простого, как «три аккорда», незатейливого — не было.
Теперь он есть:
SuperScalp - новобранец полка приводов для QUIK.

1. написан на LUA, с исходным кодом, приправлен комментариями;
2. бесплатен, без ограничения сроков, «Free software».
3. без графики и хоткеев всяких.
Настройки — в строках кода:
  • account = 'SPBFUT00R86' — код торгового счета
  • classCode = 'SPBFUT' — код класса
  • secCode = 'SRZ4' — код бумаги
  • WorkSize = 10 — рабочий размер
  • OpenSlippage = 50 — проскальзывание
  • FREQUENCY = 500 — частота привода (в миллисекундах)
Скачать: SuperScalp.lua
UPD 04.10.2014г. Привод написан для FORTS.
 
 
 
 

Спасибо, поизучаем, пора к qlua присматриваться, тем более создатели квика советуют перебираться на него с qpile, т.к. последний больше развивать они не будут.
И еще вопрос, что такое ТЧП? И просьба — добавить бы еще кнопку «Переворот», переворот позиции одной сделкой.
avatar

Serg

По поводу ТЧП тоже интересно…
avatar

Федор

Федор, нашел в коде: текущие чистые позиции
avatar

Serg

Serg, спасибо… сейчас буду разбираться)
QPILE — нужно забыть!
ТЧП — да.
Переворот? Это уже привод не класса «три аккорда» :)
avatar

XXM

Не ошибка ли в строке?
local buyPrice = best_offer + (OpenSlippage or 0)
Я бы подумал, что результат логической операции «or» был бы логическим, т.е. true или false, а после приведения к цифре 1 или 0, хотя Вы то наверное все проверили, но я бы по старинке сделал бы OpenSlippage+0. И даже больше, я бы лучше приведение к цифре сделал бы в этой строке:
local best_offer = getParamEx(classCode, secCode, «offer»).param_value таким образом:
local best_offer = 0+getParamEx(classCode, secCode, «offer»).param_value
avatar

Serg

Serg, это не ошибка. Это LUA!
Там таких «вкусняшек» типа
local buyPrice = best_offer + (OpenSlippage or 0)
много!
Проверьте код: удалите OpenSlippage из настроек и увидите, как себя ведет вышеупомянутая строка.
Вам понравится ;)

*****************************************************
* Важно: эксперименты лучше проводить на ДЕМО-счете!
*****************************************************
avatar

XXM

Serg, результат логической операции определяется спецификацией языка: «The disjunction operator or returns its first argument if this value is different from nil and false; otherwise, or returns its second argument.»

Результат OpenSlippage+0 будет плачевным, если OpenSlippage имеет значение nil. Опять же в силу спецификации языка.

Рекомендую прокурить манул к Lua как следует. Ошибки в торговых гоботах имеют тенденцию отражаться на балансе счета :)
bstone, XXM, ясно, спасибо за разъяснения, все-таки особенности lua дают о себе знать.
avatar

Serg

Serg, да, язык весьма специфический.
В квике в настройках стакана есть дополнительные опции для быстрых сделок. Там и переворот позиции одним нажатием )
avatar

Scorpi_999

Scorpi_999, тоже не понимаю — зачем велосипед изобретать, в Quik есть скальперский стакан — вполне удобный…
Scorpi_999,Vauchert.
1. Это LUA.
2. SuperScalp.lua можно использовать как заготовку для привода для нескольких инструментов одновременно путем редактирования function getIniSection() или через ini-файл.
3. Этот привод можно внедрить в роботы на LUA там, где по многим причинам GUI-интерфейс не устраивает.
avatar

XXM

XXM,
Наткнулся вот на Ваш привод)
для торговли одновременно несколькими инструментами — где и как надо редактировать function getIniSection() — а то в коде её эту функцию вообще не нашёл?

можно с примером? как Вы указали для " переворота"
Переворот:

1. Добавляем в HandleBS() перед строкой «SetTableNotificationCallback(t,event_callback_tblH)»
следующий код:
local li=InsertRow(t, -1)
SetCell(t, li, 1, 'Переворот')

2. В function event_callback_tblH(t_id, msg, par1, par2) добавляем:
elseif par1 == 3 and par2 == 1 then
if LastPos > 0 then
resID = Sell(classCode, secCode, LastPos+WorkSize, 'Coup')
elseif LastPos < 0 then
resID = Buy(classCode, secCode, -LastPos+WorkSize, 'Coup')
else
message('Нет позиций для переворота!',1)
end
Переворот должен сработать.

**************************
* Важно: НЕ ПРОВЕРЯЛ! *
**************************
avatar

XXM

XXM, еще раз спасибо за пример кода на qlua!
avatar

Serg

Serg, рад, что понравилось. Найду еще что — выложу.
avatar

XXM

XXM, найдете? Разве это не Ваш код? Может напишите? :)
avatar

Serg

Serg, написанного много, но не все годятся для выкладывания.
Уточню: найду что из написанного и выложу :)
avatar

XXM

XXM, ok, спасибо.
avatar

Serg

можно и стакан настроить в стоковом квике, будет кнопки — купить/продать, в чем прикол?
При чем можно прямо по стакану кликать и ставить лимитки либо маркетом входить мышкой
avatar

Zuccer0

Zuccer0/Андрей, прикол в примере кода на qlua.
avatar

Serg

Serg, но суть то не меняется, вопрос как быстро сделать операцию покупки или продажи, стоковый квик вполне это делает или я чего-то не понимаю
Zuccer0/Андрей, а может вопрос в том чтобы научиться кодить на qlua? :) У каждого свой вопрос.
avatar

Serg

а треугольнички на графике- покупки и продажи? Если да, то у Вас Грааль
avatar

Lafert

Lafert, Да нет, просто покупал на лоях и продавал на хаях.
SuperScalp мне помогал.
avatar

XXM

XXM, а не подскажите какую роль играет знак позиции + или — в функциях Buy/Sell, ведь направление задается B/S.
avatar

Serg

— function Buy():
local best_offer = getParamEx(classCode, secCode, «offer»).param_value
local buyPrice = best_offer '+' (OpenSlippage or 0)
— function Sell():
local best_bid = getParamEx(classCode, secCode, «bid»).param_value
local sellPrice = best_bid '-' (OpenSlippage or 0)
— Вы про помеченные знаки спрашиваете?
Они имеют отношение к разным параметрам: 'offer' и 'bid'
avatar

XXM

XXM, не, я про это:
resID = Buy(classCode, secCode, '-'LastPos, 'CloseShortHandle')
elseif LastPos == 0 then
resID = Buy(classCode, secCode, WorkSize, 'OpenLongHandle')
avatar

Serg

там ранее идет строка:
if LastPos < 0 then
— знак у LastPos отрицательный, меняем на '+'
avatar

XXM

XXM, ой, извиняюсь за невнимательность — все понял, спасибо.
avatar

Serg

Спасибо большое! :)
avatar

normal

Обновление будет. Следите за www.xsharp.ru/novosti!
avatar

XXM

Отличный привод! Спасибо!
avatar

Mr_Noname

Mr_Noname, Было обновление: smart-lab.ru/blog/216652.php
avatar

XXM


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация