Секреты TSLab | Торговые роботы | События
1 Мар

Кэш скриптов для чайника. Часть 1.

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

кэш скриптов для чайника. рисунок 1

Рисунок 1. Опция изменяющая размер кэша скриптов.

Вот об этом кэшэ и пойдет речь, тем более что с помощью него можно делать много интересного через TSLab API.

Кэш скриптов. Зачем он нужен?

Так как парадигма TSLab предусматривает отсутствие в скрипте какого либо внутреннего состояние между двумя пересчетами (из пересчета в пересчет скрипт, созданный в визуальном редакторе, не может переносить каких либо данных), поэтому на каждом пересчете скрипту приходится заново обсчитывать все индикаторы/параметры/значения необходимые для принятия торгового решения. В результате мы имеем проблему лишних расчетов. На одном  пересчете мы считаем индикаторы, на другом считаем, на третьем считаем и наш процессор спасибо за это не скажет. Но если в режиме агента этого практически не избежать, ведь у нас постоянно приходят новые данные по инструменту, то вот в режиме тестирования и оптимизации избежать этого можно и даже нужно.  Избежать этого и поможет кэш скриптов. Если обобщить назначение кэша, то можно все упаковать в одну фразу: “Кэш скриптов, позволяет сохранять информацию между пересчетами скрипта”. Не очень информативно получилось, поэтому перечислим те возможности, которые кэш скриптов нам дает:

  • ускорить оптимизацию, за счет сохранения рассчитанных индикаторов.
  • сохранять между пересчетами важные данные.
  • обмениваться данными между скриптами.

Может показаться, что последние два пункта имеют сомнительную важность, но я спешу опротестовать подобное мнение. Если вы используете в расчетах скрипта информацию, не доступную в виде исторических данных, то кэш скриптов вам поможет.  Какие такие данные могут быть недоступны в виде истории? Чаще всего это данные по стакану или общему объему заявок на бирже, но есть и другие варианты. И если вы еще не столкнулись с необходимостью использовать кэш скриптов, то наступит день и час когда вы начнете его использовать. Может быть это будет уже завтра.

API позволяющее использовать кэш скриптов.

Функций, реализующих весь функционал, немного. Всего их 5. Ниже они все перечислены:

    /// <summary>
    ///  Записать объект в кеш, который не стирается между расчетами
    /// </summary>
    void StoreObject(string key, object data);

    /// <summary>
    /// Загрузить объект из кеша, который не стирается между расчетами
    /// </summary>
    object LoadObject(string key);

    /// <summary>
    /// Записать объект в кеш, который является общим между различными агентами и скриптами.
    ///Данные в кеше могут быть стерты, если программе не хватает памяти.
    void StoreGlobalObject(string key, object data);

    /// <summary>
    ///  Загрузить объект из кеша, который является общим между различными агентами и скриптами.
    /// Данные в кеше могут быть   стерты, если программе не хватает памяти.
    /// </summary>
    object LoadGlobalObject(string key);

    /// <summary>
    ///  Получить/сгенерировать, если нужно, данные с плавающей точкой из кэша
    /// </summary>
    IList<double> GetData(string handlerName, string[] parameters, CacheObjectMaker<IList<double>> maker);

На самом деле методы GetData() имеет несколько перегрузок, каждая из которых возвращает список с другим типом элементов, но нет смысла их все отдельно перечислять, тем более что чаще всего используется именно метод с double элементами.

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


comments powered by HyperComments

Иван
2017-01-01 03:44:22
Секс знакомства http://bit.ly/2hkF2s9
14
Июл
2017

Доверительное управление. Результаты в июне 2017 года.

Доверительное управление. Результаты в июне 2017 года. Июнь индекс РТС вновь провел преимущественно в боковых движениях, а… »

11
Июн
2017

Доверительное управление. Результаты в мае 2017 года.

Доверительное управление. Результаты в мае 2017 года. В мае “болтанка” индекса РТС продолжилась, на паре… »

7
Май
2017

Доверительное управление. Результаты в апреле 2017 года.

Доверительное управление. Результаты в апреле 2017 года. В апреле мы наблюдали очередной месяц “боковика” по… »

2
Апр
2017

Доверительное управление. Результаты в марте 2017 года.

Доверительное управление. Результаты в марте 2017 года. В марте волатильность на рынке несущественно выросла. Все… »

7
Мар
2017

Доверительное управление. Результаты в феврале 2017 года.

Доверительное управление. Результаты в феврале 2017 года. Февраль был самым коротким торговым месяцем, к тому же… »