Добавил для отладки еще строчки. В OnInit:
Print("Equity: depozit=",depozit,", depozit2=",depozit2);
Values[12] = depozit; Values[14] = AccountInfoDouble(ACCOUNT_EQUITY); Values[16] = 5000;
Прекрасно работают все варианты:
У вас такая же версия терминала?.. А на депозите точно 5000 лежит?
Тогда я уже совсем ничего не понимаю...
Версия - 375 от 28 декабря, точно такая же, как у Вас.
Для проверки значения депо специально ввел блок условий и условие depozit=depozit2, то есть 5000 - соблюдается.
Предположил, что, может быть, дело в траблах с советником, и индикатор просто перетащил на чистый график, но - все то же самое.
...ds2, а Вы пробовали отобразить только одно значение ( а не три)?
Values[14] = AccountInfoDouble(ACCOUNT_EQUITY);
Правда, есть единственное подозрение, которое с этим может быть как-то коссвенно связано.
В этом офисном терминале в последнее время почему-то не обновляются котировки...
Но разве это может влиять на отображение на индикаторе обычных данных, которые в Print выводятся абсолютно нормально?
- www.mql5.com
DV2010:
...ds2, а Вы пробовали отобразить только одно значение ( а не три)?
По-всякому работает.
Правда, есть единственное подозрение, которое с этим может быть как-то коссвенно связано.
В этом офисном терминале в последнее время почему-то не обновляются котировки...
Я настроил терминал на несуществующий адрес сервера - индикатор перестал рисоваться.
Настроил на несуществующий торговый счет - тоже не отображается.
Так что может не все так косвенно, как вам кажется... :)
Кстати, в обоих случаях в журнал терминала не выводятся никакие сообщения. Т.е. очевидно даже до Init не доходит дело.
После полной переустановки терминала проблема решена! (:-)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сегодня мне показалось, что я сошел с ума : )))
Простейшая задача - отображение на индикаторе на произвольное время значения Эквити.
Но если через обычную переменную, инициализированную непосредственно числом, все проходит нормально,то через то же значение, но полученное посредством функции AccountInfoDouble(ACCOUNT_EQUITY) отображение пропадает,
хотя инициализация переменных происходит в одном месте (OnInit).
В чем же дело?
Из подозрений были: преобразование типов, заморочки с OnCalculate, но теперь все упрощено до предела!
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots 1
//--- plot Label1
#property indicator_label1 "Label1"
#property indicator_type1 DRAW_LINE
#property indicator_color1 Red
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- indicator buffers
double Values[];
double depozit;
double depozit2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
SetIndexBuffer(0,Values,INDICATOR_DATA);
PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, 100);
PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, EMPTY_VALUE);
ArraySetAsSeries(Values, true);
depozit=5000;
depozit2=AccountInfoDouble(ACCOUNT_EQUITY);
if(depozit==depozit2)
Print("Equity - OnCalculate: depozit=depozit2");
else
Print("Equity - OnCalculate: depozit<>depozit2");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[]){
Values[10] = depozit2;
return rates_total;
}