Общие вопросы по разработке > UseClosedBar = false

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
ensh
Сообщения: 218
Зарегистрирован: 28 июн 2017, 13:56
Благодарил (а): 4 раза
Поблагодарили: 39 раз

Re: UseClosedBar = false

Непрочитанное сообщение ensh » 18 дек 2018, 09:05

В методе onUpdate создаем Task и творим что хотим, но желательно успевать за время таймфрейма, чтобы таски не накапливались - ресурсы не резиновые.

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: UseClosedBar = false

Непрочитанное сообщение Den » 18 дек 2018, 10:17

BugsDigger писал(а):А индикатор в результате вычисляется один раз или дважды? (Это можно узнать, сделав лог, сам не пробовал)
Если дважды, то можно попробовать оптимизировать
Что значат - понятно из контекста, но в документации отсутствуют. Или я что-то пропустил?


Это рабочая стратегия, вычисляется один раз - берет последнее значение вашего индикатора и сразу же (при запуске робота),не дожидаясь закрытия бара, исполняет согласно правилам.

Проблема пока одна - как сказал Дмирий Еремин установлено ограничение 5 сек и иполнение не более 1 раза за бар. Что обесценивает пока что введение

Код: Выделить всё

UseClosedBar=false


Обойти эти ограничения пока нельзя (по крайней мере этого никто еще не продемонстрировал).
Мы (то есть участники форума) уже пытались обходить на ходулях ограничения. Это плохо выходит.

AP_Bor
Сообщения: 170
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 12 раз
Поблагодарили: 8 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 18 дек 2018, 11:57

Доброго времени суток

Лирика о TF.

Порассуждаем:
Наши действия на торговой площадке.
1) Получить данные от брокера.
2) Передать брокеру приказ на определенное действие.

Получаем данные от брокера, для уменьшения трафика, брокер предоставляет данные об инструменте торговли нарезанные на TF. Пока все нормально, берем минимально возможный TF - для высокой детализации, аккумулируем данные для расчета перспективы позиции. Заметьте TF это для брокера, для нас это поток данных для обработки. По алгоритму ждем, покупаем, продаем или другими словами, передаем приказ брокеру, но TF в приказе нет, там инструмент количество, проскальзывание и цена

Итог, TF это переменная брокера которая необходима для расчета только на стадии принятия решения и в ней нет необходимости на других стадиях.

Попробуйте выполнить и проверить скорость.
1) Пустой OnUpdate();
2) OnUpdate() с локальными расчетами, но без Enter или Close.
3) OnUpdate() с Enter или Close, но без расчетов.

Старался изъясняться понятно, надеюсь, кому-то будет полезно.
С наилучшими пожеланиями

AP_Bor
Сообщения: 170
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 12 раз
Поблагодарили: 8 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 18 дек 2018, 12:56

Доброго времени суток, Den
Den писал(а):Мы (то есть участники форума) уже пытались обходить на ходулях ограничения. Это плохо выходит.

Уважаемый Den, я не могу назвать себя участником форума, так-как больше читаю, но все же я тоже его пользователь, попрошу не обобщать, от имени форума говорит только его организатор, в нашем случае Администратор.
Что касается меня, для меня TF не имеет принципиального значения, а если для вас не так, без обид, говорите от своего имени, когда в диалоге вы используете Мы, звучит как все кроме вас (вашего собеседника).
И еще, я у вас интересовался, что такое "Обходы на костылях", разработчики тоже программисты и тоже адаптируют реальные торги в электронные - это тоже костыли?
С наилучшими пожеланиями

ensh
Сообщения: 218
Зарегистрирован: 28 июн 2017, 13:56
Благодарил (а): 4 раза
Поблагодарили: 39 раз

Re: UseClosedBar = false

Непрочитанное сообщение ensh » 18 дек 2018, 14:22

AP_Bor писал(а):Доброго времени суток

Лирика о TF.

.....
Итог, TF это переменная брокера которая необходима для расчета только на стадии принятия решения и в ней нет необходимости на других стадиях.

....


Здесь похоже все перемешалось ;) Существуют стратегии для которых таймфрейм очень важен, а вот, цена входа и выхода, а также быстродействие - нипричем. И в принципе, в Альфа Директе, с его задержками информации с биржи и, случающимися, тормозами на выставлении заявок, это единственно разумные способы чего-то заработать.

Попытка адаптации каких-то HFT фишек и заморочек с ценой сделки и секундными таймфреймами и ловле внутри бара - ну можно конечно, тогда уж лучше за 50 тыщ в мес подключаться к ММВБ напрямую :?:

Есть еще вариант, использовать несколько таймфреймов одновременно для нахождения каких-то спекулятивных паттернов, тут была бы уместной система сообщений между роботами.

Ну и в наконец, никто не мешает в коде роботов использовать всю мощь MS .Net версии 4.0 самим агрегировать бары и тд и тп. на секундных таймфреймах, если времени будет хватать и задержка терпима.

AP_Bor
Сообщения: 170
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 12 раз
Поблагодарили: 8 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 18 дек 2018, 15:47

Доброго времени суток, ensh
ensh писал(а):Здесь похоже все перемешалось ;) Существуют стратегии для которых таймфрейм очень важен, а вот, цена входа и выхода, а также быстродействие - нипричем.
Мое мнение, таймфрейм очень важен, как скорость реакции на событие, выбираем минимальный TF и ждем срабатывание алгоритма.
ensh писал(а):Есть еще вариант, использовать несколько таймфреймов одновременно для нахождения каких-то спекулятивных паттернов, тут была бы уместной система сообщений между роботами.
Полностью согласен.
ensh писал(а):Ну и в наконец, никто не мешает в коде роботов использовать всю мощь MS .Net версии 4.0 самим агрегировать бары и тд и тп. на секундных таймфреймах, если времени будет хватать и задержка терпима.
Примерно об этом я и говорил.
Спасибо, познавательно.
С наилучшими пожеланиями

BugsDigger
Сообщения: 533
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 91 раз

Re: UseClosedBar = false

Непрочитанное сообщение BugsDigger » 18 дек 2018, 21:01

@ Den

> А индикатор в результате вычисляется один раз или дважды?

Вопрос был не о стратегии как таковой, а о том, считается ли индикатор дважды или все же однократно в коде

var lastLVal = MY.индикатор(Input1, 1).GetLastValues("L", 1)[0];
var lastHVal = MY.индикатор(Input1, 1).GetLastValues("H", 1)[0];

Видно, что подпрограмма вычисления ряда "индикатор(Input)" формально вызывается дважды.
Но я уже проверил с помощью логов (на всякий пожарный случай, т.к. всякие чудеса бывают): во второй строке точно берутся уже ранее посчитанные данные, так что запись

var ind = MY.индикатор(Input1, 1); // вычисление ряда
var lastLVal = ind.GetLastValues("L", 1)[0]; // использование ряда
var lastHVal = ind.GetLastValues("H", 1)[0]; // повторное использование вычисленного ряда

выигрыша по времени не дает, что, конечно, радует.

AP_Bor
Сообщения: 170
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 12 раз
Поблагодарили: 8 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 19 дек 2018, 00:22

Доброго времени суток, BugsDigger
BugsDigger писал(а):выигрыша по времени не дает, что, конечно, радует.
C# Сборка мусора
Почитайте, занимательно, а выигрыша по времени не дает потому, что переменная не выходила из поля видимости - за фигурные скобки "{...}". (срабатывает оптимизатор под компилятором)
Но оптимизация все равно необходима, избегаем дополнительной разметки и выделения памяти, копирования данных, это стандартный отладчик не видит, а процессор и память кушает.
Когда то игрался с очень точными счетчики времени по INT3 на MASM32(если о чем то ...), так вот там и обратил на это внимание.
► Показать
С наилучшими пожеланиями

BugsDigger
Сообщения: 533
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 91 раз

Re: UseClosedBar = false

Непрочитанное сообщение BugsDigger » 19 дек 2018, 08:41

> Сборка мусора

Я, конечно, не спец по C#, но тут ситуацию можно трактовать по-другому: если в первом вызове возвращается объект, то он временный, его область видимости - текущий оператор, и он вплоне м.б. освобожден. (Я имею в виду первый вариант кода без явного присвоения объекта серии локальной переменной). Но возвращается-то даже "более простой" объект (отдельный double). не вся последовательность.
То, что индикатор (как и ожидалось) не пересчитывается второй раз, это, скорее, отработка им самим своего внутреннего состояния, т.е. делается проверка, что значения за данный период уже вычислены, и значения берутся готовые, только и всего. Но проверить это никогда не мешает. ;)

AP_Bor
Сообщения: 170
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 12 раз
Поблагодарили: 8 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 19 дек 2018, 08:58

Доброго времени суток, BugsDigger

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

BugsDigger писал(а):Но проверить это никогда не мешает. ;)


С наилучшими пожеланиями


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей