У вас не стоит Flash Player
Page 1 of 2 1 2 >
Настройки
#62191 - Tue May 13 2014 10:29 PM Модуль для расчёта размера позиции
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Озадачился идеей написать модуль на C# для динамического расчёта размера позиций, ставил такие условия:
1. Чтобы могло работать и в лаборатории и в реалтайме
2. Чтобы могло отличить фьючерс от акции к примеру
3. Для расчёта плеча и размера позиции использовать критерий Келли.
Вот что получилось, прошу знатоков С# покритиковать.

ВНИМАНИЕ!!!
Обсуждается только реализация методики на C#, но не сама методика расчёта размера позы.
Особенно приветствуются советы по оптимизации быстродействия.

Во вложении PosSize.dll и PosSize.cs - собственно код модуля расчёта.
SMA_01.cs - пример применения этого модуля с двумя средними.

На текущий момент нет возможности проверить работает ли в реалтайме.


Attachments
PosSize.zip (95 downloads)


Наверх
#62200 - Wed May 14 2014 09:14 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
отличить акцию от фуча проще используя sec.SecurityDescriptions пошарьте в нем найдете интересное.
Так же у акций сейчас все не так прозрачно с новыми шаманскими T+2 порядками.
Ну и конечно же не учтена стоимость шага цены для фучей. Вы работаете от пунктов, что в реалтайме приведет к перекосу. Депо вы запрашиваете в рублях а расчеты в пунктах ведете.
_________________________
__


Наверх
#62233 - Thu May 15 2014 08:13 PM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Подскажите пожалуйста если использовать secRt.FinInfo.StepPrice - в чем она вернёт мне шаг цены, в пунктах или рублях и как он соотносится с тем что я получу от secRt.Tick?

Наверх
#62235 - Fri May 16 2014 07:17 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
secRt.FinInfo.StepPrice это стоимость шага цены а не шаг цены.
естественно и ответ на второй вопрос такой же.
_________________________
__


Наверх
#62236 - Fri May 16 2014 09:51 AM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
То есть в рублях ?

Наверх
#62237 - Fri May 16 2014 10:22 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
Originally Posted By: GAW
То есть в рублях ?

в том в чем стоимость шага цены измеряется для данного инструмента. Для фьючерсов можно посмотреть на сайте moex.ru и обычно там в рублях. Для акций тоже в рублях. Смартком не дает такой информации имейте ввиду smile.
_________________________
__


Наверх
#62477 - Sat May 31 2014 09:05 PM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Доброго времени суток.

Выкладываю новую версию модуля. Исправленные функции PosSizeLongA и PosSizeShortA.

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

Что переделал:

Теперь я цену в пунктах привожу к цене в рублях. Таким образом образом единая система измерения стала.

Как я это делаю: беру стоимость шага(в рублях) и делю на шаг цены (бывает в пунктах а бывает в рублях), таким образом получаю стоимость 1 пункта вы рублях. Потом просто цену бумаги умножаю на стоимость пункта.

Теперь самый ключевой вопрос.
Я получаю шаг цены в пунктах через secRt.Tick,
a стоимость шага цены в рублях через secRt.FinInfo.StepPrice.
Верно ли это?

З.Ы. Планирую торговать через Финам, интересно они эти данные присылают...?

З.З.Ы. исправил ошибку в расчётах, убрал деление на размер лота, так как цена уже сразу за лот а не за одну бумагу.

З.З.З.Ы. Ещё одну ошибку исправил в вычислениях теперь стопудово все ОК.


Отредактировано GAW (Sat May 31 2014 09:30 PM)

Наверх
#62478 - Sat May 31 2014 10:32 PM Re: Модуль для расчёта размера позиции [Re: GAW]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
И все равно считает не правильно по сравнению с тем же реализованным в кубиках и Excel... По результатам скрипта C# всегда меньше лотов получается... Разница от 1 до 5.


Attachments
SMA_01.cs (98 downloads)
Блоки простые средние с управлением размером.tscript (103 downloads)


Наверх
#62479 - Sun Jun 01 2014 07:38 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
не обязательно использовать secRt. Сейчас уже эти данные есть и в sec. даже в лаборатории если брокер подключен можно их считывать и использовать.
_________________________
__


Наверх
#62487 - Sun Jun 01 2014 10:22 PM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Долго бился, искал причину неправильных вычислений и вот что выяснил:
значение оценки портфеля внутри модуля вычисления размера позиции не меняется. Все время остаётся тем же , которое было на первом баре.

Почему так?
Опять же код прилагаю.


Отредактировано GAW (Sun Jun 01 2014 10:23 PM)

Наверх
#62494 - Mon Jun 02 2014 07:15 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
а брокер то оценку портфеля меняет? может он тоже не учитывает вармаржу и не отдает ее. Отсюда и кривой расчет в реале данной цифры. Вообще не озвучены условия запуска скрипта чтобы можно было адекватно осмыслить.
_________________________
__


Наверх
#62495 - Mon Jun 02 2014 08:15 AM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Вообще пока тест в лаборатории.

а по поводу условий, не совсем понял.
Просто функция (класс, метод?) вызывается из скрипта в котором ведётся торговля и рассчитывает размер рекомендуемой позы.

Как то так:
public TSLab.Script.Handlers.PosSize PosSize_h = new TSLab.Script.Handlers.PosSize();

//Размер позиции в лонг
IList<double> nLongPosSize = ctx.GetData("LongPosSize",new[] { source.Symbol},
delegate { return PosSize_h.Execute(ctx, source, AvProfit, KvAvProfit, GORub, SysPart,StepSize,StepPrise,true); });

Так же во вложении файлег с примером на двух средних.


Attachments
SMA_01.cs (129 downloads)
PosSize.cs (134 downloads)


Наверх
#62496 - Mon Jun 02 2014 11:24 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
CurentDepoLocal = (double)secRt.EstimatedBalance;

вот здесь я полагаю баланс не меняется? Ну так сие логично ведь вы тут пробуете по истории пробежаться и при этом берете баланс с реала. А в прошлом какой был баланс? А на свече номер 125 какой был баланс? Тут явно некорректный подход увы. Смешать несмешуемое не получится.

Возможно я не понял что значит "Значение оценки портфеля". Если так то выражайтесь яснее.
_________________________
__


Наверх
#62573 - Fri Jun 06 2014 03:37 PM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Все разобрался и добился правильных вычислений. ra81, прав, проблема была в том, что я использовал делегирование и списки там, где их нельзя использовать.

Кому интересно - в выложенном фале PosSize.cs:
PosSize - НЕправильно работает
PosSizeA - работает ПРАВИЛЬНО

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

Есть идеи в чем может быть проблема?


Attachments
SMA_01.cs (125 downloads)
PosSize.cs (119 downloads)


Наверх
#62596 - Tue Jun 10 2014 06:56 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
бегло пробежался.
1) непонятно ваше пристрастие к использованию кубиков в своих кубиков. Если у вас есть константа нафиг создавать кубик константы и потом его запускать чтобы чтото расчитать? Имхо половину кода надо просто взять и выбросить чтобы стало читабельно.
2) тормозит потому что у вас в торговом цикле на каждой итерации запускается ваш кубик который опять по всем свечкам пробегается. Отсюда и тормоза как мне видится. Либо делайте кубик по последовательной схеме где прошлые расчеты кэшируются, либо чето еще придумывайте. Как кэшировать прошлые расчеты смотрите в адаптивных индикаторах.
_________________________
__


Наверх
#62611 - Wed Jun 11 2014 10:45 AM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Отвечаю по порядку:
1. Вставляю код для расчёта констант из того что сформировал TSLab в папке Temp, исходя из того что, TSLab уж знает чего и как писать надо.
2.Ага в PosSize.cs не стоит использовать списки? Я правильно понял?

Наверх
#62613 - Wed Jun 11 2014 12:53 PM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
1) это я понял, но не всегда нужно брать и копировать. иногда все же нужно взять и улучшить.
2) без списков не обойтись. Просто нужно как-то сделать чтобы все работало быстрее.
_________________________
__


Наверх
#62654 - Mon Jun 16 2014 12:15 AM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Радион, можете подсказать в каких случаях нужно использовать

source.ConnectDoubleList и source.ConnectSecurityList?

Tslab то использует их то нет... не улавливаю логику.

А так же выкладываю последние результаты творчества, актуальная версия PosSizeB. Удалось сократить время вычислений на C# до 0.9 времени вычисления на кубиках... Ни ахти что, ожидал большего.



Attachments
PosSize.cs (125 downloads)
SMA_01.cs (103 downloads)



Отредактировано GAW (Mon Jun 16 2014 12:49 AM)

Наверх
#62657 - Mon Jun 16 2014 07:41 AM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
Originally Posted By: GAW
Радион, можете подсказать в каких случаях нужно использовать

source.ConnectDoubleList и source.ConnectSecurityList?

Tslab то использует их то нет... не улавливаю логику.
Радион - это видеокарта такая smile.
А два метода нужны для того чтобы обеспечить обновление графика в реалтайме а не только по пересчету. В общем и целом штука мало нужная. Сам никогда в коде не использовал и даже не рассказывал ученикам 8).
Originally Posted By: GAW

А так же выкладываю последние результаты творчества, актуальная версия PosSizeB. Удалось сократить время вычислений на C# до 0.9 времени вычисления на кубиках... Ни ахти что, ожидал большего.

0,9 от кубиков это значит быстрее. Что уже отличный результат. Нужно ли еще быстрее? Тут просто нужно исходить из реалий. Главное чтобы работало ПРАВИЛЬНО!
_________________________
__


Наверх
#62659 - Mon Jun 16 2014 11:15 AM Re: Модуль для расчёта размера позиции [Re: ra81]
GAW Offline
journeyman

Registered: Tue Jun 07 2011
Записи: 64
Пардон, Родион.

Чтобы правильно, это главное - после каждого изменения в скрипте тестил, не изменились ли результаты.
Так что тут всё ОК.

А нужно ли больше? - Времени всегда не хватает особенно если оптимизация идёт пару дней.

Хотя в данном конкретном случае возможно и нет... Это ведь расчёт размера позы потребляет много времени, а при оптимизации можно его просто убрать и торговать одной шарой к примеру.

Таким образом считаем Mission Complited. Если будет чего нового выложу или отпишусь в этой теме.

Наверх
#62663 - Mon Jun 16 2014 01:03 PM Re: Модуль для расчёта размера позиции [Re: GAW]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
обычно много времени жрет обработка позиций. Это так. особенно их запрос на заданном баре.

Можно и здесь выиграть время. Об этом почитать можно тут
Ну а в остальном думаю что мишшн комплитед smile
_________________________
__


Наверх
Page 1 of 2 1 2 >


Moderator:  ViL, sar