Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет Мальден!
Спасибо за поддержку! ;-)
Даже, когда я напишу код, как вы мне сказали:
(я так думаю...)
#property indicator_chart_window
double buffer[];
double mom1[];
int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i = limit; i>=0; i--)
{
mom1 = iCustom(NULL,0,"custom name",0,i);
buffer = (
Mom(mom1,10,Bars,i);
//doesn't work - no value in indi
// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed
// mom1 // this works
);
}
return(0);
}
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
);Итак, когда я использую "Первую" версию, я не получаю никакого значения...
Когда я использую вторую версию, я получаю ошибку... хммм...
Работает только вызов mom1... но это не то значение...
Спасибо за помощь!
Пока, АТЗамените "custom name" на название вашего индикатора (существующего индикатора), добавьте параметры в вызов iCustom(), и все заработает. Это имя было помещено туда просто в качестве примера.
Также вы не определили количество буферов (ни с помощью #property indicator_buffers, ни с помощью функции IndicatorBuffers()) Индикатор "думает", что буферов 0 и никогда не инициализирует эти буфера до реального размера. Определите количество буферов, которые вы собираетесь использовать
_______________________
Привет, Младен!
Спасибо за информацию... Я уже сделал это... Код выглядит следующим образом:
#property indicator_separate_window
#property indicator_color3 Red
#property indicator_width1 3
#property indicator_buffers 3
#property indicator_color1 LawnGreen
#property indicator_color2 Red
#include // here the mom() function is incl.
double buffer[];
double mom1[];
int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i = limit; i>=0; i--)
{
mom1 = iCustom(NULL,0,"myIndi",0,i);
buffer = (
Mom(mom1,10,Bars,i); //doesn't work - no value in indi
// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed
// mom1 // this works, but no subfunction incl.
);
}
return(0);
}
//normaly in mqh incl.
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
);
Ошибка разговора все еще присутствует...
Спасибо за помощь!
Пока, AT
Привет, Младен!
Спасибо за информацию... Я уже сделал это... Код выглядит так:
#property indicator_separate_window
#property indicator_color3 Red
#property indicator_width1 3
#property indicator_buffers 3
#property indicator_color1 LawnGreen
#property indicator_color2 Red
#include // here the mom() function is incl.
double buffer[];
double mom1[];
int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i = limit; i>=0; i--)
{
mom1 = iCustom(NULL,0,"myIndi",0,i);
buffer = (
Mom(mom1,10,Bars,i); //doesn't work - no value in indi
// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed
// mom1 // this works, but no subfunction incl.
);
}
return(0);
}
//normaly in mqh incl.
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
);
Ошибка разговора все еще присутствует...
Спасибо за помощь!
Пока, ATВот версия без ошибок компилятора : _test.mq4
Я понятия не имею, что такое "myIndi", поэтому не смог проверить, возвращает ли iCustom() значения из вашего индикатора "myIndi".
Привет, Младен!
Мой indi - это обычный выход JMA.mq4 / JMA Indi.
Это также может быть выход MA или что-либо еще. "myIndi" не является специальным инди.
И вызов инди работает в обычном окне инди...
Мой код выглядит так:
#property indicator_separate_window
#property indicator_color3 Red
#property indicator_width1 3
#property indicator_buffers 3
#property indicator_color1 LawnGreen
#property indicator_color2 Red
#include // here the mom() function is incl.
double buffer[];
double mom1[];
int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i = limit; i>=0; i--)
{
mom1 = iCustom(NULL,0,"JMA",0,i); //normal JMA / MA output
// I get this out put, and it's ok, but the second output (buffer) is zero...
buffer = (
Mom(mom1,10,Bars,i); //no compiler error, but doesn't work - no value in indi window
// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed
// mom1 // this works, but it's the value i want
);
}
return(0);
}
//normaly in mqh incl.
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
);
Я не получаю сбой, который я сделал...
Спасибо большое за помощь!!!
Пока, AT
Привет, Младен!
Когда я пишу или изменяю вот так...
я также получаю ошибку разговора... есть идеи...?
Большое спасибо!
Пока, AT
#property indicator_separate_window
#property indicator_color3 Red
#property indicator_width1 3
#property indicator_buffers 3
#property indicator_color1 LawnGreen
#property indicator_color2 Red
//#include // here the mom() function is incl.
double buffer[];
double mom1[];
int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }
//normaly in mqh incl.
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i = limit; i>=0; i--)
{
mom1 = iMA(Symbol(),Period(),13,8,MODE_SMMA,PRICE_MEDIAN,i); //normal JMA / MA output
// I get this out put, and it's ok, but the second output (buffer) is zero...
buffer = (
// Mom(mom1,10,Bars,i) //no compiler error, but doesn't work - no value in indi window
Mom(mom1,10,Bars,i) //error: parameter conversation not allowed
// mom1 // this works, but it is NOT the value i want
);
}
return(0);
}
Привет, Младен!
Когда я пишу или изменяю его вот так...
я также получаю ошибку разговора... есть идеи...?
Большое спасибо!
Пока, AT
#property indicator_separate_window
#property indicator_color3 Red
#property indicator_width1 3
#property indicator_buffers 3
#property indicator_color1 LawnGreen
#property indicator_color2 Red
//#include // here the mom() function is incl.
double buffer[];
double mom1[];
int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }
//normaly in mqh incl.
double Mom(const double& series[], int period, int totcount, int index)
{
if (totcount<1 || period<1) return (EMPTY_VALUE);
if (indextotcount-1) return (EMPTY_VALUE);
return (series-series);
}
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i = limit; i>=0; i--)
{
mom1 = iMA(Symbol(),Period(),13,8,MODE_SMMA,PRICE_MEDIAN,i); //normal JMA / MA output
// I get this out put, and it's ok, but the second output (buffer) is zero...
buffer = (
// Mom(mom1,10,Bars,i) //no compiler error, but doesn't work - no value in indi window
Mom(mom1,10,Bars,i) //error: parameter conversation not allowed
// mom1 // this works, but it is NOT the value i want
);
}
return(0);
}
at120
Вы не можете использовать элемент, который эволюционирует до double, когда ожидаемый параметр должен быть const double[]. Вместо "мама1" используйте "мама1".
Привет, Младен!
Спасибо за ответ, теперь мой вопрос в том, как "преобразовать" мой double в const double series[].
потому что когда я использую только mom1, я получаю на выходе "0"...
Как мне сделать так, чтобы mom1 "выглядел" как, например, Close. Есть ли какой-нибудь пример кода для этого?
Большое спасибо и до свидания, AT
Привет, Младен!
Спасибо за ответ, теперь мой вопрос в том, как "преобразовать" мой double в const double series[].
потому что когда я использую только mom1, я получаю "0" на выходе...
Как мне сделать так, чтобы mom1 "выглядел" как, например, Close. Есть ли какой-нибудь пример кода для этого?
Большое спасибо и пока, ATВам не нужно ничего "преобразовывать". В тот момент, когда убирается часть "", он "становится" правильным параметром.
Вот как это выглядит на графике:
А вот код: _test_2.mq4
Привет, Младен!
Теперь это работает для меня, кажется, что я забыл IndicatorBuffers(2);
Теперь кажется, что я получаю правильное значение!
Спасибо большое за помощь!!!
Пока, AT
Какие массивы должны быть объявлены как const в параметрах функций?