Избранное трейдера Кошкин Сергей

по

Золотые правила откатов.

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

Для примера взяты последние данные Сбербанка, в часовом формате(1 свеча — 1 час)

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

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

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



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

Уровень знания на смарт-лабе

Увидел ТУТ пост значит на нашем любимом смарт-лабе.

Название будоражит — Банки исключают из пищевой цепочки!

Среди лайкнувших есть г-н Олейник, что весьма странно....

Речь идет о денежном рынке МБ, о РЕПО с ЦК. Автор заканчивает пост словами - Лед тронулся господа, те банки что мы знали лет через 5 изменятся до неузнаваемости или вымрут.  Комментарии комментировать не будем.

Ох… а то, что рынок РЕПО с ЦК существует уже ни один год — никто видимо не знает, автор точно. И причем тут банки? Сегодня это брокерский бизнес. Звонишь брокеру (если есть такая услуга и договоренность) и говоришь — хочу РЕПО с ЦК. Есть остатки? — размещай, т.ч. скорее уж брокеров выжимают, а не банки. Наверное, если биржа сделает прямой доступ к СВОП-ам, то появится аналогичный пост. То что сегодня СВОП-ы доступы давно для всех (через брокера) тоже для многих загадка:-) Для тех кто не в теме, РЕПО это деньги-бумаги (условно), а СВОП-ы это деньги-деньги. 

Да и кого выжимают? Те у кого есть 3 млрд рублей (кажется столько прописали) да им любой брокер с минимальным интересом даст эти сервисы. Реально компании, дай Бог 0,3% наварят из крупняка на прямом доступе. Только необходимый штат и структура может их и сожрет. Ну а те кто поменьше — не получат ничего.

В общем учите мат часть. Звоните брокерам и требуйте РЕПО с ЦК и СВОПЫ, если есть хотя бы 5 млн рублей на счете и будет Вам счастье. Иметь свободный кэш овернайт и давать им пользоваться брокеру, а не получать с него % — вверх идиотизма:-)

С добрым утром!

Код робота на LUA для QUIK

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

Предназначается для новичков в алготрейдинге, что-то типа болванки.

Важно: выставление заявок я закомментировал, поэтому можете смело запускать этот скрит, он не натворит ужаса по счету.

require"QL"

log = "sbrf.log"
seccode = "SRM6"
lots_in_trade = 80
accnt = ""
better = -5
chart = "sberbankxxx"
is_run = true
prev_datetime = {}
len = 100
basis = 9
k_bal = {0,1,2,3}
sell = false
buy = false
id = 0
first = true

function trade_signal(shift)
        number_of_candles = getNumCandles(chart)
        bars_temp,res,legend = getCandlesByIndex(chart,0,number_of_candles-2*len-shift,2*len)
        bars={}

        i=len
        j=2*len
        while i>=1 do
                if bars_temp[j-1].datetime.hour>=10 then
                        sk=true
                        if bars_temp[j-1].datetime.hour==18 and bars_temp[j-1].datetime.min==45 then
                                sk=false
                        end
                        if sk then
                                bars[i]=bars_temp[j-1]
                                i=i-1
                        end
                end
                j=j-1
        end

        t = len+1

        do_sell = false
        do_buy = true

        value = 0
        if do_sell then value = 1 end
        if do_buy then value = -1 end
        toLog(log,"value="..value.." on candle: "..bars[len].datetime.year.."-"..bars[len].datetime.month.."-"..bars[len].datetime.day.." "..bars[len].datetime.hour..":"..bars[len].datetime.min.."   O="..bars[len].open.." H="..bars[len].high.." L="..bars[len].low.." C="..bars[len].close.." V="..bars[len].volume)
        return value
end

function mysplit(inputstr, sep)
        if sep == nil then
                sep = "%s"
        end
        local t={} ; i=1
        for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                t[i] = str
                i = i + 1
        end
        return t
end

function OnInit(path)
        log=getScriptPath()..'\\'..log
        toLog(log,"==========OnInit: START")
        toLog(log,"==========OnInit: FINISH")
end

function OnStop()
        is_run = false
        toLog(log,"==========OnStop: script finished manually")
end

function CheckBit(flags, bit)
   -- Проверяет, что переданные аргументы являются числами
   if type(flags) ~= "number" then error("Ошибка!!! Checkbit: 1-й аргумент не число!"); end;
   if type(bit) ~= "number" then error("Ошибка!!! Checkbit: 2-й аргумент не число!"); end;
   local RevBitsStr  = ""; -- Перевернутое (задом наперед) строковое представление двоичного представления переданного десятичного числа (flags)
   local Fmod = 0; -- Остаток от деления
   local Go = true; -- Флаг работы цикла
   while Go do
      Fmod = math.fmod(flags, 2); -- Остаток от деления
      flags = math.floor(flags/2); -- Оставляет для следующей итерации цикла только целую часть от деления
      RevBitsStr = RevBitsStr ..tostring(Fmod); -- Добавляет справа остаток от деления
      if flags == 0 then Go = false; end; -- Если был последний бит, завершает цикл
   end;
   -- Возвращает значение бита
   local Result = RevBitsStr :sub(bit+1,bit+1);
   if Result == "0" then return 0;
   elseif Result == "1" then return 1;
   else return nil;
   end;
end;

function killorders(ccode,scode)
    for i=0,getNumberOf("orders")-1,1 do
        local t=getItem("orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end

function killstoporders(ccode,scode)
    for i=0,getNumberOf("stop_orders")-1,1 do
        local t=getItem("stop_orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_STOP_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["STOP_ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end


function main()
        toLog(log,"==========main: START")
        while is_run do
                if isConnected() == 1 then
                        ss = getInfoParam("SERVERTIME")
                        if string.len(ss) >= 5 then
                                hh = mysplit(ss,":")
                                str=hh[1]..hh[2]
                                h = tonumber(str)
                                if (h>=1000 and h<1400) or (h>=1405 and h<1845) or (h>=1905 and h<2350) then
                                        if first then
                                                for ti = 50,2,-1 do     trade_signal(ti) end
                                                if buy and not sell then message(seccode.." Current state: green and buy",1) end
                                                if sell and not buy then message(seccode.." Current state: red and sell",1) end
                                                if buy and sell then message(seccode.." ERROR: green and red",1) end
                                                if not buy and not sell then message(seccode.." WARNING: nothing",1) end
                                                first = false
                                        end
                                        prev_candle = getPrevCandle(chart,0)
                                        if not isEqual(prev_candle.datetime,prev_datetime) then
                                                current_value = trade_signal(1)

                                                if current_value ~= 0 then
                                                        optn = "B"
                                                        if current_value==1 then optn = "S" end
                                                        curvol=0
                                                        no=getNumberOf("FUTURES_CLIENT_HOLDING")
                                                        if no>0 then
                                                                for i=0,no-1,1 do
                                                                        im=getItem("FUTURES_CLIENT_HOLDING", i)
                                                                        if im.sec_code==seccode then
                                                                        curvol=im.totalnet
                                                                        end
                                                                end
                                                        end
                                                        trvol = -current_value*lots_in_trade-curvol
                                                        if trvol ~= 0 then
                                                                killorders("SPBFUT",seccode)
                                                                killstoporders("SPBFUT",seccode)
                                                                f = io.open(getScriptPath().."\\sbrf2_pos.txt","r")
                                                                sbrf2_pos=f:read("*n")
                                                                f:close()
                                                                f = io.open(getScriptPath().."\\sbrf3_pos.txt","r")
                                                                sbrf3_pos=f:read("*n")
                                                                f:close()
                                                                pr,n,l = getCandlesByIndex ("futsber", 0, getNumCandles("futsber")-1, 1)
                                                                local trans =
                                                                {
                                                                        ["ACTION"] = "NEW_ORDER",
                                                                        ["CLASSCODE"] = "SPBFUT",
                                                                        ["SECCODE"] = seccode,
                                                                        ["ACCOUNT"] = accnt,
                                                                        ["OPERATION"] = optn,
                                                                        ["PRICE"] = toPrice(seccode,pr[0].close+current_value*better),
                                                                        ["QUANTITY"] = tostring(math.abs(curvol-sbrf2_pos-sbrf3_pos)),
                                                                        ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id)
                                                                }
                                                                id = id+1
                                                                --res = sendTransaction(trans)
                                                                message(seccode.." Send : " .. res, 2)
                                                                toLog(log,"Send: ".. res)
                                                                for btr=0,200,5 do
                                                                        local trans =
                                                                        {
                                                                                ["ACTION"] = "NEW_STOP_ORDER",
                                                                                ["CLASSCODE"] = "SPBFUT",
                                                                                ["SECCODE"] = seccode,
                                                                                ["ACCOUNT"] = accnt,
                                                                                ["OPERATION"] = optn,
                                                                                ["PRICE"] = toPrice(seccode,pr[0].close-current_value*btr),
                                                                                ["STOPPRICE"] = toPrice(seccode,pr[0].close-current_value*(btr+better)),
                                                                                ["QUANTITY"] = tostring(6),
                                                                                ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id),
                                                                                ["EXPIRY_DATE"] = "GTC"
                                                                        }
                                                                        id = id+1
                                                                        --res = sendTransaction(trans)
                                                                        message(seccode.." Send : " .. res, 2)
                                                                        toLog(log,"Send: ".. res)
                                                                end
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal")
                                                                end
                                                        else
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal, but nothing to do")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal, but nothing to do")
                                                                end
                                                        end
                                                else
                                                        if buy and not sell then toLog(log,"Nothing to do. Current state: green and buy",1) end
                                                        if sell and not buy then toLog(log,"Nothing to do. Current state: red and sell",1) end
                                                        if buy and sell then toLog(log,"Nothing to do. ERROR: green and red",1) end
                                                        if not buy and not sell then toLog(log,"Nothing to do. WARNING: nothing",1) end
                                                end
                                                prev_datetime = prev_candle.datetime
                                        end
                                end
                        end
                end
                sleep(5*1000)
        end
        toLog(log,"==========main: FINISH")
end
  • обсудить на форуме:
  • Quik Lua

GOLD - свежие данные и возможный СИЛЬНЫЙ рост ...



GOLD… ситуация… -
будет дополнено анализом новостей — фундамент… — далее вывод ...


(если кратко — возможно сходим вверх… сильно и быстро ...)


GOLD - свежие данные и возможный СИЛЬНЫЙ рост ...




____

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

Хотите деньги "Срубить" по быстрому и грамотно?

Внизу дневной график индекса ММВБ.

Локально в данное время дно!

А, почему локально? Так как на более старших ТФ разворотом не пахнет,
хотя на недельном графике есть для этого предпосылки.

Поэтому я и указал на графике две цели: Краткосрочную (~1885 п.) и среднесрочную (~1960 п.), т.к. я не занимаюсь прогнозами, а торгую свои сценарии!

Хотите деньги "Срубить" по быстрому и грамотно?


Но, всё таки рассчитываю, точнее рассчитывает моя ТС, рост будет примерно 2-е недели, но продаю в любом случае только по факту (Сигнал).

Так вот уважаемый Смартлаб, у тебя есть возможность «Срубить» бабло в низко рискованной сделки, задействовав при этом высокое плечо.
Заработав скажем 20% на сделку в краткосрочной сделке, я лично такие обожаю...
При этом обязательно выход по достижению уровня ~1885 п.
А, почему вы прочитаете из этого поста: Взрыв волатильности (День тренда) или простая, но крайне эффективная контртрендовая стратегия!

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

Золото. Gella&Vladimi®. Кому выпадет, тому сбудется!!!

Сегодня вечером Джаннет Йеллен будет дарить подарки. Кому повезет (выпадет сектор «Приз») – быкам или медведям, будет ли сам рост ставки-  не стану обсуждать.

Надеюсь, волатильность на новости, ни у кого не вызывает споров? Именно она, может вынести котировки на непредсказуемые уровни и к этому надо быть «двусторонне готовым».

Я вижу свою позицию такой – на графике отметил зону продаж (экстремум отскока на Трампе) и зону покупок, ее описал в блогах, опубликованных ранее:

Золото. Gella&Vladimi®.  Кому выпадет, тому сбудется!!!

Чем мне нравится рынок, тут можно занимать две позиции одновременно. Кстати маркетмейкеры так и делают – «обкладывают» базовый актив опционами. Система называется – «цилиндр», при умелом обращении превращается в синтетическую облигацию.

Подобная абракадабра (фьюч плюс два и потом еще один опцион), позволяет гарантировано уйти без убытка или заработать до 25% в месяц.

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


ВОТ ВАМ ЕЩЕ ОДНА ИДЕЯ, NEW LOW PATTETN!!!

Приветствую!!!

Если еще не надоел со своими Паттернами :)

Для начала рекомендую ознакомиться с моей старой статьей :Pattern искусственного обвала цен Buy&Sell
И еще обратить, Ваше внимание вот на эту статью :Лучший месяц или день? Пример фьючерс на австралийца или AUDUSD
Мы приближаемся хорошей возможности не много подзаработать :)

Сегодня хочу рассказать еще об одном интересном Паттерне называться NEW LOW PATTETN.
Эта модель хорошо работала в прошлом и почему бы ей не работать и в будущем ?

Вы скорее всего торговали эту комбинацию и были не на той стороне …. Вы вероятно поймали стоп, когда эта модель давала сигнал на покупку!

У большинства всегда есть аргумент что за нашими стопами охотятся или что рынки сфальсифицированы.

Я никогда не соглашался с подобным мышлением… Я думаю, что рынки делают то, что они собираются делать. Наверняка, публика становится очень эмоциональной, когда цены идут до новых минимумов и выходят из своих позиций. Умные деньги, видя, что это происходит, входят в рынок с длинной стороны… вот и появляется такой эмоциональный паттерн. Я назвал это Новый Лоу Паттерн. Он основан на сценарии, который я только что изложил. 
ВОТ ВАМ ЕЩЕ ОДНА ИДЕЯ, NEW LOW PATTETN!!!



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

Индикатор звукового сигнала VR Alert

Индикатор звукового сигнала VR Alert

Индикатор VR Alert предназначен для своевременного оповещения трейдера о достижении ценой или временем заданного уровня. Основная задача программы привлечь внимание трейдера к торговому символу, на котором произошло касание ценового уровня установленного трейдером. Уровни могут быть как прямо горизонтальными так и под углом, что позволяет контролировать пробой тренда. Ценовые уровни индикатора можно двигать в ручную мышкой на графике, для этого нужно уровень выделить двойным кликом мыши.

Важно заметить, что начиная с версии 17.05 можно установить зону работы индикатора. Другими словами, если цена пересекает линию то будет звуковой сигнал. Пример: Вы растянули линию в направлении тренда с 01.02.2017 года по 15.05.2017 года так вот индикатор выдаст звуковой сигнал только в том случае если линия будет пересечена именно с 01.02.2017 года по 15.05.2017 года. Таким образом Вы можете ограничить по времени зону в которой хотите получить сигнал.



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

Торговые стратегии.Триггер часть 1

Приветствую!!
Сегодня хотел бы продолжить тему Триггеров и Паттернов. Я уже в этой статье рассматривал  один Pattern искусственного обвала цен Buy&Sell.
Теперь хотел бы обратить ваше внимание еще на один интересный Триггер MAC.
Его надо использовать со сетапами, по отдельности он будет давать примерная точность 30%-45% но использование его со сетапами точность возрастает, сейчас я вам покажу и протестирую.
Триггер- используем две простые скользящие средние MA.
Правила:
МА (8) и строим по Low
MA(10) строим по High
Сигнал на Buy когда 2 полных бара последовательных закрываются выше МА.
Сигнал на Sell когда 2 полных бара последовательных закрываются ниже МА.
Зеленая линия МА это 8 пер. Красный линия МА 10 пер. И подсвечены 2 бара которые закрываются выше и ниже.Торговые стратегии.Триггер часть 1
Некоторые важные моменты.
— Когда 2 бара закрылись выше МА, Зеленая линия МА8 будет служить поддержкой для восходящего тренда.

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

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