abelok писал(а):И ещё: оператор AsTime(....) - задаёт текущее время или этим оператором можно задавать интервал времени.
Это не текущее время.
AsTime(int HH, int MM, int SS) – создание значения времени.
"Текущее" время бара это BarTime() (время открытия бара)
Интервал задаётся простым сравнением, например
Код: Выделить всё
BarTime() > AsTime(10,0,0) && BarTime() <= AsTime(11,0,0)
В данном случае условие выполнится если время бара находится в интервале от 10 до 11 часов.
Но Вашу задачу это не решает, так что путь другой.
abelok писал(а):Например, как мне задать время " N секунд после начала бара BarTime(...)"?
1. Как я и описал выше, необходимо включить триггер при выполнения условия (без каких либо сравнений времени бара с конкретным временем)
2. По этому триггеру (включен) выдаем звук (на каждом баре при выполнении OnUpdate()) и проверяем не пора ли его выключать, например, через заданное N - количество баров от момента старта.
простой пример, чтоб не лить воду

Код: Выделить всё
function Initialize()
{
StrategyName = "MyMTS";
// Параметр N - количество баров проигрывания звука после сигнала
AddParameter("N", 5, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 0;
ShortLimit = 0;
// Триггер проигрывания звука
AddGlobalVariable("Play", Types.Boolean, false);
// Индекс сигнального бара
AddGlobalVariable("StartIndex", Types.Int, 0);
}
function OnUpdate()
{
// Проигрываем звук N раз
if (Play)
{
PlaySound(InnerSystemSounds.Asterisk);
if (CurrentIndex - StartIndex >= N) Play = false;
}
// Сигнал о начале проигрывания звука
if ( Input1.Close > SMA(Input1.Close, 20) && Input1.Close[1] < SMA(Input1.Close, 20)[1] )
{
Play = true;
StartIndex = CurrentIndex;
}
}