Why???
Попробовал 3 разных индикатора equity, но ни один не показывает
график -
https://www.google.com/search?q=equity+indicator+-+mql4&ie=utf-8&oe=utf-8
В том окне, где должен быть чарт - пустота - https://snag.gy/0ufvns.jpg
Для теста написал свой индикатор и 2х строк, все равно ничего не показывает.
Why???
Отчего ссылка на кодобазу через гугл? Да и картинку вполне себе сюда можно вставить.
Для теста написал свой индикатор и 2х строк, все равно ничего не показывает.
Ну прям так и ничего? Что прописали в коде, то и показывает, то есть эквити и баланс нового неторгованного счёта.
Ок, подправил с учетом сдвига - заработало, спасибо
Хотя мне казалось, что сдвиг в буфере автоматом делается ... ну ок
Также почему-то, если есть 2 буфера с одинаковым постоянным значением, то чарт не масштабирует шкалу и линий не видно (прилипают к потолку)
Пришлось добавить незначительную разницу между буферами.
Это заработало ...
Теперь почему-то функции AccountBalance() и AccountEquity() всегда возвращают баланс текущего аккаунта, а не тестируемого.
Можно ли как-то получить именно изменение баланса в режиме тестирования?
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_type1 DRAW_LINE
#property indicator_type2 DRAW_LINE
#property indicator_color1 Blue
#property indicator_color2 Pink
struct SGenerics
{
double m0[], m1[];
};
SGenerics iG;
int iStop = 1;
input string InpMagic = "SNTS";
void OnInit()
{
ZeroMemory(iG);
SetIndexBuffer(0, iG.m0); // ArraySetAsSeries(iG.m0, true);
SetIndexBuffer(1, iG.m1); // ArraySetAsSeries(iG.m1, true);
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE);
PlotIndexSetString(0, PLOT_LABEL, "Balance");
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE);
PlotIndexSetString(0, PLOT_LABEL, "Equity");
IndicatorSetInteger(INDICATOR_DIGITS, 5);
IndicatorSetString(INDICATOR_SHORTNAME, InpMagic);
}
int OnCalculate(
const int bars,
const int counted,
const datetime &time[],
const double &open[],
const double& high[],
const double& low[],
const double &close[],
const long &ticks[],
const long &volume[],
const int &spread[])
{
if (counted == 0)
{
ArrayFill(iG.m0, 0, bars, AccountBalance() + Point());
ArrayFill(iG.m1, 0, bars, AccountEquity() - Point());
}
else
{
iG.m0[1] = iG.m0[0];
iG.m1[1] = iG.m1[0];
iG.m0[0] = AccountBalance();
iG.m1[0] = AccountEquity();
}
return bars;
}
Ок, подправил с учетом сдвига - заработало, спасибо
Хотя мне казалось, что сдвиг в буфере автоматом делается ... ну ок
Так только два значения будет видно: текущее и предыдущее. Чтобы видеть все значения, нужно сдвигать все имеющиеся значения вверх. Также есть другой выход (с автоматическим сдвигом, как Вы говорите). Заключается он в том, что будет видно только одно значение на один бар. Тогда подойдет и предыдущая версия. Но для отображения графика нужно будет ждать закрытия хотя бы одного бара.
Теперь почему-то функции AccountBalance() и AccountEquity() всегда возвращают баланс текущего аккаунта, а не тестируемого.
Можно ли как-то получить именно изменение баланса в режиме тестирования?
В режиме тестирования нужно выбрать Индикатор в выпадающем списке, находящемся в верхнем левом углу окна тестера. Тогда индикатор будет брать тестируемые AccountBalance и AccountEquity. Правда, их некому будет изменять...
Мне нужен был не индикатор отдельно, а чтобы его навесить на советник и тестировать именно советник, а индикатор просто болтающуюся эквити рисовать должен
если запустить индикатор параллельно с советником нельзя, то нафик это барахло, я не понимаю как работает советник, пока я не вижу как двигается эквити
После МТ5 с МТ4 работать можно только на морально-волевых ...
Спасибо, но это не то, как-то все слишком геморно ...
Мне нужен был не индикатор отдельно, а чтобы его навесить на советник и тестировать именно советник, а индикатор просто болтающуюся эквити рисовать должен
если запустить индикатор параллельно с советником нельзя, то нафик это барахло, я не понимаю как работает советник, пока я не вижу как двигается эквити
После МТ5 с МТ4 работать можно только на морально-волевых ...
Тестер не освоили ещё в МТ4 и всё, пошло оно, это барахло )))
В визуализации на график цепляйте свой индикатор.
Спасибо, но это не то, как-то все слишком геморно ...
Мне нужен был не индикатор отдельно, а чтобы его навесить на советник и тестировать именно советник, а индикатор просто болтающуюся эквити рисовать должен
если запустить индикатор параллельно с советником нельзя, то нафик это барахло, я не понимаю как работает советник, пока я не вижу как двигается эквити
После МТ5 с МТ4 работать можно только на морально-волевых ...
AccountBalance() и AccountEquity() всегда возвращают баланс текущего аккаунта, а не тестируемого
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Попробовал 3 разных индикатора equity, но ни один не показывает график - https://www.google.com/search?q=equity+indicator+-+mql4&ie=utf-8&oe=utf-8
В том окне, где должен быть чарт - пустота - https://snag.gy/0ufvns.jpg
Для теста написал свой индикатор и 2х строк, все равно ничего не показывает.
Why???
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_type1 DRAW_LINE
#property indicator_type2 DRAW_LINE
#property indicator_color1 Blue
#property indicator_color2 Pink
struct SGenerics
{
double m0[], m1[];
};
SGenerics iG;
input string InpMagic = "SNTS";
void OnInit()
{
ZeroMemory(iG);
SetIndexBuffer(0, iG.m0); ArraySetAsSeries(iG.m0, true);
SetIndexBuffer(1, iG.m1); ArraySetAsSeries(iG.m1, true);
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE);
PlotIndexSetString(0, PLOT_LABEL, "Balance");
PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE);
PlotIndexSetString(0, PLOT_LABEL, "Equity");
IndicatorSetInteger(INDICATOR_DIGITS, 5);
IndicatorSetString(INDICATOR_SHORTNAME, InpMagic);
}
int OnCalculate(
const int bars,
const int counted,
const datetime &time[],
const double &open[],
const double& high[],
const double& low[],
const double &close[],
const long &ticks[],
const long &volume[],
const int &spread[])
{
iG.m0[0] = AccountBalance();
iG.m1[0] = AccountEquity();
return 1;
}