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

по

Покупка квартиры. Алгоритм.

    • 08 ноября 2021, 10:21
    • |
    • хм
      Популярный автор
  • Еще
На текущий момент, в рамках распределения депозита по разным корзинам, планируем купить квартиру в Новой Москве, т.к занимается этим мои родственник, разработали примерный алгоритм.

Ориентир — вторичка, т.к на новостройки сейчас застройщик дает ипотеку под 2% годовых. Видимо рассчитывая таким образом распродать весь построенный обьем на волне падения спроса.
Во вторичке ипотека сейчас 9% годовых, спрос минимальный, т.к 70-90% рынка, это ипотечные сделки.

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

При ином раскладе сидеть продавцы по текущим ценам будут очень долго, вплоть до того момента, пока инфляция не догонит рублевые цены на недвижимость.

Цены в рублях снижаться не будут. Цены могут снижаться только в валюте. Стоит учитывать это.


Первые шаги:
1. Определяемся, где и что хотим купить.
2. На сайтах собираем информацию по ценам на данный тип жилья, в данном районе.

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

₽ Бесплатный зарабатывающий робот: качаем

    • 01 ноября 2021, 21:54
    • |
    • Q Bot
  • Еще
Для тех, кто пока не в теме: у нас тут сериал, и это не первая серия.
Качать будем не робота, а данные для него. Для них. Для всех.

Что мы делали до этого?
1. Скачали и запустили платформу OsEngine
2. Познакомились с главными разделами, почитали доки

3. Скачиваем исторические данные

Напомню, зачем нам исторические данные. Они нам нужны для тестов и оптимизации. Умные люди роботов никогда не запускают сразу в «боевом» режиме для управления настоящими деньгами. Сначала нужно проверить, смог бы робот что-то заработать со своим алгоритмом на каких-то предыдущих периодах времени. Мы скармливаем роботу историю давно прошедших торгов, он пытается торговать, будто идут настоящие торги, и выдает нам какой-то результат. Есть заработок — хороший робот. Нет заработка — тоже наверняка хороший ;-) Но для чего-то другого, а не для заработка.

На всякий случай сообщу еще одну очевидную вещь, которая может оказаться не такой уж очевидной для новичков. Когда робот торгует по-боевому в реальном времени, одна минута проходит за одну минуту, а год проходит за один настоящий календарный год. Когда мы тестируем робота, мы можем подсовывать ему данные гораздо быстрее. Переварил робот свечку — сразу даем ему следующую. И 600 минутных свечек (10 часов реального времени) робот может обработать за несколько миллисекунд или секунд. Таким образом, за считанные минуты мы можем протестировать месяцы или годы предыдущих торгов.

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

Шаблон торговой системы на Python (backtrader, quantstats)

    • 22 сентября 2021, 21:54
    • |
    • Diamond
  • Еще
Сначала я пытался бэктестить системы в TradingView и этого было достаточно для быстрой оценки торговых гипотез, но оказалось, что мало просто знать, где купить и где продать. Не менее важно понимать, сколько купить или продать и для этого нужны другие инструменты.

Зачем Python?

Лично мне он показался удобнее. Например, можно быстро подключить telebot и система начнёт отправлять сигналы прямо в телегу на все девайсы. Работать со скриптами можно даже на айпаде где-нибудь в дороге, тоже плюс.

Самая простая система, которую можно потестить это пересечение двух скользящих средних: если быстрая SMA пересекает медленную вверх, то покупаем, а если вниз, то закрываем открытую позицию, шортить рынок не будем. Комиссии, проскальзывание и прочие расходы пока не учитываем, нужно начать с какой-то основы.

Что потребуется?

— backtrader для логики торговой системы

— quantstats для формирования отчёта

— Jupyter Notebook, если нужно удобнее редактировать код

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

Анализ и визуализация данных в финансах — анализ ETF с использованием Python

    • 18 сентября 2021, 00:55
    • |
    • Aleks
  • Еще
С проникновением аналитики во многие сферы нашей жизни она не могла обойти стороной финансы. В этой статье рассмотрим ее применение для анализа ETF с целью их анализа, в том числе и с применением визуализиции.

1. О данных

Для анализа будем использовать данные ETF c базовой валютой USD: FXCN, FXRL, FXIT, FXUS и FXRU. Временной ряд рассмотрим за три года с 2018 по 2020 года. Само исследование проведем в Google Colaboratory.

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

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from google.colab import files
import warnings
warnings.filterwarnings("ignore")
Сначала необходимо получить данные. Есть несколько способов. Мы воспользовались — взяли их с Finam в формате csv. Дальше написал функцию для обработки полученных данных и при помощи concat свел их в один датафрейм.

def changeDF(df):
  df['date'] = pd.to_datetime(df['<DATE>'].astype(str), dayfirst=True)
  name =[x for x in globals() if globals()[x] is df][0]
  df = df.drop(['<DATE>','<TIME>', '<OPEN>', '<HIGH>', '<LOW>'], axis=1)
  df = df.set_index(['date'])
  df.columns = [name+'_cl', name + '_vol']
  return df

fxgd_change = changeDF(fxgd)
fxrl_change = changeDF(fxrl)
fxit_change = changeDF(fxit)
fxus_change = changeDF(fxus)
fxru_change = changeDF(fxru)
fxcn_change = changeDF(fxcn)

etf = pd.concat([fxgd_change, fxrl_change, fxit_change, fxus_change, fxru_change, fxcn_change], axis=1)

etf.head()
В результате получили:

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

Хотите попрогнозировать рыночные котировки? Нет проблем - вот код.

    • 14 сентября 2021, 22:46
    • |
    • 3Qu
  • Еще
Итак, код обучения и прогнозирования нейросетью рыночных котировок на 5 минут.
import sqlite3 as sql
from scipy.stats import logistic
import math
import numpy as np
import numpy.random as rnd
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPRegressor

sdata =[]
sql1= "select ticker, date, open, high, low, close, vol \
    from Hist_1m where ticker_id=1 order by Date;"
con=sql.connect('C:/Users/ubase/Documents/StockDB/StockDB21.sqlite')
cur=con.cursor()
cur.execute(sql1)
sdata=cur.fetchall()
con.commit()
con.close()

Ldata = len(sdata)
N = 8000 # Количество сделок
ld = 5 #Продолжительность сделки
NNinterval = 20 # Количество входов NN

# Генерация случайных чисел
rng = rnd.default_rng()
rm=rng.integers(0, Ldata, N )

class Candle:
    tr = 0
    dt = 1
    o = 2
    h = 3
    l = 4
    c = 5
    v = 6
    
cl = Candle
DataC =[sdata[i][cl.c] for i in range(0,Ldata)]

# sigmoid линейность до 0.5
def sigmoidnorm(x, alfa = 0.9, xmin = -1.3, xmax = 1.3):
    return (xmax - xmin)*((1 / (1 + math.exp(-x*2.0*alfa))) - 1.0) + xmax

x = [0.002 * i - 3 for i in range(0,3000)]
y = [sigmoidnorm(x[i]) for i in range(len(x))]


plt.plot(x,y)
plt.grid()
plt.show()

# формируем сделки.
def DealsGenL(rm,ld):
   #Lm = len(rm)
   ix = []
   x = []
   pr = []
   
   for i in range(0,N):
        if rm[i] + ld < Ldata and rm[i] - NNinterval - 1 > 0:
            delta = (sdata[rm[i]+ld][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]+ld][cl.c]*100
            x0 = [sigmoidnorm((sdata[rm[i] - j][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]][cl.c]*100) \
                 for j in range(0, NNinterval)]
            ix.append(rm[i])
            x.append(x0)
            pr.append(delta)
   return ix, x, pr


Ix, X, Pr = DealsGenL(rm,ld)



Ib = 0
Ie = 100

plt.plot(X)
plt.legend()
plt.grid()
plt.show()


plt.plot(Pr, label = 'Prof')
plt.legend()
plt.grid()
plt.show()


regr = MLPRegressor(hidden_layer_sizes = [30,20,15,10,5], \
                    max_iter=500, activation = 'tanh')

regr.fit(X, Pr)
Out = regr.predict(X)

plt.plot(Pr, Out, '.')
plt.grid()
plt.show()
И вот результат прогнозирования:

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

Как я решил проблему с налогами у иностранного брокера?

В общем, в этом году налоговая прислала мне письмо счастья с просьбой уплатить налоги за 2018-2020 годы по счету, который нашли у меня на Кипре. 

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

Сказать что я был шокирован — ничего не сказать, потому что в моем брокерском отчете только за 2020 год было пару десятков тысяч сделок😁

Добрый инспектор сказала: ну ничего, посидите денька 3 и заполните. Нам и по 500 листов сдавали отчеты.

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

Что было дальше?

Я отправил Виктору брокерские отчеты за 3 года. Его бухгалтеры за 1 день посчитали мне налоги. Суммарно кстати получилось за 2020 год около 750 страниц😁
Далее я дал им логин/пароль от своего кабинета налогоплательщика и они автоматом занесли все данные туда.

Мне осталось лишь уплатить налог. Налоговая выставила счета, и я оплатил их со счета ИП, поскольку лично мне так было удобнее.

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

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

Сюрприз от Альфа банка спустя 12 лет.

    • 25 июля 2021, 10:22
    • |
    • хм
      Популярный автор
  • Еще
На банки ру новая интересная история 
www.banki.ru/forum/?PAGE_NAME=read&FID=61&TID=383831&PAGEN_1=3#forum-message-list


Добрый день. Возникла такая ситуация:
19.07 пришло сообщение от Альфа банка об изменении номера телефона. И тут же 2 сообщения с паролями. Не придал этому значения, решив, что это ошибка.
22.07 приходят 2 сообщения с паролями и третье сообщение об изменении на тот же номер, что и первый раз. Сегодня решили заехать в отделение и узнать что это было. В итоге 15 тысяч кредитная карта от 19.07 и 125 тысяч кредит от 20.07.
Беру справки об операциях, еду в полицию, пишу заявление о мошенничестве. С номером кусп обратно в банк для подачи заявления. Теперь ждать 7 дней официального ответа от банка.
Единственный раз с банком имел дело 12 лет назад через гипермаркет электроники. Ни приложения банка, ни личного кабинета не было. Информацию из смс никому не сообщал, ни кто не звонил.
Как так могло получиться и как дальше действовать?


Меры борьбы с новой напастью.

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

Индикатор Загзаг для Quik'а - лучший демонстратор тренда (и волн Эллиота). Даром

Всем известен старинный индикатор Пробоя. Этот индикатор для Quik'а найдёте на smart-lab.ru/blog/704033.php
Когда-то по нему торговали, покупая на пробое вверх максимума предыдущих N баров и продавая на пробое минимума. Похоже, сегодня эта стратегия вышла из моды.

Возможен другой подход к отслеживанию экстремумов. Регистрировать пробой не на фиксированном числе баров (по ширине графика), но на фиксированном уходе цены от предыдущего экстремума (по высоте графика). Это столь же известный индикатор Зигзаг. Минимальный уход цены от предыдущего экстремума — размах зигзага, необходимый для смены тренда, я именую силой тренда.

Мало кто пытался строить торговую стратегию на основе Зигзага. Самое ходовое возражение против Зигзага — он не предсказывает тренд. Абсурд. Никто и ничто не предсказывает будущего!
Более того. Зигзаг даёт самое объективное и наглядное представление о чередовании трендов заданной силы.

Я некоторое время назад уже предлагал вниманию публики индикатор зигзага для

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

Жирный пост - "Как создать прибыльного робота" с кучей примеров

Всем привет. 

Примеры реальные и каждый из вас может это протестировать после прочтения.

Весь секрет будет описан ниже,много примеров.

Приступим.

Все тесты проводились через ботов на tradingview, это сильно упрощает анализ и тесты.

Названия всех роботов и ссылки на них будут ниже в посте.

--------------

 Что нужно?????

1 Найти бота/ботов для тестирования

2 Найти инструменты на которых он будет тестироваться

3 Депозит примерно от 300 долларов, для реальной торговли, а в тестах депо стоит 10.000к — но не суть, там все равно маленькая часть торгуется.

Итак, мы сразу убираем высокорисковые инструменты, такие как: Форекс, Криптовалюты/валюты, низколиквидные акции и все что стреляет на сотни процентов в день/неделю. Так же забываем про плечи и открытие позиций в шорт. Что оставляем? Оставляем акции: дивидендных аристократов, с реальным бизнесом, с капитализацией не менее 1 млрд. долларов, развивающие компании, которые благополучно пережили падение 2008/2014/2020 и держатся на плаву. Таких компаний много, часть из них будут в примерах.



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

Индикатор пробоя. В Quik'е можно всё (почти). Исправление

Исправлена печать повторных пробоев одного того же экстремума.
По просьбам играющих smart-lab.ru/vopros/703796.php
В Quik'е нельзя только предсказывать будущее.
Индикатор Breakout рисует на графике котировок точки пробоя для экстремумов заданного числа Num баров. Для последнего интервала Num баров показывает уровни экстремумов.
Значение Num и признак Print печати сообщений на пробои можно поменять через параметры индикатора.

Чтобы в Quik'е использовать этот индикатор, поместите нижеследующий код в текстовый файл Breakout.lua, а сам этот файл в подкаталог LuaIndicators в том каталоге Quik'а, где лежит файл info.exe.
Чтобы метки пробоев были виднее, индикатор следует поместить после графика котировок. Эти метки позволят на глазок определить прибыльность пробойной стратегии.

-- Ростислав Дмитриевич Кудряшов, СПб, 2021
-- Индикатор Breakout для Quik: min и max Num баров
Settings = {
  Name  = "_Breakout"
 ,line = {
    {Name = "Min"
    ,Color = RGB (255,0,0)
    ,Type = TYPE_LINE
    ,Width = 1}
   ,{Name = "Max"
    ,Color = RGB (0,255,0)
    ,Type = TYPE_LINE
    ,Width = 1}
   ,{Name = "Lwr"
    ,Color = RGB (255,255,0) -- Жёлтый
    ,Type = TYPE_TRIANGLE_DOWN
    ,Width = 1}
   ,{Name = "Upr"
    ,Color = RGB (0,128,255) -- Тёмно-Голубой
    ,Type = TYPE_TRIANGLE_UP
    ,Width = 1}
  }
 ,Num = 10
 ,Print = 1 -- или 0
}
Scan = 0 -- При загрузке Quik сканирует 1 раз

function Init()
  return #Settings.line
end

function OnChangeSettings()
  Scan = 0
end

function OnCalculate (index)
  local n, mn, mx, ini, fin, upr, lwr, printFlag
  n = Settings.Num
  if n < 1 or index <= n then
    if index == 1 then
      Scan = Scan + 1
      SetRangeValue (3, 1, Size(), nil)
      SetRangeValue (4, 1, Size(), nil)
    end
    return nil
  end
  mn = math.huge
  mx = -math.huge
  ini = index - n
  fin = index - 1
  for i = ini, fin do
    mn = math.min (mn, L(i) or mn)
    mx = math.max (mx, H(i) or mx)
  end
  printFlag = Settings.Print > 0 and index == Size() and Scan > 1
  lwr = GetValue (index, 3)
  upr = GetValue (index, 4)
  if not lwr and L(index) and L(index) < mn then
    if printFlag then
      message (Settings.Name ..": Dn ".. mn)
    end
    lwr = mn
  end
  if not upr and H(index) and H(index) > mx then
    if printFlag then
      message (Settings.Name ..": Up ".. mx)
    end
    upr = mx
  end
  if index == Size() then
    SetValue (ini-1, 1, nil)
    SetValue (ini-1, 2, nil)
    SetRangeValue (1, ini, fin, mn)
    SetRangeValue (2, ini, fin, mx)
  else
    mn, mx = nil
  end
  return mn, mx, lwr, upr
end -- OnCalculate()

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