пользовался собственным индикатором, который выводит сообщение с помощью функции ShowMessage(), и подает звуковой сигнал с помощью PlaySound при выходе цены за пороговые значения (PriceLow, PriceHigh - в коде).
После обновления терминала до версии 4.0.1890.1424, в участке кода, где переменным AlertHigh и AlertLow присваиваются текущие значения цены, почему-то переменные не изменяют своего значения.
Не могу понять почему так происходит, может быть не совпадение типов переменных AlertHigh и Input.Close[0]?
Помогите пожалуйста. Код прикладываю.
Код: Выделить всё
function Initialize()
{
IndicatorName = "PriceInformer";
AddParameter("PriceLow", 50);
AddParameter("PriceHigh", 60);
AddParameter("TicksDelay", 10);
AddParameter("isShowMessage", 1);
AddParameter("isPlaySound", 1);
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddSeries("A", DrawAs.Custom, Color.Red, AxisType.Default, true, Axes.Parent);
AddGlobalVariable("Tick", Types.Int);
AddGlobalVariable("AlertLow", Types.Double);
AddGlobalVariable("AlertHigh", Types.Double);
}
function Evaluate()
{
// Последнее значение цены
if (CurrentIndex == MaxIndex)
{
if ( Input.Close[0] > PriceHigh)
{
AlertHigh = Input.Close[0]; //Здесь переменная AlertHigh не принимает значение Input.Close[0]
}
if ( Input.Close[0] < PriceLow)
{
AlertLow = Input.Close[0]; //Здесь переменная AlertLow не принимает значение Input.Close[0]
}
Tick = Tick+1;
//ShowMessage( BarTime().Seconds); //BarTime().Seconds
if (Tick >= TicksDelay )
{
Tick = 0;
if (AlertHigh>0){
if (isShowMessage == 1){
ShowMessage("Цена ВЫШЕ:" + AlertHigh);
}
if (isPlaySound == 1){
PlaySound( InnerSystemSounds.Exclamation );
}
AlertHigh = 0;
}
if (AlertLow>0){
if (isShowMessage == 1){
ShowMessage("Цена НИЖЕ:" + AlertLow);
}
if (isPlaySound == 1){
PlaySound( InnerSystemSounds.Asterisk );
}
AlertLow = 0;
}
}
// InnerSystemSounds.Exclamation – восклицание
// InnerSystemSounds.Asterisk – внимание
// InnerSystemSounds.Beep – Сирена
// InnerSystemSounds.Hand – Стоп
// InnerSystemSounds.Question – Вопрос
}
}