Я написал отдельную прогу учёта сделок и комиссий и ведения баланса, чтобы потом из файла вытащить значение баланса. Иначе в течении дня сложно точно знать значение баланса, т.е. всёравно надо брать значение предыдущего торгового дня. А так сразу стейтмент ведётся, учёт баланса и учёт открытых/закрытых позиций.
Квиковцы сказали что можно посчитать так: CBPLPLANNED + CBPLUSED + VARMARGIN - TS_COMISSION
Я написал отдельную прогу учёта сделок и комиссий и ведения баланса, чтобы потом из файла вытащить значение баланса. Иначе в течении дня сложно точно знать значение баланса, т.е. всёравно надо брать значение предыдущего торгового дня. А так сразу стейтмент ведётся, учёт баланса и учёт открытых/закрытых позиций.
Квиковцы сказали что можно посчитать так: CBPLPLANNED + CBPLUSED + VARMARGIN - TS_COMISSION
Если у вас не было переноса позиций, а торговля только в течении дня, то легче вычислить баланс. Потом вопрос клиринга в 13:00. Вам много полей придётся учитывать в связи с дневным клирингом. А истории сделок, которые ведутся автоматически у вас не будет всёравно. Так что без напряга не получится.
Последний раз редактировалось автором 02.10.2012 13:24, всего редактировалось 3 раза
Я написал отдельную прогу учёта сделок и комиссий и ведения баланса, чтобы потом из файла вытащить значение баланса. Иначе в течении дня сложно точно знать значение баланса, т.е. всёравно надо брать значение предыдущего торгового дня. А так сразу стейтмент ведётся, учёт баланса и учёт открытых/закрытых позиций.
Квиковцы сказали что можно посчитать так: CBPLPLANNED + CBPLUSED + VARMARGIN - TS_COMISSION
Если у вас не было переноса позиций, а торговля только в течении дня, то легче вычислить баланс. Потом вопрос клиринга в 13:00. Вам много полей придётся учитывать в связи с дневным клирингом. А истории сделок, которые ведутся автоматически у вас не будет всёравно. Так что без напряга не получится.
А что не так с клирингом? Вот он прошел, я не вижу больших косяков в получившейся сумме. Да не совпадает с отчетом брокера на пару рублей, но мне такой точности не надо в этом вопросе. При -15% будет рублем больше или рублем меньше, мне уже без разницы, робота однозначно надо стопорить
Я вроде бы накатал 1го робота. Мне хочется, чтобы меня покритиковали. Я знаю, что все так просто не может быть
Стратегия оч простая. На фьючерсе с интервалом в 1 час. Единственное, что я не успел сделать, это учесть совет ross'a о том, что я торги по цене открытия сделать не смогу.
Пересчение 2х средних. Период быстрой = 27, период медленной = 87. Алгоритм при пересечении 2х линий закрывает логн (или шорт) и открывает шорт (лонг). И так туда-сюда инвертирует позицию. Я скачал часовые свечи с биржи с 1 января 2011 до сегодня. И он показал прибыльную статистику. Я вроде бы установил просказльзывание и комиссию.
Может быть я что-то где-то упустил из виду. Буду рад любой критике
ooo... Интересная мысль о размере средних. Я сам до нее не дошел из-за малого опыта на биржах наверное.
Я лично думал о другом способе решения этой проблемы. Прежде всего я согласен, что оптимизация параметров -- не решение всех земных проблем, т.к. параметры "затачиваются" под прошлое. А будущее - это не всегда прошлое.
Я думал об адаптивном или самообучающемся алгоритме. Покритикуйте эту идею пожалуйста. Выставить какие-нибудь периоды для средних. Как только робот совершил какую-либо сделку (открыл и закрыл позицию), он тут же анализирует свое деяние. Возможно лучше было бы закрыться раньше, или открыться позже. Но робот принял решение открываться именно в тот момент, поскольку у него был параметр средней настроен на такую-то длинну. Однако теперь, оглядываясь назад, робот может увидеть, что если бы длинна средней была на единчку меньше (либо больше), то эта сделка оказалась бы выгоднее. Соответственно, он меняет свой параметр (адаптируется к окружающей среде). Естественно, 1 сделки недостаточно, чтобы менять параметр, используется коэффициент под названием learning rate, который сглаживает все это дело.
На примере: Текущий период средней = 10. Робот понял, что сделка была бы выгоднее, если бы период средней был на 2 еденицы короче. И у него установлена learning rate = 0.01
10 - 2 * 0,01 = 9,98 -- он адаптировал свой период на чуть-чуть.
И на выходе допустим использовать Math.Round( 9.98 ); В конечном итоге после N сделок, которые все будут сигнализировать о том, что период стоило бы уменьшить, робот его уменьшит.
То есть идея это иметь параметры системы, дать возможность роботу делать "работу над ошибками" (дать ему возможность понимать из-за какого параметра сделка оказалась неуспешной) и дать ему возможность изменять свои параметры после работы над ошибками. Такой подход даст роботу "короткую память". Сделка совершенная полгода назад практически уже не будет иметь влияние на сегодняшний результат, но вот сделка, совершенная вчера -- будет иметь довольно большое влияние на завтрашнюю сделку.
Также после прочтения статьи о средних, у меня появилась идея. А ведь можно еще для улучшения результатов использовать данные об объеме. Я могу ошибаться, но насколько я понял, если цена меняется (вроде бы как есть тренд), то для пущей уверенности можно посмотреть на объем торгов (если он растет, то это действительно тренд, а если объем не меняется или падает, то это не очень уверенное движение цены)
Инструмент = (UX-C) Тип выборки = Тиковые данные Разделитель полей = запятая (,) Разделитель целой и дробной части = точка (.) Формат даты = yyyyMMdd Формат времени = HHmmss
Последний раз редактировалось автором 04.10.2012 14:44, всего редактировалось 2 раза
Никто так ничего и не написал. Я возможно попробую реализовать подобного робота в будущем.
А еще вопрос, новичку вы бы посоветовали на каком тайм-фрейме начинать? И в чем преимущества и недостатки длинного и короткого тайм фреймов? Я вижу преимущество короткого тайм фрейма в том, что торгуя на часовых свечах, для робота картина меняется лишь раз в час, и лишь на границе часов он может сделать сделку ( а возможно 5 минут назад цена была еще более выгодной) -- то есть у него не настолько гибкие входы и выходы из позиции. А работая на более коротком таймфрейме можно решить открывать позицию и еще допустим в течении 10 мин искать лучшее (наиболее выгодное) время для ее открытия.
Идею можно реализовать значительно проще. Делайте оптимизацию за предыдущий месяц (год) каждый день. Тогда каждый день Вы будете использовать максимально эффективное решение под предыдущий месяц и отличатся от Вашего варианта оно будет лишь на ту дельту, которую робот внес бы за текущий день. Впрочем, Вы можете запускать отпимизацию каждые пару часов. И тогда дельта будет стремится к о(1).