Доброго времени, коллеги!
Представим что кол-во символов в окне обзора рынка может отличаться, как и их название.
И я хочу чтобы мой индюк показывал значение MA в одном окне по всем символам. Ниже накидал примерный код, по памяти. В нем при попытке CopyBuffer в двумерный массив получаю ошибку. Как иначе это реализовать если изначально не известно какие Символы и сколько их будет? Хочу адаптивны индюк.
Попробовать сделать не двумерный массив, а "массив массивов" - массив указателей на массивы, вероятно, используя классы.
void onTick() { for(int i=0;i<totalSymbols;i++) { CopyBuffer(handleMA[i],0,0,bars,bufferMA[i]); // Вот тут получаю ошибку } }
Доброго времени, коллеги!
Представим что кол-во символов в окне обзора рынка может отличаться, как и их название.
И я хочу чтобы мой индюк показывал значение MA в одном окне по всем символам. Ниже накидал примерный код, по памяти. В нем при попытке CopyBuffer в двумерный массив получаю ошибку. Как иначе это реализовать если изначально не известно какие Символы и сколько их будет? Хочу адаптивны индюк.
К двумерному массиву нужно обращаться по двум измерениям.
Здесь же обращение к массиву, как к одномерному
CopyBuffer(handleMA[i],0,0,bars,bufferMA[i]);
CopyBuffer
Получает в массив buffer данные указанного буфера указанного индикатора в указанном количестве.
Буфера индикаторов одномерные массивы. В двумерный этой командой никак.)
Сперва в одномерные массивы, а потом можно добавить в двумерный.
Странно, что при копировании выдает ошибку индексации! При инициации многомерного массива (первая строка) только первое измерение может быть динамическим - все остальные должны быть жестко прописаны сразу и навсегда (их размер) - их изменить в программе уже нельзя. В качестве индикаторных буферов можно использовать только одномерные массивы. И еще у каждого символа свой диапазон хождения цен - можно только какие-то нормализованные графики разместить одновременно в одном окне так, чтобы их все было можно видеть.
Доброго времени, коллеги!
Представим что кол-во символов в окне обзора рынка может отличаться, как и их название.
И я хочу чтобы мой индюк показывал значение MA в одном окне по всем символам. Ниже накидал примерный код, по памяти. В нем при попытке CopyBuffer в двумерный массив получаю ошибку. Как иначе это реализовать если изначально не известно какие Символы и сколько их будет? Хочу адаптивны индюк.
В блоге на английском есть описание реализации подхода с многомерными индикаторными буферами.
PS. Отдельным заголовочным файлом идет в индикаторе в кодебазе.
- 2016.09.17
- www.mql5.com
Доброго времени, коллеги!
Представим что кол-во символов в окне обзора рынка может отличаться, как и их название.
И я хочу чтобы мой индюк показывал значение MA в одном окне по всем символам. Ниже накидал примерный код, по памяти. В нем при попытке CopyBuffer в двумерный массив получаю ошибку. Как иначе это реализовать если изначально не известно какие Символы и сколько их будет? Хочу адаптивны индюк.
struct MyStruct{ int handleMA; double bufferMA[]; }; MyStruct myStructs[]; int totalSymbols; void onInit() { //SetIndexBuffer(0,bufferMA,INDICATOR_DATA); totalSymbols = SymbolsTotal(true); ArrayResize(myStructs, totalSymbols); for(int i=0;i<totalSymbols;i++) { myStructs[i].handleMA=iMA(SymbolName(i,true),_Period,30,0,MODE_SMA,PRICE_CLOSE); } } void onTick() { int bars = 100; // dummy for(int i=0;i<totalSymbols;i++) { CopyBuffer(myStructs[i].handleMA,0,0,bars,myStructs[i].bufferMA); // Вот тут не получаю ошибку } }
В блоге на английском есть описание реализации подхода с многомерными индикаторными буферами.
PS. Отдельным заголовочным файлом идет в индикаторе в кодебазе.
Спасибо, познавательно, хотя сложное по мне решение)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени, коллеги!
Представим что кол-во символов в окне обзора рынка может отличаться, как и их название.
И я хочу чтобы мой индюк показывал значение MA в одном окне по всем символам. Ниже накидал примерный код, по памяти. В нем при попытке CopyBuffer в двумерный массив получаю ошибку. Как иначе это реализовать если изначально не известно какие Символы и сколько их будет? Хочу адаптивны индюк.