При сохранении - восстановлении шаблона с советником не восстанавливается состояние Long only/Short only

 

Собственно, сабж. При сохранении - восстановлении шаблона с советником с помощью ChartSaveTemplate, ChartApplyTemplate не сохраняется состояние "Long/Short only" в свойствах советника (сбрасывается на Long & Short). Косяк, однако.

Демонстрация.

Советник MACD Sample, устанавливаем в свойствах Long only.

Сохраняем шаблон с помощью скрипта

void OnStart() {
   Print("Saving template AAA:");
   ChartSaveTemplate(ChartID(),"AAA");
}

Открываем новый график, применяем к нему шаблон с помощью скрипта

void OnStart() {
   Print("Applying template AAA:");
   ChartApplyTemplate(ChartID(),"AAA");
}

Открываем свойства советника - и вуаля, Long&Short

 
loopsider:

Собственно, сабж. При сохранении - восстановлении шаблона с советником с помощью ChartSaveTemplate, ChartApplyTemplate не сохраняется состояние "Long/Short only" в свойствах советника (сбрасывается на Long & Short). Косяк, однако.

Демонстрация.

Советник MACD Sample, устанавливаем в свойствах Long only.

Сохраняем шаблон с помощью скрипта

Открываем новый график, применяем к нему шаблон с помощью скрипта

Открываем свойства советника - и вуаля, Long&Short

Разработчики вроде писали, что так и должно быть. Ведь на вкладке Common все параметры связаны с безопасностью.

 
Ihor Herasko:

Разработчики вроде писали, что так и должно быть. Ведь на вкладке Common все параметры связаны с безопасностью.

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

Если быть точным, то дело в ChartApplyTemplate. Если применять один и тот же шаблон вручную, то в свойствах советника Long only, а если скриптом -- Long & Short. Больше похоже на баг, чем на фичу.

 
loopsider:

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

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

Если быть точным, то дело в ChartApplyTemplate. Если применять один и тот же шаблон вручную, то в свойствах советника Long only, а если скриптом -- Long & Short. Больше похоже на баг, чем на фичу.

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

 
Ihor Herasko:

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

Если рассматривать с этой стороны, это дыра в безопасности. В сохраненном шаблоне было ограничение "Long only", т.е. запрет всех шортов. При восстановлении шаблона скриптом этот запрет потерялся, т.к. разрешились сделки в обе стороны.