Избранное трейдера Александр Павлов

по

Размерность range баров.

Привет, Всем!

Хотел бы рассчитать размерность range баров, чтобы их количество в одном дне было бы как и количество 5 мин баров.

Написал скрипт но значения так разнятся. Может кто-то уже занимался таким вопросом? 

Рассчитанное значение величины range в поле <RAZMER>

Размерность range баров.
<code>"""
Для расчета рендж баров эквивалентных 5 мин
"""
from pathlib import *

import pandas as pd
import talib


def body(open: float, close: float) -> float:
        return abs(close - open)


if __name__ == "__main__":
    # 198 баров 5м в дне (с 7:00)

    period: int = 198
    source_file: Path = Path('c:\data_quote\data_finam_RTS_5m\SPFB.RTS_210301_220131.csv')
    df: pd = pd.read_csv(source_file, delimiter=',')  # Считываем тиковые данные в DF
    
    # Преобразуем столбец <TIME>, где нужно добавив 0 перед часом
    df['<BODY>'] = df.apply(lambda x: body(x['<OPEN>'], x['<CLOSE>']), axis=1)
    df['<RAZMER>'] = talib.MA(df['<BODY>'], timeperiod=period, matype=0)

    df_15: pd = df.loc[df['<TIME>'] == 150000]  # Бары в 15:00

    print(df_15.tail(20))

    """
    Получается, что рендж бар для фьючерса RTS должен быть размером 250, чтобы количество баров в дне, 
    примерно совпадало с с количеством 5 мин баров. 
    """</code>

На тему граалей и алКоторговли #RI

На тему граалей и алКоторговли #RI

С
истемы все описаны у Демарка и Ларри Вильямса. Тесты были одним контрактом. Соединены вместе на одном графике 5 систем. Соотвественно 5 контрактов. 
Сами системы:
На тему граалей и алКоторговли #RI

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

Пассивный доход с прибыльным алгоритмом машинного обучения (+8% на Сбере за день)

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

Обучил сеточку минутками за 18-е число и торговал бэктесом 19-е число доходность по бэктестам 85,6%
Пассивный доход с прибыльным алгоритмом машинного обучения (+8% на Сбере за день)

Свечи
Пассивный доход с прибыльным алгоритмом машинного обучения (+8% на Сбере за день)



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

Отчет об исследовании формации "Уровень"

    • 19 января 2022, 17:01
    • |
    • GOLD
      Популярный автор
  • Еще
Продолжаю выкладывать отчеты о тестировании теханальных формаций, которые используют инфоцыгане для совращения малолетних трейдеров. Сегодня отчет касается формации «Уровень». Это самая красивая (и потому — самая надроченная) формация. С помощью нее инфоцыгане зарабатывают миллионы на курсах и рекламе, а миллионы малолетних трейдеров теряют свои сэкономленные на обедах депозиты.

Для того, чтобы увидеть уровень, алгоритм должен увидеть на графике экстремум (например — минимум) слева от бара, на котором принимается торговое решение. Для этого алгоритму нужно задать несколько параметров (изображены стрелками):
Отчет об исследовании формации "Уровень"
Как только минимум найден, алгоритм ждет цену возле его уровня с некоторым допуском. Как только цена вошла в торговый диапазон — алгоритм совершает сделку (лонг или шорт — отскок или пробой).

Алгоритм перебирает параметры во вложенных циклах, исследуя самые разнообразные ценовые загогулины, образующие пресловутый «уровень» на минимумах и на максимумах. Сделки совершаются с симметричным стоп-тейком, размер которого также является изменяемым параметром во вложенном цикле. Делается два теста — сделки в лонг (отскок), а потом сделки в шорт (пробой). Все положительные результаты сохраняются в массив, который индексируется по разным критериям и на его основе выводится отчет о тесте.

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

Практическое использование нейросетей на рынке 2. На примере трансформеров.

  Таки собрался дописать вторую часть своих результатов применения трансформеров для предсказания на российском фондовом рынке. Может и хорошо что не спешил, так как пафос первой части о трансформерах дающих какие то уникальные результаты по сравнению с другими архитектурами нейросетей, оказался несколько преувеличенным, по крайней мере LSTM дал вполне сравнимый результат с трансформерами. Потом я попробовал градиентный бустинг, дерево решений и вновь получил схожий результат. Так что подавайте в нейросеть правильные признаки и многие модели покажут положительный результат. Тем не менее, раз я начал с трансформерах, и так как их архитектура хорошо отражает рынкок, о них и продолжу. 
  Для любителей вопросов о «таймфреймах, на чем обучал, какие акции, что в качестве таргета, какие параметры, время удержании позиции» итп итд. Акции МосБиржы, из числа наиболее ликвидных. Данные у меня с 2011 до 2021 (и это увы необходимость, так как именно с 2011 года время работы биржи стало 9 часов). Прогнозы строил следующим образом — выкидывал один год (это out-sample), а из оставшихся делал разбивку на train и test. Таким образом получил 10 одногодичных прогнозов. Для меня важно получить доходность на сделку пусть поменьше, но чтобы прибыльность подтверждалась на как можно большем диапазоне, и на всех акциях. Такое чтобы для каждой акции своя модель — для меня неприемлемо. И само собой никаких убыточных годов, как минимум. Знаю многие меняют системы каждые 3 года и для них это нормально, я предпочитаю вылавливать аномалии которые работают десятилетиями. Тут я никого не учу, рынок сам рассудит.    



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

Стратегия случайного открытия позиции

    • 09 января 2022, 16:07
    • |
    • Diamond
  • Еще
В качестве эксперимента возникла гипотеза о случайном открытии позиций и оказалось, что в TradingView уже готовая стратегия, которая это делает. Её код выглядит так:

//@version=4
strategy(title="Random Entries Work", shorttitle="REW", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.USD,commission_type=strategy.commission.percent,commission_value=0)

// === GENERAL INPUTS ===
strategy = input(defval="Long Only",title="Direction",options=["Long Only", "Short Only", "Random"])
enter_frequency = input(defval=10,minval=1,maxval=100,title="Percent Chance to Enter")
exit_frequency = input(defval=3, minval=0,maxval=100,title="Percent Chance to Exit",tooltip="This should be much lower than Percent Chance to Enter. Higher values decrease time in market. Lower values increase time in market.")
start_year = input(defval=2020, title="Start Year")


// === LOGIC ===
r = random(0,100)
enter = enter_frequency > r[0]
exit = exit_frequency > r[0]
direction = random(0,100) >= 50

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    strategy.opentrades == 0 and enter and (strategy == "Long Only" or (strategy == "Random") and direction) and 
       time > timestamp(start_year, 01, 01, 01, 01)
exitLong() =>
    exit
strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() =>
    strategy.opentrades == 0 and enter and (strategy == "Short Only" or (strategy == "Random" and not direction)) and 
       time > timestamp(start_year, 01, 01, 01, 01)
exitShort() =>
    exit
strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())


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

❤ Что общего между долгосрочным инвестированием в дивидендные акции России и компостированием (производством компоста на дачном участке)

Параметры Пенсионного фонда «Кубышка» по состоянию на 23 августа 2021 года

  Пенсионный фонд Кубышка, активы на 23 августа 2021 года Пенсионный фонд Кубышка, активы на 23 августа 2021 года

Активы достигли максимума «за всю историю наблюдений».

Но не стоит обольщаться. Любая политическая напряженность приведет к снижению фондового рынка России. Или другие события мирового масштаба и воздействия. И портфель просядет.



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

Решился вопрос с ошибками в моем коде на питоне для QuantConnect

Тут я размещал код и просил помощи c ошибками которые вылезли  smart-lab.ru/blog/696676.php
Код был такой:
Решился вопрос с ошибками в моем коде на питоне для QuantConnect


У так же попросил помочь комьюнити QuantConnect.
Они мне прислали правильный вариант. 
Вот он. Может быть кому то будет полезно. Одним скрином не влез. 
Решился вопрос с ошибками в моем коде на питоне для QuantConnect

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

Как слать сообщения в телеграм из питона в три строчки

Удобно когда бот шлёт сообщения в телеграм, а не в лог файл. Как это можно сделать в python? Очень просто.

Как слать сообщения в телеграм из питона в три строчки

Шаг 1. Устанавливаем либу loguru. Вам же нужно логирование в боте? Через loguru настраивается парой строчек.
Шаг 2. Устанавливаем либу notifiers которая шлёт сообщения куда угодно тоже парой строчек.
Шаг 3. Настраиваем

# подключаем либы
from loguru import logger
from notifiers.logging import NotificationHandler

# прописываем параметры телеграм бота, от чьего имени и куда слать, где их взять думаю сами разберетесь
params = {
    'token': 'dfdfsfasdfljsahdfkljhasdfklj',
    'chat_id': 'dfkdsflksdjfls;kfjas;ldkf'
}
tg_handler = NotificationHandler("telegram", defaults=params)

# добавляем в logger правило, что все логи уровня info и выше отсылаются в телегу
logger.add(tg_handler, level="INFO")

Я у себя настроил уровень info. Использую его как раз для сообщений в телегу. А вот debug сообщения в телегу уже не приходят. Нечего эфир засорять. Подробнее про уровни логов можно почитать в справке docs.python.org/3/library/logging.html#logging-levels

Шаг 4. Отправляем сообщение
logger.info("Слава роботам! Убить всех человеков!")

Если не нужны логи, можно слать просто через notifiers.

Связь Lua -> ваша программа. RAM Disk.

    • 11 мая 2021, 21:33
    • |
    • 3Qu
  • Еще
Я, вроде, уже писал подобный пост. Давно. Но, новое — хорошо забытое старое.
Очень многие неплохо владеют основами программирования, но написать DLL, связь через TCP или что-то другое для экспорта-импорта в Lua — это достаточно сложная процедура, и требует дополнительных знаний и много времени. Однако, если такую связь как-то по простому реализовать, то решились бы многие проблемы обмена данными с C#, Python и другими средами, и не надо вникать во всяческие C-API и прочие премудрости.
Однако, есть достаточно простой и доступный способ — обмен данными через файлы. Например, так:
1. программа Lua пишет строку (строки) данных в формате CSV в файл data.csv,
2. программа Lua создает пустой файл flag.ddd,
3. ваша программа проверяет наличие файла flag.ddd, что означает, что данные готовы к чтению,
4. при наличии файла flag.ddd программа читает данные файла data.csv и удаляет файл flag.ddd,
5. программа Lua проверяет наличие файла flag.ddd, и если этот файл отсутствует пишет строку (строки) данных в файл data.csv (см. п.1)
При обратном обмене происходит все тоже самое, только имена файлов другие.

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

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