Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Как подобрать необходимый сигнал и быстро подписаться на него
Илья Чибрикин
20
Илья Чибрикин 2010.10.12 16:24 

Всем доброго времени суток.

Учусь языку, столкнулся с проблемой, которую не могу понять.

1. Создан буфер (предполагается отображение)

2. Установлено соответствие между буфером и массивом

3. Заведен расчетый массив (другой).

4. Если записывать в буфер (циклом) константу или любое вычисляемое значение то оно отображается.

Собственно все по учебнику и все работает.

Не работае следующее - если ту же константу записывать в расчетный массив, а потом присваивать в цикле элементам буфера значения из рассчетного массива, то никаких ошибок нет нив компиляции ни в загрузке, но ничего не отображается.

Получается, есть какие-то тонкости инициализации массивов, которые нигде не описаны?

Alexander
2441
Alexander 2010.10.12 17:08  
Ответ классический - бригада телепатов уже выехала, скоро начнем угадывать в какой строчке забыли запятую поставить.
Андрей
1890
Андрей 2010.10.12 17:15  

Расчетному массиву он размер не выставляет.
ArrayResize ArrayInitialize ArraySetAsSeries 

Юрий
3
Юрий 2010.10.12 18:16  

Всем доброго времени суток. Есть торговая система "Chaos" и в ней есть индикатор #Chaos entry, который в определенный момент рисует стрелочку.

Помогите пожалуйста сделать алерт для этой самой стрелочки.

За ранее благодарен. 

Файлы:
chaos.rar 194 kb
Fedor
2763
Fedor 2010.10.12 19:04  
utahrzd:

Вот даже научился декомпилировать:


публикация декомпилированного кода запрещена.
Илья Чибрикин
20
Илья Чибрикин 2010.10.14 16:38  

Всем добрый вечер!

Бригада телепатов приехала и объяснила, как надо задавать вопросы.

Помогите понять, плиз следующее.

Вариант с призвоением индикаторному массиву константы или скажем предопределенного массива Low[i] работает и рисует.

Вариант с присвоением выражения типа LLL[4] не рисует, хотя казалось бы это тоже константа.

Как понять в чем разница?

Заранее благодарен за помощь.

//+------------------------------------------------------------------+
//| TEST.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

double ExtMapBuffer1[];
double MergedTics[];

//+------------------------------------------------------------------+
//| Initialization part |
//+------------------------------------------------------------------+

int init()
{

SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);

}

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{ double LLL[];

Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;

// Вариант, который не работает -----

LLL[4]=1.4090


while(i>=0)
{
ExtMapBuffer1[i]=LLL[4];
i=i-1;
}

//=== Вариант, который работает ----

while(i>=0)

{

ExpMapBuffer1[i]=1.4090;

i=i-1;

}

return(0);
}

Илья Чибрикин
20
Илья Чибрикин 2010.10.14 16:45  

Более того.

В цикле While будет отрисовываться линия, если сделано так:

double FFF;

FFF=1.4090;

While(i>=0) { ExpMapBufer1[i]=FFF; i=i-1;}

НО НЕ БУДЕТ В ТАКОМ СЛУЧАЕ:

While

FFF=LLL[4];

While(i>=0) {ExpMapBuffer1=FFF;i=i-1;}

====================

Что за ошибка в объявлении массива, что его нельзя использовать для отрисовки даже через помежуточную переменную?

Victor Nikolaev
Модератор
14361
Victor Nikolaev 2010.10.14 18:10  
Chibrikin:

Всем добрый вечер!

Бригада телепатов приехала и объяснила, как надо задавать вопросы.

Помогите понять, плиз следующее.

Вариант с призвоением индикаторному массиву константы или скажем предопределенного массива Low[i] работает и рисует.

Вариант с присвоением выражения типа LLL[4] не рисует, хотя казалось бы это тоже константа.

Как понять в чем разница?

double LLL[];

LLL[4]=1.4090

Надо бы массиву размер хоть какой-то сделать.

Хотя бы

double LLL[5];

LLL[4]=1.4090

Vladyslav Goshkov
2050
Vladyslav Goshkov 2010.10.14 18:31  
Chibrikin:

Что за ошибка в объявлении массива, что его нельзя использовать для отрисовки даже через помежуточную переменную?

Начните с изучения учебника. Вы не выделили память под массив.

Удачи.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий