На графике по данным параметрам создаётся только один объект и только на последней свечке, хотя понятно, что с такими требованиями должны были бы создаваться объекты на каждой.

Как это можно исправить?
void OnDeinit(const int reason)
{
ObjectsDeleteAll(); // удаляются все объекты с графика.
}
for(int i=24; i>=0; i--)
{
if(MathAbs(Close[i]-Open[i])>telo*_Point)
{
PutTrendLine("up1",Time[i],High[i]+delta*_Point,Time[i]+PeriodSeconds()*10,High[i]+delta*_Point,Red);
PutTrendLine("up2",Time[i],High[i]+sigma*_Point,Time[i]+PeriodSeconds()*10,High[i]+sigma*_Point,Red);
PutTrendLine("dn1",Time[i],Low[i]-delta*_Point,Time[i]+PeriodSeconds()*10,Low[i]-delta*_Point,Red);
PutTrendLine("dn2",Time[i],Low[i]-sigma*_Point,Time[i]+PeriodSeconds()*10,Low[i]-sigma*_Point,Red);
PutTrendLine("mid",Time[i],(High[i]+Low[i])/2,Time[i]+PeriodSeconds()*10,(High[i]+Low[i])/2,Aqua);
}
}
// Переменная в начале определений
#define SECONDS_PER_DAY int(60 * 60 * 24)
// Вызов функции в теле робота
Comment("\n Profit: ", Earn(TimeCurrent() / SECONDS_PER_DAY * SECONDS_PER_DAY));
// Сама функция
double Earn(datetime startDate = 0)
{
double result = 0;
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))
continue;
if(OrderMagicNumber()!=Magic)
continue;
if (startDate > OrderCloseTime())
break;
result += OrderProfit() + OrderSwap() + OrderCommission();
}
return(result);
double Earn(datetime startDate = 0) { double result = 0; for (int i = 0; i <= OrdersHistoryTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)) { if(OrderMagicNumber()==Magic) { if (startDate < OrderCloseTime()) result += OrderProfit() + OrderSwap() + OrderCommission(); } } } return(result);
datetime d0 = StrToTime(TimeToStr(TimeCurrent(),TIME_DATE)); // сегодня Comment("\n Profit: ", Earn(d0));
RefreshRates();
axe44