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

по

Как я зарабатываю на бирже. Моя торговая система. Часть 1

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

Эти принцыпы следующие:

1. В историческом разрезе общественное богатство растет, кроме случаев революции, войны, террактов, стихийных бедствий, эпидемий. 

2. Рынок акций по большому счету отражает с некоторым опережением состояние экономики, биржевые индексы отражают состояние рынка акций.

3. Для каждой акции в портфеле возможные потери капитализации в абсолютных единицах ограничены (нулем), а возможный рост неограничен.

4. В каждый момент времени цена акции может пойти как вверх, так и вниз, но исходя из принципов, перечисленных выше, скорее вверх, чем вниз.

5. При росте (или снижении) цены на величину более 23% вероятность продолжения роста (или снижения) выше, чем вероятность смены тренда.

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

Macd.lua

    • 23 ноября 2014, 14:48
    • |
    • XXM
  • Еще
                                                       
                                                       Воскресное чтиво.
                                                       В образовательных целях.

------------------------------------------------------------------------
— Macd.lua, © hismatullin.h@gmail.com, 23.11.2014
— Короткий период: period1
— Длинный период: period2
— Количество периодов сигнальной скользящей средней: period3
— метод усреднения линий: Exponential
------------------------------------------------------------------------
Settings =
     {
          Name = «Macd»,
          period1 = 12, period2 = 26, period3 = 9,
          line=
               {
                    {Name = «Macd», Color = 8404992, Type = 1, Width = 2},
                    {Name = «Sign», Color = 32768, Type = 1, Width = 2}
               }
     }
-------------------------------
function Init()
     Macd = cached_Macd()
     return 2
end
-------------------------------
function OnCalculate(index)
     return Macd(index, Settings.period1, Settings.period2, Settings.period3)
end
-------------------------------
function average(_start, _end)
     local sum=0
     for i = _start, _end do
          sum=sum+C(i)
     end
     return sum/(_end-_start+1)
end
-------------------------------
function cached_Macd()
     local cache_EMA_long={}
     local cache_EMA_short={}
     local cache_MACD={}
     local cache_Sign={}
     return function(ind, _p01, _p02, _p03)
          local n_ema_short = 0 --теущий EMA короткий
          local p_ema_short = 0 --предыдущий EMA короткий
          local n_sign = 0 --теущий sign
          local p_sign = 0 --предыдущий sign
          local period_short = _p01
          local period_long = _p02
          local period_sign = _p03
          local index = ind
          local k_short = 2/(period_short+1)
          local k_long = 2/(period_long+1)
          local k_sign = 2/(period_sign+1)
          if index == 1 then
               cache_EMA_long = {}
               cache_EMA_short = {}
               cache_MACD = {}
               cache_Sign={}
          end
          -----------------------------------------------
          if index < period_long then
               cache_EMA_long[index] = average(1,index)
               return nil
          end
          p_ema_long = cache_EMA_long[index-1] or C(index)
          n_ema_long = k_long*C(index)+(1-k_long)*p_ema_long
          cache_EMA_long[index] = n_ema_long
          -----------------------------------------------
          if index < period_short then
               cache_EMA_short[index] = average(1,index)
               return nil
          end
          p_ema_short = cache_EMA_short[index-1] or C(index)
          n_ema_short = k_short*C(index)+(1-k_short)*p_ema_short
          cache_EMA_short[index] = n_ema_short
          -----------------------------------------------
          --считаем сигнальную
          cache_MACD[index] = n_ema_short-n_ema_long
          p_sign = cache_Sign[index-1] or cache_MACD[index]
          n_sign = k_sign*cache_MACD[index]+(1-k_sign)*p_sign
          cache_Sign[index] = n_sign
          -----------------------------------------------
          return n_ema_short-n_ema_long, n_sign
     end
end
------------------------------------------------------------------------ 

Qlua для чайников. Часть 6. Модуль торговли. Остатки по бумагам на фондовом рынке. Удаление заявок

    • 18 ноября 2014, 16:27
    • |
    • orekton
  • Еще
Закончим писать робота, который мы начали на предыдущих уроках. Напомню, что мы пишем робота-спредера. Он будет выставлять заявки на покупку и на продажу, если в стакане достаточно большой спред. На данный момент наша заготовка робота может корректно определять крайние цены в стакане с учетом уже выставленных заявок. Настало время написать модуль, который будет торговать.Qlua для чайников. Часть 1Qlua для чайников. Часть 2. ЦиклыQlua для чайников. Часть 3. Работа со стаканомQlua для чайников. Часть 4. Анализ информации из стакана и работа с заявкамиQlua для чайников. Часть 5. Работа с таблица Quik. Поиск заявок. Искусство отладкиКакие функции должен выполнять этот модуль торговли? Сейчас я перечислю их:
  • Проверять размер спреда, если он больше заданной величины, то это сигнал на совершение сделки.
  • Выставлять заявки, если есть сигнал.
  • Следить затем, чтобы не было выставлено лишних заявок – если заявка выставлена но еще не сработала, то новую заявку не выставляем.
  • Переставлять заявки, если изменились крайние цены в стакане.
  • Следить за количеством инструмента – если, например, мы выставили заявку на покупку и на продажу, одна из них сработала или частично сработала, а потом изменились цены, то при перевыставлении заявок надо учесть этот факт.


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

SuperScalp. Первая звезда на погонах.

    • 17 ноября 2014, 13:27
    • |
    • XXM
  • Еще
SuperScalp, версия 1.1. (начало здесь: http://smart-lab.ru/blog/207666.php)
 
SuperScalp. Первая звезда на погонах.

1. написан на QLUA, для ФОРТС, с исходным кодом, приправлен комментариями;
2. бесплатен, без ограничения сроков, «Free software». 
3. без графики и хоткеев всяких.

Настройки — в строках кода:

function getInitParameter()
       account = 'SPBFUT00995'
       classCode = 'SPBFUT'
       secCode = 'SRZ4'
       workSize = 10
       OpenSlippage = 50
       Frequency = 500
end


Скачать: SuperScalp.lua

Добро пожаловать на валютную секцию ММВБ (ETC)!

Всем желающим приобщиться к прекрасному и торговать валютой, а не фьючерсом на нее — добро пожаловать на валютную секцию ММВБ (в квике раздел ETC)! Хотя чем не устраивает фьючерсы — не совсем понимаю...
Коротенько расскажу на примере доллара основы торговли на ETC.
USDRUB_TOD — это контакт на поставку 1000 долларов сегодня.
Сначала, надо понять, что такое своп.
Упрощенно, своп — это цена за перенос USDRUB_TOD на след. торговый день, а иначе выйдешь на поставку валюты. Чтобы перенести USDRUB_TOD (1 контракт = 1000 баксов) ты должен иметь купленный своп USD_TODTOM (1 контракт = 100000 баксов). т.е. на 100 коней USDRUB_TOD покупаешь 1 конь USD_TODTOM (если не хочешь выйти на поставку валюты). Если купить USDRUB_TOM, то своп покупать не надо, но на след. день USDRUB_TOM исчезнет и появится USDRUB_TOD и опять чтобы не выйти на поставку валюты надо будет купить своп USD_TODTOM. Т.е.  для 100 контрактов USDRUB_TOD надо каждый день покупать 1 контракт USD_TODTOM, чтобы не выйти на поставку валюты. Есть еще дальние свопы, но по ним ликвидность не очень.

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

Qlua для чайников. Часть 5. Работа с таблица Quik. Поиск заявок. Искусство отладки

    • 20 октября 2014, 12:55
    • |
    • orekton
  • Еще
Мы продолжаем создавать нашего биржевого робота спредера. В этом уроке будем учиться искать заявки и разбираться с процессом отладки.

Предыдущие уроки:

Qlua для чайников. Часть 1
Qlua для чайников. Часть 2
Qlua для чайников. Часть 3. Делаем робота-спредера
Qlua для чайников. Часть 4. Анализ информации из стакана и работа с заявками


На прошлом уроке мы с вами написали заготовку, которая рассчитывает цены выставления наших заявок, на основе крайних цен в стакане (программа считает заданный отступ от этих цен). Если вы не читали прошлый урок, все равно зайдите на него и скачайте приложение – заготовку робота, в этом уроке вам она понадобится.
Как я уже говорил, у нашей программы есть недочеты. Во-первых, из-за того, что события изменения стакана приходит раньше, чем событие выставления заявок, у нас иногда проскакивают неверные цены. Подробнее опять см. прошлый урок. Во-вторых, после запуска у нас робот начинает работать только после того, как произойдут первые изменения в стакане. Как исправить эти недочеты? Давайте подумаем.


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

Моему товарищу по "оружию" billikid'y по эпическим движениям...

    • 15 октября 2014, 19:19
    • |
    • ...
  • Еще

Первые полтора часа теории Тактики Адверза. Ну, это никому не нужно. Собственно прогнозы по  бондам, dax и sp500 начиная с 1:40:20


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