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

по

Робот "Два Боллинджера" с исходниками

Хорош философствовать. Давайте писать более полезные посты.
Итак, робот на двух графиках Боллинджера.
Общий принцип:
1) На цену накладываются два графика Боллинджера: с периодами 20 и 120 (назовем их local и global).
2) В зависимости от параметра внутри робота, входим либо когда цена входит внутрь local-Боллинджера (ContrTrendFlag=1), либо выходит из него (ContrTrendFlag=0).
3) Дополнительный фильтр: Лонг только когда когда мы в верхней половине global-Боллинджера, шорт — если в нижней.
Данные робот берет из графиков, так что график должен быть открыт, и прописаны идентификаторы.

График с двумя Боллинджерами выглядит примерно так:

Робот "Два Боллинджера" с исходниками

Настройки на цене и индикаторах не забудьте:

Робот "Два Боллинджера" с исходниками

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

Как создать торгового робота своими руками? Robot-Scalper

Торговый робот своими руками под QUIK

Нас часто спрашивают, как самостоятельно создать робота? И сложно ли это?
– Нет, не сложно, если у вас есть опыт и наработки. Но если вы начинающий алготрейдер, то перед вами встанет сразу несколько непростых задач.

Для начала вы должны определиться какую именно торговую стратегию будете автоматизировать.

Затем нужно четко формализовать эту стратегию: описать строгими условиями все входы и выходы из позиции.

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

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

Изучаем как устроена структура данных (таблиц) на сервере Мосбиржи, чтобы знать откуда что брать.

Важно иметь хотя бы базовое понимание о программировании: что такое переменные, условия, операции сравнения, циклы, функции, события, работа с файлами и т.п.



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

Zigzag2 на lua под quik

Доработал свой предыдущий zigzag чтоб работал быстрее

название нового индикатора zigzag2

скачать можно здесь:
https://dropmefiles.com/5EOWp

как выглядит:
Zigzag2 на lua под quik



код индикатора:
Settings=              
        {                          
            Name = "Zigzag2",   -- название индикатора
            delta=2,                  -- параметр индикатора                          
            line=                                     
                {                               
                    {  
                        Name = "zigzagline2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(120,90, 140)
                    }
                }
       }


function Init()

    vMin = 0
    vMax = 0
    vMinindex = 0
    vMaxindex = 0
    voldMinindex = 0
    voldMaxindex = 0

  return 1
end


function OnCalculate(index)
  local printz = 0
  
  if index == 1 then
    vMin = C(index)
    vMax = C(index)
    vMinindex = index
    vMaxindex = index
    voldMinindex = index
    voldMaxindex = index
    ve = C(index)  
  else
         
    if voldMaxindex >= voldMinindex then
      if C(index) > (1 + Settings.delta/100)*vMin then
        vMin = C(index)  
        vMax = C(index) 
        vMaxindex = index
        voldMinindex = vMinindex 
        vFrom = voldMaxindex  
        vTo = vMinindex
        printz = 1
      else     
        if vMin > C(index) then
          vMin = C(index)
          vMinindex = index
          vFrom = voldMaxindex      
          vTo = index
          printz = 0
        else
          vFrom = vMinindex 
          vTo = index
          printz = 0
        end 
      end
    else
     
    if voldMaxindex <= voldMinindex then
      if C(index) < (1 - Settings.delta/100)*vMax then
        vMax = C(index) 
        vMin = C(index)  
        vMinindex = index
        voldMaxindex = vMaxindex
        vFrom = voldMinindex
        vTo = vMaxindex
        printz = 1
      else 
        if vMax < C(index) then
          vMax = C(index)
          vMaxindex = index
          vFrom = voldMinindex    
          vTo = index
          printz = 0
        else  
          vFrom = vMaxindex  
          vTo = index        
          printz = 0
        end
      end  
    end
    end
 
    if (printz == 1) or (Size() == index) then
      for i = vFrom, vTo do
        k = (C(vTo)- C(vFrom))/(vTo- vFrom);
        v = i*k + C(vTo) - vTo*k
        SetValue(i, 1, v)
        ve = v
      end   
      if (Size() == index) then
        ve = C(index)
        if voldMaxindex >= voldMinindex then
          vFrom = voldMaxindex 
          vTo = vMinindex
        end 
        if voldMaxindex <= voldMinindex then  
          vFrom = voldMinindex
          vTo = vMaxindex
        end 
        for i = vFrom, vTo do
          k = (C(vTo)- C(vFrom))/(vTo- vFrom);
          v = i*k + C(vTo) - vTo*k
          SetValue(i, 1, v)
        end  
      end
    end

  end   
  return ve
end

STATDIV3 доработанный индикатор для quik на языке lua

если индикатор больше 0, то покупаем, если ниже то продаем

скачать можно здесь:dropmefiles.com/09FCu
как устанавливать смотрите предыдущие статьи: https://smart-lab.ru/blog/528424.php
название STATDIV3 это доработанный STATDIV


поведение индикатора на графике:
STATDIV3 доработанный индикатор для quik на языке lua


сам код индикатора:
Settings={
Name="STATDIV3",
period=50,
  line=
  {
    {
      Name="curve",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line",
      Color=RGB(255,0,0),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="MA2",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line2",
      Color=RGB(0,0,255),
      Type=TYPE_LINE,
      Width=1
    },
    {
      Name="line3",
      Color=RGB(0,128,128),
      Type=TYPE_LINE,
      Width=1
    }
  } 
}

function Init()
  cache_ind={}
  cache_ind2={}
  cache_ind3={}
  return 2
end

function OnCalculate(index)
  if index < Settings.period then
    return nil
  else
    local sum1=0
    local sum2=0
    local sum0=0
    local sum02=0
    local sum03=0
    for i=index-Settings.period+1, index do  
    do
      if C(i) > O(i) then
        sum1 = sum1 + C(i) - O(i)
        sum2 = sum2 + C(i) - O(i)
      else
        sum2 = sum2 + O(i) - C(i)
      end  
    end 
    cache_ind[index] = sum1/sum2    
    if index > Settings.period+12 then 
--[[
      sum0 = 1*cache_ind[index]+
            (1)*cache_ind[index-1]+
            (1)*cache_ind[index-2]+
            (1)*cache_ind[index-3]+
            (1)*cache_ind[index-4]+
            (1)*cache_ind[index-5]+
            (1)*cache_ind[index-6]+
            (1)*cache_ind[index-7]+
            (1)*cache_ind[index-8]+
            (1/2)*cache_ind[index-9]+
            (1/3)*cache_ind[index-10]+
            (1/4)*cache_ind[index-11]+
            (1/5)*cache_ind[index-12]
--]]
      sum0 = 1*cache_ind[index]+
            (1/2)*cache_ind[index-1]+
            (1/3)*cache_ind[index-2]+
            (1/4)*cache_ind[index-3]+
            (1/5)*cache_ind[index-4]+
            (1/6)*cache_ind[index-5]+
            (1/7)*cache_ind[index-6]+
            (1/8)*cache_ind[index-7]+
            (1/9)*cache_ind[index-8]+
            (1/10)*cache_ind[index-9]+
            (1/11)*cache_ind[index-10]+
            (1/12)*cache_ind[index-11]+
            (1/13)*cache_ind[index-12]

    end
--[[
    sum0 = sum0/(1+1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5)
--]]
    sum0 = sum0/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

       
    cache_ind2[index] = sum0
    if index > Settings.period+50 then   
      sum02 = 1*cache_ind2[index]+
            (1)*cache_ind2[index-1]+
            (1)*cache_ind2[index-2]+
            (1)*cache_ind2[index-3]+
            (1)*cache_ind2[index-4]+
            (1)*cache_ind2[index-5]+
            (1)*cache_ind2[index-6]+
            (1)*cache_ind2[index-7]+
            (1/2)*cache_ind2[index-8]+
            (1/3)*cache_ind2[index-9]+
            (1/4)*cache_ind2[index-10]+
            (1/5)*cache_ind2[index-11]+
            (1/6)*cache_ind2[index-12]
--[[
      sum02 = 1*cache_ind2[index]+
            (1/2)*cache_ind2[index-1]+
            (1/3)*cache_ind2[index-2]+
            (1/4)*cache_ind2[index-3]+
            (1/5)*cache_ind2[index-4]+
            (1/6)*cache_ind2[index-5]+
            (1/7)*cache_ind2[index-6]+
            (1/8)*cache_ind2[index-7]+
            (1/9)*cache_ind2[index-8]+
            (1/10)*cache_ind2[index-9]+
            (1/11)*cache_ind2[index-10]+
            (1/12)*cache_ind2[index-11]+
            (1/13)*cache_ind2[index-12]
--]]
    end
    sum02 = sum02/(1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5+1/6)
--[[
    sum02 = sum02/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
--]]
    cache_ind3[index] = sum0 - sum02
    if index > Settings.period+50 then   
      sum03 = 1*cache_ind3[index]+
            (1/2)*cache_ind3[index-1]+
            (1/3)*cache_ind3[index-2]+
            (1/4)*cache_ind3[index-3]+
            (1/5)*cache_ind3[index-4]+
            (1/6)*cache_ind3[index-5]+
            (1/7)*cache_ind3[index-6]+
            (1/8)*cache_ind3[index-7]+
            (1/9)*cache_ind3[index-8]+
            (1/10)*cache_ind3[index-9]+
            (1/11)*cache_ind3[index-10]+
            (1/12)*cache_ind3[index-11]+
            (1/13)*cache_ind3[index-12]
    end
    sum03 = sum03/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)

  end  

  if sum1/sum2 > 0.5 and sum03 > 0 then
    sum1 = sum03
  else
    if sum1/sum2 < 0.5 and sum03 < 0 then
      sum1 = sum03 
    else 
      sum1 = 0
    end
  end

  return sum1, 0
end

end
 всем удачи!
  • обсудить на форуме:
  • Quik Lua

Разбор системы "Контртренд"

Еще одна до боли знакомая мне система здесь значится как «Контртренд». У меня опять же немножко по другому, но логику мы пытаемся реализовать одну. У меня так сказать чуть подольше и покрупней, ибо оптимизирую я прибыль на сделку, у Татарин30 все поуже и сшибает он пипсы, максимизируя число профитных сделок. Ну, так сказать каждому свое. 
В моей формализации система выглядит так:
1. Первые 2 часа шортим фишки которые сильно выросли: 2,5% от закрытия основной сессии вчера.
2. Даем им 30 минут и смотрим по MAE и MFE в WL. Таким образом я пытаюсь хоть как то релизовать предложенные стопы (сложность в том что на 15 минутных котировках совершенно непонятно, первым тебя вынесет по стопу в 0,5% или даст зафиксировать профит по 0,5/1%) . 
Оке. Берем данные с 2010 по 2018 годы. Акции с обьемом от 300 лямов.
Оцениваем. Вот если просто закрыть через полчасика:
/> /> /> />
Названия строк


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

Торгуем боковик Сбера

Приветствую, коллеги.

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

Казалось бы, все просто – покупай от нижней границы и продавай от верхней, и выгода у тебя в кармане. Но тот, кто реально торгует, прекрасно знает, как психологически сложно, во-первых, дождаться этой границы, поскольку цена может развернуться либо не дойдя до нее, либо пробив уровень. А во-вторых, войти в сделку, ведь согласитесь, подсознательно мы всегда ожидаем, что, подойдя к границе, цена пробьет ее и, как здесь некоторые выражаются, «выстрелит ракетой»).

Начнем с простого, определим границы боковика и его середину. Для нынешнего сбера – это 201 – нижняя, 209 – верхняя, и 205 – середина. Теперь даем себе установку – продавать выше 207, покупать выше 203.
Торгуем боковик Сбера

Сформулируем первое правило:



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

То, о чем так долго говорили... МИКРО фьючерсы на основные индексы США

Свершилось!

В мае 2019 года СМЕ начнет предоставлять для торговли четыре микро Е-mini фьючерса на индексы S&P500, Dow, Nasdaq-100, и Russell 2000

Ниже- ответы на те вопросы, которые, вне сомнения, будут интересовать вас в связи с этим событием.


Когда будут доступны для торговли микро E-mini?
 
В мае 2019 года CME Group предоставит для торговли следующие фьючерсные контракты:
Микро E-mini S&P 500
Микро E-mini Nasdaq-100
Микро E-mini Dow
Микро E-mini Russell 2000

Для чего СМЕ Group запускает данные контракты?

С тех пор, как мини фьючерсы начали свой путь в 1997 году, их долларовая стоимость значительно увеличилась. Как пример, ниже представлен график S&P 500 с момента его запуска в 1997 году.
То, о чем так долго говорили... МИКРО фьючерсы на основные индексы США
Номинальная стоимость фьючерса E-mini S&P 500 увеличилась с примерно $47000 в день начала его торговли до $125000 на 31 декабря 2018 года. Количество капитала, которое небоходимо индивидуальному трейдеру для доступа к подобным рынкам, стало достаточно веским. Чтобы увеличить доступность фьючерсных рынков для большего количества индивидуальных трейдеров, СМЕ будет предоставлять возможность торговать микро контрактами на самые популярные индексы. Размер этих контрактов будет в 10 раз меньше размера стандартных контрактов (например, микро контракт E-mini S&P 500 будет иметь мультипликатор $5 вместо $50 у стандартного контракта).​

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

Квик, стакан..

вчера разговаривал с одним парнем, он построил элементарного робота на основе данных стакана.
Квик, стакан..

выводятся эти цифры так

Квик, стакан..

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Внутренний Бар – описание стратегий торговли

    • 24 января 2019, 18:44
    • |
    • Eric
  • Еще
Здравствуйте. Я уже публиковал статью на Смартлабе про пин бары - https://smart-lab.ru/blog/copypaste/516782.php. Сегодня хочу выложить комплексное руководство по торговле внутренними барами. Информация собрана из многих источников, упорядочена и очищена от ошибок.

Что из себя представляет Внутренний бар?

Внутренний Бар – это отличный сигнал о том, что предыдущий тренд собирается продолжить своё движение, но он так же может использоваться для выявления разворотных точек рынка.

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

Давайте разберёмся с тем, что такое Внутренний Бар, и как он выглядит.

внутренний бар

Внутренний Бар – это маленькая зона консолидации рынка. Обычно после такого сетапа следует его прорыв вверх или вниз. Но в этой статье мы разберём прорыв в направлении предыдущего движения рынка.



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

Как работает дивидендная отсечка? Когда покупать акцию, чтобы получить дивиденды?

Тут на нашем форуме в ветке поступление дивидендов был задан такой вопрос. Я решил продублировать ответ в отдельный пост.

Дивидендная отсечка работает так:

есть дата закрытия реестра официальная. Например у Ростелекома сейчас 13 января. 
Эту дату вы можете найти на форуме акций Ростелекома или в нашем дивидендном календаре:
Как работает дивидендная отсечка? Когда покупать акцию, чтобы получить дивиденды?

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

Если вы торгуете на бирже, то ваши акции учитываются у номинального держателя — депозитарии Мосбиржи (АО НРД), а не в реестре.
Депозитарий передает информацию о владельцах акций в реестр на день закрытия реестра.

На Мосбирже работает режим поставка акций на счёт-депо в Депозитарий на второй рабочий день после совершения сделки.
Поэтому чтобы получить дивиденды, вам надо быть в реестре на 2 рабочих дня раньше «отсечки».

Отсечка Ростела приходится на 13 января, воскресение (обычно кстати она все-таки в рабочий день).
Вам надо чтобы акции поступили на ваш счет-депо уже в пятницу 11 января, т.к. в выходные биржа не работает.
Для этого придется их купить на 2 рабочих дня раньше — 9 января.

Если вы купите акции Ростелекома 10 января, в четверг, то на ваш счет-депо они будут зачислены только в понедельник. К этому моменту закрытие реестра уже произойдет и вы останетесь без дивидендов.


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