Избранное трейдера Evgen Grig
Нахожусь в процессе написания механизма торгового робота, работающего на Московской бирже через API одного из брокеров. Брокеров имеющих своё АПИ для МосБиржи катастрофически мало — мне известно только о трёх. При этом, когда я стал публиковать модули робота (и полностью выложу готовый механизм робота на GitHub), то стал получать непонимание — например, мне писали в комментариях — зачем придумывать велосипед, когда уже есть QUIK — популярная российская платформа для биржевых торгов. В Квике уже есть готовый функционал «импорт транзакций из файла» или таблица «карман транзакций». В тех же комментариях предлагали даже рассмотреть использование платформы 1С для робота, но оказалось, что торговля все равно будет осуществляться через импорт .tri-файла
в Квик.
Лично мне Квик не очень нравится тем, что это программа для Windows. Хочется иметь механизм торгового робота, который был бы кроссплатформенным и легким — это позволит использовать его даже на «слабом» сервере. К тому же, много лет назад, когда Квик был единственной альтернативой для частного лица, невозможно было внутри одной Windows без использования виртуальной машины запустить несколько копий программы технического анализа с разными системами — для того, чтобы каждая из этих копий отправляла свои сигналы на покупку и продажу в соответствующий Квик.
import pylunar
import pandas as pd
import matplotlib.pyplot as plt
df = intraday_df.resample('D').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'})
df = df.dropna()
Теперь в df содержатся дневки IMOEX.
*** Вычисляем процентное изменение цены за один день
df['pct'] = df['Close'].pct_change().shift(-1)
*** Изменение цены за один день
df['diff'] = df['Close'].diff().shift(-1)
Делаем стобец для хранения лунных дней
df['age'] = 0.0
mi = pylunar.MoonInfo((55,45,7),(37,36,56))
Здесь цифры (55,45,7),(37,36,56) — широта и долгота г.Москвы
Великая депрессия была худшим экономическим кризисом в современной истории, продолжавшимся с краха фондового рынка 1929 по 1939 год.Великая депрессия наиболее сильно затронула США, Канаду, Великобританию, Германию и Францию, но ощущалась и в других государствах. В наибольшей степени пострадали промышленные города, в ряде стран практически прекратилось строительство. Из-за сокращения спроса, цены на сельскохозяйственную продукцию упали на 40—60 %.
Великой депрессии предшествовало десятилетие названное как «ревущие 20-е». Хотя это время и было десятилетием экономического роста и повсеместного процветания, обусловленного восстановлением после разрушений военного времени и отложенных расходов, строительным бумом и быстрым ростом потребительских товаров, таких как автомобили и электроэнергия. Экономика Соединенных Штатов, успешно перешла от экономики военного времени к экономике мирного времени.
Replikant_mih, последнюю мою систему Квик просто физически не потянул, хотя вся его задача была, это трансляция данных и получение заявок. До заявок дело не дошло.))
3Qu Сегодня в 00:28
3Qu, использовать события типа On-Anything для чего-то, кроме table.sinsert() — очень плохая идея. Никаких ДЛЛ в событиях! Эти события — в главном потоке Квика.
Для обработки данных из таблицы следует использовать table.sremove() в функции main(). Например в цикле через wait (1) или wait(100) — тыщу или 10 раз в секунду. И очищать накопления в таблице одним махом.
Rostislav Kudryashov Сегодня в 01:02
Rostislav Kudryashov, про main я в курсе. С другой стороны, что отдать в main, что сразу в ДЛЛ — время практически одинаковое (еще неизвестно, куда быстрее)). Дальше по любому асинхронно.
Кстати, и через main не тянет. Даже с пропусками части значений.
Квик, кстати, не виснет, с виду все нормально, время сервера начинает отставать от реала. Как вам данные 5-ти минутной давности?))
Классически, эффективность использования денежных средств определяется рентабельностью. Оценим эффективность торговли разными фьючерсами с этой точки зрения. Замечу, что кроме приведенных здесь рассуждений выбора фьючерсов следует помнить и про иные критерии, такие как ликвидность, «понятность» для трейдера и проч.
В нашем случае денежные средства, обеспечивающие формирование прибыли – это гарантийное обеспечение (ГО) позиции + возможные просадки (их в расчетах учитывать не будем). У фьючерсов разные волатильность, ГО, шаг цены и стоимость шага цены. Поэтому сравнивать прибыльность фьючерсов по количеству пунктов в тейке бессмысленно. Необходимо привести показатели прибыли разных фьючерсов в сопоставимый вид — это % от ГО, или сравнить их другим сопоставимым способом.
Дальнейшие рассуждения и расчеты сделаны для торговли внутри дня одной сделкой (для упрощения расчетов), использованы данные дневных интервалов, волатильность усреднена за 10 последних дней, выбраны только те фьючерсы, которыми я торгую. Волатильность или торговый диапазон (ТД), рассчитывается классически: ТД = High — Low.
Сегодня:
Узнаем общее количество заявок
Функции getNumberOf и getItem
Как пройтись циклом по всем заявкам
Вывод активных заявок
Снять скриптом заявку
Снимаем все активные заявки скриптом
Снимаем только заявки, выставленные конкретным скриптом
В прошлый раз мы научились выставлять скриптом заявки в терминале, теперь можем поработать с ними.
Выставим скриптом 5 заявок на покупку и продажу от лучших цен BIDи OFFERстакана заявок с шагом в 0,01.
Напишем функцию, которая будет выдавать нам необходимые цены (лучшую цену спроса и предложения) со стакана:
И возвращать -1, если предложения или покупки в стакане не найдены (стакан закрыт, либо нет торгов).
Тогда основной алгоритм в main будет выглядеть: