Собственно как буфер в индикаторе работает? Можно предположить что это большой массив, у которого меняется размер когда количество баров больше его размера. А при обращении к первому элементу мы получаем последний последний элемент массива. На сколько элементов увеличивается массив при его заполнении? Или возможно индикаторный буфер это комбинация массивов? Вообщем хочется сделать средствами языка, сделать буферы аналогичные индикаторным.
- статический массив ?
- Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором
- Структуры и array out of range
excelf:
Собственно как буфер в индикаторе работает? Можно предположить что это большой массив, у которого меняется размер когда количество баров больше его размера. А при обращении к первому элементу мы получаем последний последний элемент массива. На сколько элементов увеличивается массив при его заполнении? Или возможно индикаторный буфер это комбинация массивов? Вообщем хочется сделать средствами языка, сделать буферы аналогичные индикаторным.
Собственно как буфер в индикаторе работает? Можно предположить что это большой массив, у которого меняется размер когда количество баров больше его размера. А при обращении к первому элементу мы получаем последний последний элемент массива. На сколько элементов увеличивается массив при его заполнении? Или возможно индикаторный буфер это комбинация массивов? Вообщем хочется сделать средствами языка, сделать буферы аналогичные индикаторным.
а что мешает? вы массивами пользоваться не умеете?
sergeev:
И поиском тоже по ходу.
а что мешает? вы массивами пользоваться не умеете?
excelf:
Собственно как буфер в индикаторе работает? Можно предположить что это большой массив, у которого меняется размер когда количество баров больше его размера. А при обращении к первому элементу мы получаем последний последний элемент массива. На сколько элементов увеличивается массив при его заполнении? Или возможно индикаторный буфер это комбинация массивов? Вообщем хочется сделать средствами языка, сделать буферы аналогичные индикаторным.
Собственно как буфер в индикаторе работает? Можно предположить что это большой массив, у которого меняется размер когда количество баров больше его размера. А при обращении к первому элементу мы получаем последний последний элемент массива. На сколько элементов увеличивается массив при его заполнении? Или возможно индикаторный буфер это комбинация массивов? Вообщем хочется сделать средствами языка, сделать буферы аналогичные индикаторным.
мой вариант:
double CustomBuffer[]; int init() { ... ArraySetAsSeries(CustomBuffer,true); ArrayResize(CustomBuffer,0); ... } int start() { if(Bars>ArraySize(CustomBuffer)) ArrayAppend(CustomBuffer,Bars-ArraySize(CustomBuffer)); ... } void ArrayAppend(double &a[], int add) { bool series = ArrayGetAsSeries(a); ArraySetAsSeries(a,false); ArrayResize(a,ArraySize(a)+add); for(int j=0;j<add;j++) a[ArraySize(a)-1-j]=EMPTY_VALUE; ArraySetAsSeries(a,series); }
sergeev:
Вы думаете я открыл это тему что бы получить такой ответ ? Не мешает ничего, просто не хочется изобретать велосипед. Как работают буферы в коде мета трейдера написанном на си? и хочется получить ответ от программистов.
а что мешает? вы массивами пользоваться не умеете?
Можно загегистрировать массив как буфер, но не показывать.
А вообще- можете использовать "тайное" знание о том,
что массив котировок- это обычный массив языка си у которого 0й элемент- слева.
Просто мк4 помнит максимальный элемент MaxEl и при обращении к данным
делает (MaxEl - Index) - и индексы типа разворачиваются.
А вообще- можете использовать "тайное" знание о том,
что массив котировок- это обычный массив языка си у которого 0й элемент- слева.
Просто мк4 помнит максимальный элемент MaxEl и при обращении к данным
делает (MaxEl - Index) - и индексы типа разворачиваются.
Можно сделать механизм резервирования, но это немного усложнит работу с буферами.
jartmailru:
Можно загегистрировать массив как буфер, но не показывать.
А вообще- можете использовать "тайное" знание о том,
что массив котировок- это обычный массив языка си у которого 0й элемент- слева.
Просто мк4 помнит максимальный элемент MaxEl и при обращении к данным
делает (MaxEl - Index) - и индексы типа разворачиваются.
Можно загегистрировать массив как буфер, но не показывать.
А вообще- можете использовать "тайное" знание о том,
что массив котировок- это обычный массив языка си у которого 0й элемент- слева.
Просто мк4 помнит максимальный элемент MaxEl и при обращении к данным
делает (MaxEl - Index) - и индексы типа разворачиваются.
Я знаю, но в моем случае может быть больше 8 буферов. Вопрос как менять размер буфера ? Как это делает мт, как избежать лишнего пере копирования данных их буфера в буфер ?
excelf:
Я знаю, но в моем случае может быть больше 8 буферов. Вопрос как менять размер буфера ?
Я знаю, но в моем случае может быть больше 8 буферов. Вопрос как менять размер буфера ?
думаю, использует stl вектора, у них умное резервирование. Изменение размера все равно каждый бар, но перераспределение памяти намного реже.
Как это делает мт, как избежать лишнего пере копирования данных их буфера в буфер ?
TheXpert:
думаю, использует stl вектора, у них умное резервирование. Изменение размера все равно каждый бар, но перераспределение памяти намного реже.
STL вектор или лист данные хранит в таком же массиве. Значит тоже самое можно сделать и средствами мкуэль. Если разработчики используют вектор хотелось бы знать как он настроен.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь