Мда, забавно.
Про использование lock у меня все правильно написано. Ни ошибок, ни дезинформации нет. Вопрос только где и как блокировку использовать.

А вот про то, что статическое поле одно на все скрипты, это вы ошибаетесь. Лаба каждый скрипт, и даже копии одного и того же скрипта, загружает и выполняет как отдельную самостоятельную сборку. Т.е. создает в памяти копии кода скрипта в виде отдельных сборок. Соответственно и статических переменных, определенных в скрипте, в памяти будет столько, сколько копий скрипта запущено. Т.е. каждый скрипт будет использовать свое статическое поле.
Это что касается статических переменных в теле скрипта. А в случае нахождения статического поля в сборке с индикаторами, загружаемыми лабой при ее старте, все скрипты, использующие это поле, будут обращаться к одному и тому же полю (ячейке памяти). Тогда разные скрипты могут одновременно обновлять это поле и, соответственно, ВОЗМОЖНО, нужна его блокировка.
Между пересчетами, значение статического поля не меняется, но стоит вам перезапустить скрипт, как использоваться будет уже другая сборка и другое поле и ранее сохраненные в него значения будут недоступны.

По поводу потоков: да, каждый скрипт исполняется в своем потоке. В деталях, конечно же, все несколько сложнее.

Приведите код своего скрипта, использующего статическую переменную. Удалите все, что ненужно (суть стратегии), но оставьте пример, как вы используете эту переменную, посмотрим.
_________________________
Не пишите мне! Никому ничего делать не буду.