Избранное трейдера Денис Сафонов

по

Панель скальпинга для Quik.

    • 24 апреля 2021, 20:55
    • |
    • 3Qu
  • Еще
Недавно в одном из топиков анонсировал проект скальпинга и интрадея для Quik. С чего-то начинать надо, и начал с простенькой панели для скальпинга, чтобы не думая и ничего не настраивая нажимать на клавиши Buy/Sell. Ну, вот, сегодня слабал на C# вот это, первый вариант, самый простенький и без затей.
Пока панель выглядит так:
Панель скальпинга для Quik.

На данный момент панель предназначена для торговли одним инструментом, записанном в скрипте Lua. Чтобы сменить инструмент, его надо прописать в скрипте.
Панель не получает никакой информации из Quik, и это ей не нужно, а только передает через DLL в Lua данные о сделке: Buy/Sell, отступы и количество. Всю дальнейшею работу по формированию заявки, будет делать скрипт Lua.
На данный момент панель уже умеет взаимодействовать со скриптом и пока ничего более. Торговый функционал Lua, когда будет время перенесу из другого скрипта. Сейчас все равно выходной, и попробовать нет возможности.

Фьючерсные календари

    • 19 апреля 2021, 19:03
    • |
    • Neo
  • Еще

Раз тут подняли эту тему, даю ссылку для просветления от одного известного автора

 


Утренний сон алготрейдера


После введения утренней торговой сессии проблема автоматического запуска торгового ПО стала особенно актуальна.
Хорошее решение предложил Евгений Логунов  в своей статье «Простой автологин за 5 минут».  Мы предложим аналогичное решение для КВИК на С++.

Задача очень простая — в 7:00 пробудить ПК с помощью планировщика заданий Windows, запустить несколько терминалов QUIK, и в каждом из них запустить торговых роботов, чтобы полностью освободить владельца всего этого счастья от физических и психических нагрузок, плохо влияющих на питание и здоровый образ жизни.


Итак, первое, что нам необходимо будет сделать это Автологин. Штука достаточно простая, учитывая то, что после запуска терминала он автоматически выдает окно приветствия. Нам нужно только дождаться появления этого окна, получить первое вводное поле (логин), второе вводное поле (пароль), вбить туда нужные значения и нажать на первую дочернюю кнопку этого окна: «Вход».

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

Сегодня че-то много о нейросетях (НС)

    • 09 марта 2021, 16:04
    • |
    • 3Qu
  • Еще
Основной вопрос — может ли НС, и вообще методы МО, прогнозировать рынок?
Зададим более простой вопрос — можно ли НС обучить выполнять оператор if()… else? Ответ очевиден — конечно можно.
А обучить выполнению группы таких операторов? — Не вопрос, конечно можно.
Т.е., НС можно обучить практически любой логике. Вроде, сомнений не вызывает.

Теперь у нас есть заведомо работоспособная прибыльная торговая система (ТС), принимающая решения о покупке/продаже на основе некоторых данных, констант и логики. Решение — это своего рода прогноз. Решение: покупать — это прогноз роста цены актива, продавать — прогноз падения цены.

Итак, если ТС построена на логике, а НС можно успешно обучить любой логике, то НС можно обучить логике нашей прибыльной ТС. А так как решение ТС — это прогнозирование рынка, то НС и другие методы МО без всяких сомнений могут прогнозировать рынок.
Вот, мы с вами все и доказали:
НС и другие методы МО без всяких сомнений могут прогнозировать рынок.


Математический инструментарий для непроторенных путей в алготрейдинге. В дополнение к статье "Как перестать беспокоиться и начать торговать"

Если кого вдохновило сообщение smart-lab.ru/blog/680086.php, тому не обойтись без книги «NUMERICAL RECIPES. The Art of Scientific Computing. Third Edition». Качайте, пока дают

www.e-maxx-ru.1gb.ru/bookz/files/numerical_recipes.pdf
Бесплатные исходники к ней github.com/blackstonep/Numerical-Recipes
Программа svd.h из этого набора решает задачу наименьших квадратов для построения индикатора полиномиальной регрессии вместо примитивных скользящих средних.
Хорошее объяснение математической подоплёки в книге «Машинные методы математических вычислений. Форсайт, Малькольм, Моулер» en.booksee.org/book/445129
Ещё лучше — «Линейная алгебра и её применения» Гилберт Стренг
fileskachat.com/download/20151_887581203f10b39b3d7f6b84caf48a63.html
«Linear Algebra and Its Applications 4ed»
www.astronomia.edu.uy/progs/algebra/Strang- Linear_algebra_and_its_applications.pdf

Для использования программы svd.h из «NUMERICAL RECIPES» нужны тривиальные дополнения — транспонирование и перемножение матриц. Набор программ можно дополнить самодельным файлом utils.h и разместить в нём такой код:

#include <assert.h>
template <class T>
class NRdiagonal: public NRvector<T> { using NRvector<T>::NRvector; };

template <typename T>
void Multiply (const NRdiagonal<T>& a, const NRvector<T>& b
    ,NRvector<T>& c) {
  int m = a.size();
  assert (m == b.size());
  c.resize (m);
  for (int i = 0; i < m; ++i)
  c[i] = a[i] * b[i];
}
template <typename T>
void Multiply (const NRmatrix<T>& a, const NRvector<T>& b
    ,NRvector<T>& c) {
  int m = a.nrows(); int n = a.ncols();
  assert (n == b.size());
  c.resize (m);
  for (int i = 0; i < m; ++i) {
    c[i] = 0;
    for (int j = 0; j < n; ++j)
      c[i] += a[i][j] * b[j];
  }
}
template <typename T>
void Transpose (const NRmatrix<T>& a, NRmatrix<T>& b) {
  int m = a.nrows(); int n = a.ncols();
  b.resize (n, m);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      b[i][j] = a[j][i];
}
template <typename T>
void PrintVector (char* hdr, const NRvector<T>& vec) {
    cout << hdr << '\n';
  for (int i = 0; i < vec.size(); ++i)
    cout << " " << vec[i];
  cout << '\n';
}



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

Как перестать беспокоиться, и начать торговать.

    • 26 февраля 2021, 18:28
    • |
    • 3Qu
  • Еще
Что-то очень много статей развелось о сливах интрадейщиков, состоянии их нервной системы и прочих невзгодах. Однако, ничего спокойней интрадея найти невозможно — думать и анализировать вообще ничего не надо, а встал из за компа — так и вообще о рынке забыл.
Все просто. Единственная стратегия на рынке: покупай дешево, продавай дорого. Других не существует. Собственно, как и в любом бизнесе — ничего нового. Вопрос только, как определить, где дешево, а где дорого.
Это тоже несложно, в этом нам поможет простейшая мат статистика. Проводим на графике линию полиномиальной регрессии, рассчитываем стандартное отлонение (СТО), проводим на графике линии СТО. Под линиями СТО — статистически дешево, над линиями СТО — дорого.
Вот и определились с уровнями покупки и продажи.
Далее, учитываем, что цена никому ничего не обязана, и может ходить куда угодно, но чаще все таки ходит внутри диапазона распределения.
Вот и все, система готова, она вся на картинке.
Как перестать беспокоиться, и начать торговать.

Теперь скажите, вы видите здесь неудачные сделки? Я не вижу, но и не все их сегодня реализовал.
Кстати, быстродействия Quik вполне и больше чем достаточно, и все время удивляюсь тем, кто жалуется на быстродействие Quik.




Просто так

Считайте, что вдруг пробило на немножко эпистолярщину.

Я таки тихий домашний трейдер.
Работаю (вне биржи, IT), зарабатываю, вкладываю, скальпить придрочился в плюс без фанатизма, тем в сумме и живу, в х не дую.
Сайт этот пятый год читаю, в политику не вникаю, немного писАл по скриптам, но потом бросил, т.к. это личный блог Тимы, мой контент тут не нужен.

А хотел я сказать за тех, кого тут стоит читать, а всех остальных (хоть 99%) отправлять в ЧС.

Итак, за почти 5 лет, по моему скромному мнению, бессменными аккаунтами, чей любой пост или коммент я буду тщательно вычитывать, разбирать и думать «что именно он хотел сказать», являются:
ves2010
Гном
КРЫС
От этих людей веет знанием дела и отсутствием желания тебе что-то впарить. Люди работают и зарабатывают. Что-то говорят при этом. Их — слушать.

Хомяк. Прикольный старый рас***й. Доставляет.

Сам Тима. Земляк, хоть мы друг друга и не знаем. Своими постами напоминает мне о моей родине, славном граде Пушкине.
Ну и заодно он тут как бы главный малахов, новости о портале от него в первой инстанции, так что читаем (хоть и нарциссизма выше крыши, утомляет).

Мало? Ну пока кого вспомнил.

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

Батник для отправки скриншотов на емейл

    • 11 февраля 2021, 14:58
    • |
    • krolix
  • Еще
Пришлось поизобретать велосипед. Помимо этого стоит VNC-сервер, но хотелось более автоматизированных отчетов.

Профи это не интересно, но обычному частнику со смарт-лаба может быть полезно, ху ноуз.

@ echo off
nircmd.exe cmdwait 1000 win hide ititle «taskeng.exe»
nircmd.exe savescreenshot «C:\Screenshot.jpg»
Swithmail /S /XML «mail.xml»
nircmd.exe cmdwait 4000 filldelete «C:\Screenshot.jpg»

Софт качается и exe-файлы кидаются в общем случае в c:\windows\system32 
www.nirsoft.net/utils/nircmd.html
sourceforge.net/projects/swithmail/

Swithmail запускается и конфигурятся данные почтового сервера, сохраняется xml, пароль можно зашифровать.
У меня работает с яндекс-почтой на 587 порте с включенным SSL. Про настройку уведомлений почтового приложения на смартфоне под именно эти сообщения писать не буду уж.

Далее запускаем taskschd.msc и добавляем новую задачу. 
Действия — запуск программы — указываем наш батник. Тут же указываем рабочую папку, где лежит xml-файл, чтобы он подгрузился.
Триггеры — ежедневные повторения — указываем, например, повторять с 10:59 в течении 12 часов.

Батник для отправки скриншотов на емейл


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

MAV2 индикатор объемов положительных и отрицательных баров

MAV2 индикатор объемов положительных и отрицательных баров
--[[
MA volumn up down
--]]
Settings=              
        {                          
            Name = "MAV2",   -- indicator name
            per=10,               -- period			
            line=                                     
                {                               
                    {  
                        Name = "MA",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0,255)
                    },
                    {  
                        Name = "MA2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0,0)
                    }						
                }
       }


function Init()   
  mav1 = {}
  mav2 = {}  
  return 2
end


function OnCalculate(index)
  
  per = Settings.per
  
  if index > 1 then 
    curv = C(index)
    prevv = C(index-1)	
  else 
    curv = C(index)
    prevv = C(index)	
  end   
 
  if curv - prevv > 0 then 
    if index > 1 then 
      mav1[index] = mav1[index-1] + V(index)
	  mav2[index] = mav2[index-1] 
    else 
      mav1[index] = V(index)  
	  mav2[index] = 0
    end    
  else 
    if index > 1 then 
	  mav1[index] = mav1[index-1]
      mav2[index] = mav2[index-1] + V(index)
    else 
	  mav1[index] = 0
      mav2[index] = V(index)  
    end 
  end 
  
  if index > per then
    vv1 = mav1[index] - mav1[index-per]
	vv2 = mav2[index] - mav2[index-per]
  else 
    vv1 = 0
	vv2 = 0
  end   

  return vv1, vv2

end

Совершенствуем Exponential Moving Average (EMA). 2

    • 16 января 2021, 21:01
    • |
    • 3Qu
  • Еще
В топике Совершенствуем Exponential Moving Average (EMA) мы показали использование линейной и нелинейной обратных связей в применении к ЕМА. Как правильно отметили в части комментариев, в случае линейной обратной связи ЕМА просто превращается в другую ЕМА с меньшим периодом, и толку от такой ЕМА немного. И тем не менее, даже в этом случае, обратная связь демонстрирует то, что и должна была демонстрировать — цель достигнута и ошибка слежения за ценой уменьшилась.
Нелинейная же связь даже в случае с ЕМА работает нормально, и по факту адаптивно в зависимости от ошибки меняет период сглаживания. При больших значениях ошибки период сглаживания уменьшается относительно заданного Тс, при малых ошибках период сглаживания практически равен предустановленному Тс.
В общем, нам надо решить вопрос только с линейной обратной связи, и выбрать для этого в качестве исходного индикатора что-то посложнее ЕМА. Скажем фильтр низких частот (ФНЧ) 2-го порядка. Выражение для него будет иметь вид.

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

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