#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Green
double ExtBuffer[];
double ExtBuffer1[];
int init()
{
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtBuffer);
SetIndexBuffer(1,ExtBuffer1);
return(0);
}
int start()
{
int i;
for(i=0;i<Bars;i++)ExtBuffer1[i]=Close[i];
while(iRSIOnArray(ExtBuffer1,0,9,0)>iRSIOnArray(ExtBuffer1, 0,9, 1))ExtBuffer1[0]=ExtBuffer1[0]-Point;
while(iRSIOnArray(ExtBuffer1,0,9,0)<iRSIOnArray(ExtBuffer1, 0,9, 1))ExtBuffer1[0]=ExtBuffer1[0]+Point;
for(i=0;i<Bars;i++)ExtBuffer[i]=ExtBuffer1[i];
return(0);
}
Кто может объяснить, почему терминал зависает.
Насчет зависания не знаю, но зачем вызывать функцию, которая довольно сильно кушает ресурсы неколько раз. Не проще ли сделать например так:
double tmp1, tmp2;
tmp1=iRSIOnArray(ExtBuffer1,0,9,0);
tmp2=iRSIOnArray(ExtBuffer1,0,9,1);
Хотя это то же не совсем удачный вариант. Но работать будет раза в два быстрее.
И почему используется while - это ж можно бесконечный цикл получить.
Оказывается и зависанием выяснили.
Испульзуй
i f(tmp1>tmp2 ) {....}
if (tmp1<tmp2) {.....}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Green
double ExtBuffer[];
double ExtBuffer1[];
int init()
{
IndicatorBuffers(2);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtBuffer);
SetIndexBuffer(1,ExtBuffer1);
return(0);
}
int start()
{
int i;
for(i=0;i<Bars;i++)ExtBuffer1[i]=Close[i];
while(iRSIOnArray(ExtBuffer1,0,9,0)>iRSIOnArray(ExtBuffer1, 0,9, 1))ExtBuffer1[0]=ExtBuffer1[0]-Point;
while(iRSIOnArray(ExtBuffer1,0,9,0)<iRSIOnArray(ExtBuffer1, 0,9, 1))ExtBuffer1[0]=ExtBuffer1[0]+Point;
for(i=0;i<Bars;i++)ExtBuffer[i]=ExtBuffer1[i];
return(0);
}
Кто может объяснить, почему терминал зависает.