//============================================================================================================================
double currentOffset = 400; // Глобальная переменная для текущего значения
double currentHigh =-0.03; // Глобальная переменная для текущего значе
double currentLow = -0.11; // Глобальная переменная для текущего значения
int OnInit()
{
EventSetMillisecondTimer(1); // Установка таймера с интервалом в 1 миллисекунду
return(INIT_SUCCEEDED);
}
//============================================================================================================================
//============================================================================================================================
void OnTimer()
{
for (int i = ObjectsTotal() - 1; i >= 0; i--)
{
string objName = ObjectName(i);
if (ObjectType(objName) == OBJ_TREND)
{
datetime timeStart = (datetime)ObjectGetInteger(0, objName, OBJPROP_TIME1);
double priceStart = ObjectGetDouble(0, objName, OBJPROP_PRICE1);
datetime timeEnd = (datetime)ObjectGetInteger(0, objName, OBJPROP_TIME2);
double priceEnd = ObjectGetDouble(0, objName, OBJPROP_PRICE2);
double priceDifference = priceEnd - priceStart;
double percentageDifference = (priceDifference / priceStart) * 100;
int timeDiff = timeEnd - timeStart;
double timeDifference = (double)timeDiff;
//============================================================================================================================
double labelOffsetAdjusted = priceStart < priceEnd ? currentHigh : currentLow;
double verticalOffsetUp = currentOffset * _Point;
double verticalOffsetDown = currentOffset * _Point;
double verticalOffsetAdjusted = priceStart < priceEnd ? verticalOffsetUp : verticalOffsetDown;
//============================================================================================================================
string displayTexts[5];
displayTexts[1] = StringFormat("Цена: %.5f Пункты (%.5f%)(%.2f%%)", priceEnd, priceDifference, percentageDifference);
//============================================================================================================================
//============================================================================================================================
for (int j = 5; j >= 0; j--)
{
string labelName = objName + IntegerToString(5 - j);
ObjectDelete(0, labelName);
double positionY = priceEnd + labelOffsetAdjusted + ((5 - j) * verticalOffsetAdjusted);
// Проверяем, существует ли уже объект. Если да, то просто обновляем его свойства.
if (ObjectFind(0, labelName) != -1)
{
// Объект существует, обновляем его свойства
ObjectSetString(0, labelName, OBJPROP_TEXT, displayTexts[j]);
ObjectSetInteger(0, labelName, OBJPROP_COLOR, (j == 1 ) ? clrRed : clrBlack);
ObjectSetInteger(0, labelName, OBJPROP_FONTSIZE, 9);
}
else
{
// Объект не существует, создаем новый
if (ObjectCreate(0, labelName, OBJ_TEXT, 0, timeEnd, positionY))
{
ObjectSetString(0, labelName, OBJPROP_TEXT, displayTexts[j]);
ObjectSetInteger(0, labelName, OBJPROP_COLOR, (j == 1 ) ? clrRed : clrBlack);
ObjectSetInteger(0, labelName, OBJPROP_FONTSIZE, 9);
}
}
}
}
}
}