Так а что за "ерунду" выдает ?
У меня нет возможности все это запустить в метаэдиторе, но что в результате ?
И при пошаговой отладке - опять же, что там получается ?
Matko Boska, ну и нотация... посмотрите в код Стандартной библиотеки, как там, например, члены-данные класса именуются.
В Вашем случае сделал бы примерно так:
private: int m_start_bar; int m_count_bar;
А то потом не разберётесь с какой переменной работаете... глядишь, и задача решится :-)
В конструктор бы не впихивал получение ценовых данных... а то без проверки, а её сейчас нет, можно ничего не получить :-(
Matko Boska, ну и нотация...
Ну, с нотацией у Dimeon'а, действительно, беда. Меня больше напрягли переменные с почти одинаковыми названиями. Ну и ничего не говорящие названия - это тоже не айс... Но, я думаю, что это просто код примера. Поэтому, ладно, в данном случае допустимо.
denkir: В Вашем случае сделал бы примерно так:
private: int m_start_bar; int m_count_bar;
Мой вариант:
protected: // крайне редко использую private, как правило, подобные классы каналов порождают целую иерархию, и наследникам требуется доступ к этим переменным
int m_iStartBar;
int m_iCountBar;
Вобще, я, как параноик от венгерской нотации в преффиксе всегда ставлю до четырех символов с типом переменной, даже если тип переменной класс. Скажем:
CCanal* m_pcFirstCanal; // Указатель на переменную типа ССanal.
CDerivedCanal* m_pdcFirstCanal; // Указатель на переменную типа СDedivedСanal.
CChangedDerivedCanal* m_psdcFirstCanal; // Указатель на переменную типа СChangedDedivedСanal.
Подобная практика требует, как правило лишних телодвижений, но не раз меня выручала при выявлении багов. Очень удобно видеть, что за тип, особенно, когда рядом используется много схожих типов.
Так, ладно... Сейчас скопирую код себе, погляжу, что там... Пля... Это отстойный МТ4 !!! Как я его не люблю... Придется глядеть в нем...
Ну вот и ошибка:
Chanel(int _StartBar,int _CountBar)
{
if(StartBar+CountBar>Bars) return; // В КОНСТРУКТОРЕ ЕЩЕ НЕ ОПРЕДЕЛЕНЫ ЗНАЧЕНИЯ StartBar И CountBar, А МЫ ИХ УЖЕ ИСПОЛЬЗУЕМ !!!
StartBar = _StartBar;
CountBar = _CountBar-1;
.......
Дальше - не глядел, но думаю, проблема именно здесь.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вот сделал такой класс который вычисляет экстремумы с определенного бара на какое-то количество баров.
На основе этого класса хочу сделать динамический канал :
Создаю советник
И получаю какую то ерунду. Почему ?