[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 230

 

Доброго времени суток!

Вопрос у меня очень простой: при доступе к буферу индикатора как к массиву (чтобы первый элемент имел индекс 0), необходимо вызывать ArraySetAsSeries на каждой итерации - или достаточно одного вызова данной функции, например, в init()?

 
betmen >>:

Я для этого пользуюсь следующим кодом:


bool Fun_New_bar()
/*
функция созданна для определения наличия нового бара,
если поймали новый бар то "true" иначе "false".
===========
Переменные:
===========
Test_Time - тестируемое время
*/
{
static datetime Test_Time=0;
if(Test_Time!=Time[0])
{
Test_Time=Time[0];
return(true);
}
return(false);
}


По моему вопросу помогите кто знает или скажите что это невозможно если действительно нельзя так сделать... а то 3 дня уже ответ ищу и пока безрезультатно. :-(




Спасибо большое. Помогло.
 
betmen >>:

Вы предлагаете при инициализации запустить exe скомпилированный из другой среды разработки, как вариант действительно приемлемо во время инициализации советника запускать какой то exe файл, но тогда встает другая проблема как передавать данные из программы в переменные самого индикатора? 

то есть как значение combobox1.text преобразованное в число, передать в MA_Method?

Через файл как то неэстетично, а общего пространства памяти вроде как у MetaTrader и созданного мной "test.exe" нет.

Не. Не предлагаю :-). Это же достаточно сложно. Я говорил про Dll, расписал более-менее подробно.

Строки передаются. Это я Вас просто предостерегаю. Числа передаются вообще без проблем.

В метатрейдер импортится так: get(int & to[]), в си объясвляется get(int * to). Найдите пример. 

 
xp3rienced >>:

Доброго времени суток!

Вопрос у меня очень простой: при доступе к буферу индикатора как к массиву (чтобы первый элемент имел индекс 0), необходимо вызывать ArraySetAsSeries на каждой итерации - или достаточно одного вызова данной функции, например, в init()?

Просто заносите туда данные. Если он уже буфер индикатора (SetIndexBuffer)- то ничего делать не нужно.

Почему вопрос возник? :-)

 
jartmailru >>:

Просто заносите туда данные. Если он уже буфер индикатора (SetIndexBuffer)- то ничего делать не нужно.

Почему вопрос возник? :-)


Я просто и заношу. Да, массив является буфером индикатора. И мне нужно, чтобы было обращение как к массиву, когда первый элемент имеет нулевой индекс. Или вы хотите сказать (словами "ничего делать не нужно"), что такая адресация, для индексных буферов, по-умолчанию? о_О

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

 
xp3rienced >>:

Или вы хотите сказать (словами "ничего делать не нужно"), что такая адресация, для индексных буферов, по-умолчанию? о_О

Ага. Все будет хорошо.

 
jartmailru >>:

Ага. Все будет хорошо.


Большое спасибо!
 
jartmailru >>:

Не. Не предлагаю :-). Это же достаточно сложно. Я говорил про Dll, расписал более-менее подробно.

Строки передаются. Это я Вас просто предостерегаю. Числа передаются вообще без проблем.

В метатрейдер импортится так: get(int & to[]), в си объясвляется get(int * to). Найдите пример.

Спасибо будем копать дальше...

 
Еще вопросик есть. У индикатора может быть баров больше, чем на текущем графике, и в такой ситуации: в индексном массиве есть новые значения, а бары на индикаторе не появляются. Как это лечить? Без полного перерасчета, и ресайза индексного массива, желательно :)
 
Коллеги, что может значить ошибка 130 при попытке выставить отложенник? Перед выставлением производится проверка на мин дистанцию! Я понимаю, что вы тут все не экстрасенсы)), предположим, мин дистанцию я соблюдаю 100%, какие в данном случае еще могут быть причины возникновения ошибки 130 ?