Так как ночью улетаю в отпуск и в связи с этим делать ничего не хочется, написал скрипт для контроля просадки.
Как это должно работать:
Скрипт в указанное время сохраняет данные из графы "Баланс" в таблице "Счета" в TsLab'e и если просадка от записанных значений превышает заданный порог, записывает в глобальный кэш сообщение о необходимости прекратить торговлю. Предполагается, что торгующий скрипт загрузит это сообщение из кэша и закроет позиции. Время записи баланса и максимальной допустимой просадки регулируются с контрольной панели.
Ключ для загрузки данных из кэша имеет вид: "IsTradeEnable" + secRt.PortfolioName. PortfolioName - это имя счета. Графа "Счет" в в таблице "Счета" в TsLab'e. Значение "true" означает, что просадка в пределах нормы, false что нет. Величина текущей просадки выводится в лог скрипта.

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

Как бы я тестировал работу скрипта:
Имеет смысл открыть новый субсчет и положить на него, скажем, 100 рублей. Дальше можно имитировать изменение баланса выводя с субсчета деньги и контролировать работу скрипта через лог. Также имеет смысл создать агента, который имитирует торговый скрипт для проверки получения и обработки сигналов от управляющего скрипта.


Attachments
DrawdownMonitoring.cs (60 downloads)
DrawdownMonitoring.tscript (36 downloads)