Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сам разберусь.
что за люди, никогда не имейте с ними никаких тут дел
когда идет речь о каких-то важных вещах, он пошел и пропал)
Самый простой пример с простой функцией - IsNewBar.
По этой функции определяем что пришла новая свечка. У этой функции один нюанс - повторный вызов всегда возвращаем фальш. А вызвать повторно иногда надо. Это может быть и мультивалютный советник и надо на разных периодах проверить свечки и т.д. Если вместо этой функции использовать класс, то для каждой ситуации можно создать свой экземпляр класса и всё, очень удобно.
Спасибо. Уже раpобрался, уже не актуально. Но что касается функции нового бара, не вижу нужды делать класс - проще объявить глобальную переменную для нужного таймфрейма нужного торгового инструмента и использовать iBars(). Как правило, инструмент и таймфрейм заранее известны. В крайнем случае выбор инструмента, как и выбор таймфреймов можно вынести в пользовательский переменные.
Но за участие всё равно спасибо.
Спасибо. Уже раpобрался, уже не актуально. Но что касается функции нового бара, не вижу нужды делать класс - проще объявить глобальную переменную для нужного таймфрейма нужного торгового инструмента и использовать iBars(). Как правило, инструмент и таймфрейм заранее известны. В крайнем случае выбор инструмента, как и выбор таймфреймов можно вынести в пользовательский переменные.
Но за участие всё равно спасибо.
В одной из статей рассказывал про реализацию такой функции в мультивалютном советнике, где набор символов и таймфреймов может быть любым и неизвестным на момент компиляции:
Сформулируем сначала наши пожелания. Мы бы хотели иметь одну функцию, которая бы возвращала истину в том случае, если на данном символе и данном таймфрейме наступил новый бар. Когда разрабатывается советник, реализующий один экземпляр торговой стратегии, то обычно такую функцию пишут для одного символа и таймфрейма, используя переменные для сохранения времени наступления последнего бара. Или для одного символа и нескольких таймфреймов. Часто можно увидеть, что код, реализующий эту функциональность не выделяют в отдельную функцию, а реализуют в том единственном месте, где в нём возникла необходимость.
Такой подход становится весьма неудобным, когда требуется выполнять многократные проверки наступления нового бара для разных экземпляров торговых стратегий. Можно, конечно, встроить этот код непосредственно в реализацию экземпляра торговой стратегии, но мы поступим по-другому.
Сделаем общедоступную функцию IsNewBar(symbol, timeframe), которая должна уметь сообщить о наступлении на текущем тике нового бара по символу symbol и таймфрейму timeframe. При этом желательно, чтобы кроме вызова этой функции никаких дополнительных переменных и действий в код торговой логики стратегий добавлять не понадобилось. Также, если на текущем тике наступил новый бар, и функция вызывается несколько раз (например, из разных экземпляров торговых стратегий), то она должна на каждом вызове возвращать истину, а не только на первом.
Тогда нам понадобится хранить информацию о временах наступления последнего бара для каждого символа и таймфрейма. Но под "каждым" мы подразумеваем не все, которые доступны в терминале, а только реально требуемые для работы конкретных экземпляров торговых стратегий. Чтобы определить круг этих необходимых символов и таймфреймов, мы расширим список действий, выполняемый функцией IsNewBar(symbol, timeframe). Пусть она сначала проверяет, существует ли в каком-то виде запомненное время для текущего бара на данном символе и таймфрейме. Если не существует, то она будет выполнять действия по созданию такого места хранения времени. Если существует, то будет возвращать результат проверки наступления нового бара.
И использование классов здесь очень помогло.
Спасибо. Уже раpобрался, уже не актуально. Но что касается функции нового бара, не вижу нужды делать класс - проще объявить глобальную переменную для нужного таймфрейма нужного торгового инструмента и использовать iBars(). Как правило, инструмент и таймфрейм заранее известны. В крайнем случае выбор инструмента, как и выбор таймфреймов можно вынести в пользовательский переменные.
Но за участие всё равно спасибо.
У меня в общем эксперте может быть сколько угодно "элементарных экспертов", каждый из которых работает на одном символе, и на одном таймфрейме(или на тиках).
В классе эксперта запоминается время последнего обработанного тика, и при приходе нового тика - определяется, в каком баре основного таймфрейма находится прошлый обработанный тик, и пришедший. Если это один и тот же бар - то пришедший тик не обрабатывается. Если это разные бары - запоминается новое время обработанного тика, и тик обрабатывается, с анализом и выдачей новых торговых приказов.
Создавая несколько объектов "элементарных экспертов" - я автоматически получаю обработку по нужным символам, таймфреймам(или тикам). Как раз, на мой взгляд, никаких глобальных переменных здесь быть не должно, как раз для того, чтобы каждый "элементарный эксперт" работал бы независимо. ООП-подход тут очень даже к месту.
...
В классе эксперта запоминается время последнего обработанного тика...
Как у Вас реализовано запоминание времени внутри класса? Статическая переменная?
Как у Вас реализовано запоминание времени внутри класса? Статическая переменная?
Никаких особых ухищрений не надо.
Никаких особых ухищрений не надо.
не стоит его использовать, если точно не знаете для чего
он вам точно не нужен если вы новичок
А если советник установлен на EURUSD а мне надо получить новый бар на GBPUSD тогда как? Писать новый класс?