Вы пытаетесь записать TimeSpan в DateTime.
из MSDNDateTime И TimeSpan типы значений отличаются в том, что DateTime представляет момент времени, а TimeSpan представляет интервал времени. Это означает, например, что можно вычесть один экземпляр DateTime из другого для получения TimeSpan , представляющий интервал времени между ними. Или можно добавить положительное TimeSpan с текущим DateTime для получения DateTime значение, которое представляет дату в будущем.
Можно добавить или вычесть временной интервал из DateTime объекта. Интервалы времени может быть положительным или отрицательным, могут быть выражены в единицах, таких как такты или секунды или могут быть выражен как TimeSpan объект.
Ещё один момент, это инициализация. Чтобы заработало надо что-то записать в глоб. переменную при инициализации, иначе в OnUpdate() её не будет. Поэтому делаем так:
Код: Выделить всё
AddGlobalVariable("VariableTime", Types.DateTime, DateTime.Today);
В АД действительно нельзя задать TimeSpan в глоб. переменных, т.к. доступен ограниченный набор типов.
AddGlobalVariable(Name, Types)AddGlobalVariable(Name, Types, Value) – функция создания статической переменной, которая сохраняет значение при следующем обращении к функции Evaluate(). В скрипте может быть определено несколько глобальных переменных.
Параметры:
• Name – строка - имя параметра.
• Types – тип переменной
o Int
o Long
o Double
o Boolean
o String
o DateTime
o IntList
o DoubleList
• Value – значение по умолчанию
TimeSpan частично и есть DateTime
Поэтому, как пример, добавим к дате бара или к дате наше время бара и 5 сек и запишем в глоб. переменную.
Код: Выделить всё
function Initialize()
{
StrategyName = "Проверка";
AddParameter("P1", 0, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "");
AddGlobalVariable("VariableTime", Types.DateTime, DateTime.Today);
}
function OnUpdate()
{
// запишем в DateTime глоб. переменную "Дата бара + время бара + 5 сек"
VariableTime = BarDate().Add(BarTime() + AsTime(0, 0, 5));
// Или
// Запишем в DateTime глоб. переменную "Дата 2018.01.01 + время бара + 5 сек"
VariableTime = AsDate(2018, 1, 1).Add(BarTime() + AsTime(0, 0, 5));
}