Блог им. 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.
 
 
 
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
942 | ★81
35 комментариев
Спасибо, поизучаем, пора к qlua присматриваться, тем более создатели квика советуют перебираться на него с qpile, т.к. последний больше развивать они не будут.
И еще вопрос, что такое ТЧП? И просьба — добавить бы еще кнопку «Переворот», переворот позиции одной сделкой.
avatar
По поводу ТЧП тоже интересно…
avatar
Федор, нашел в коде: текущие чистые позиции
avatar
Serg, спасибо… сейчас буду разбираться)
avatar
QPILE — нужно забыть!
ТЧП — да.
Переворот? Это уже привод не класса «три аккорда» :)
avatar
Не ошибка ли в строке?
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, это не ошибка. Это LUA!
Там таких «вкусняшек» типа
local buyPrice = best_offer + (OpenSlippage or 0)
много!
Проверьте код: удалите OpenSlippage из настроек и увидите, как себя ведет вышеупомянутая строка.
Вам понравится ;)

*****************************************************
* Важно: эксперименты лучше проводить на ДЕМО-счете!
*****************************************************
avatar
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 как следует. Ошибки в торговых гоботах имеют тенденцию отражаться на балансе счета :)
avatar
bstone, XXM, ясно, спасибо за разъяснения, все-таки особенности lua дают о себе знать.
avatar
Serg, да, язык весьма специфический.
avatar
В квике в настройках стакана есть дополнительные опции для быстрых сделок. Там и переворот позиции одним нажатием )
avatar
Scorpi_999, тоже не понимаю — зачем велосипед изобретать, в Quik есть скальперский стакан — вполне удобный…
avatar
Scorpi_999,Vauchert.
1. Это LUA.
2. SuperScalp.lua можно использовать как заготовку для привода для нескольких инструментов одновременно путем редактирования function getIniSection() или через ini-файл.
3. Этот привод можно внедрить в роботы на LUA там, где по многим причинам GUI-интерфейс не устраивает.
avatar
XXM,
Наткнулся вот на Ваш привод)
для торговли одновременно несколькими инструментами — где и как надо редактировать function getIniSection() — а то в коде её эту функцию вообще не нашёл?

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

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, еще раз спасибо за пример кода на qlua!
avatar
Serg, рад, что понравилось. Найду еще что — выложу.
avatar
XXM, найдете? Разве это не Ваш код? Может напишите? :)
avatar
Serg, написанного много, но не все годятся для выкладывания.
Уточню: найду что из написанного и выложу :)
avatar
XXM, ok, спасибо.
avatar
можно и стакан настроить в стоковом квике, будет кнопки — купить/продать, в чем прикол?
При чем можно прямо по стакану кликать и ставить лимитки либо маркетом входить мышкой
avatar
Zuccer0/Андрей, прикол в примере кода на qlua.
avatar
Serg, но суть то не меняется, вопрос как быстро сделать операцию покупки или продажи, стоковый квик вполне это делает или я чего-то не понимаю
avatar
Zuccer0/Андрей, а может вопрос в том чтобы научиться кодить на qlua? :) У каждого свой вопрос.
avatar
а треугольнички на графике- покупки и продажи? Если да, то у Вас Грааль
avatar
Lafert, Да нет, просто покупал на лоях и продавал на хаях.
SuperScalp мне помогал.
avatar
XXM, а не подскажите какую роль играет знак позиции + или — в функциях Buy/Sell, ведь направление задается B/S.
avatar
— 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, не, я про это:
resID = Buy(classCode, secCode, '-'LastPos, 'CloseShortHandle')
elseif LastPos == 0 then
resID = Buy(classCode, secCode, WorkSize, 'OpenLongHandle')
avatar
там ранее идет строка:
if LastPos < 0 then
— знак у LastPos отрицательный, меняем на '+'
avatar
XXM, ой, извиняюсь за невнимательность — все понял, спасибо.
avatar
Спасибо большое! :)
avatar
Обновление будет. Следите за www.xsharp.ru/novosti!
avatar
Отличный привод! Спасибо!
avatar
Mr_Noname, Было обновление: smart-lab.ru/blog/216652.php
avatar

Читайте на SMART-LAB:
По акциям МГКЛ ограничены короткие позиции
С 5 ноября по решению Национального клирингового центра установлен запрет коротких позиций на акции ПАО «МГКЛ» на Московской бирже. Короткие...
Фото
Выбираем акции на 2027 год. Какие бумаги могут стать основой портфеля
Российский рынок в 2026 году пока показывает отрицательный результат, индекс МосБиржи с начала года потерял более 10%. На данный момент нет...
Фото
GBP/AUD зажимает в треугольник: куда пойдет пробой?
Кросс-курс GBP/AUD протестировал верхнюю границу симметричного треугольника (линия А-С) и планирует закрыть день красивой «падающей звездой»....
Фото
Газпром опять в прибыли - РСБУ дает шансы на хороший 3-й квартал, но мы ждем 4-й.

теги блога XXM ☑️

....все тэги



UPDONW
Новый дизайн