Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Собирать тики нужно не из эксперта, а из индикаторов. Они не пропустят ни одного тика.
А вот запускать индикаторы, да и открывать графики для них, можно из эксперта или из скрипта.
Единственный минус - много открытых графиков = лишние занятые ресурсы. Но при 5000 барах в окне это не должно быть проблемой. Попробуйте.
Собирать тики нужно не из эксперта, а из индикаторов. Они не пропустят ни одного тика.
А вот запускать индикаторы, да и открывать графики для них, можно из эксперта или из скрипта.
Единственный минус - много открытых графиков = лишние занятые ресурсы. Но при 5000 барах в окне это не должно быть проблемой. Попробуйте.
Уже пробовал
При запуске по всем символам (71 шт) эксперт сделанный по вашей модели с 71 индикаторами, перегружает эксперт. По каждому символу отлавливается 1 - 5 тиков в минуту, а иногда и не одного.
Т.е. этот вариант имеет чрезмерную ресурсоемкость.
Уже пробовал
Т.е. этот вариант имеет чрезмерную ресурсоемкость.
Это не то, EventChartCustom не нужен.
Просто собирайте и пишите тики из индикатора, а индикаторы запускайте из советника.
Это не то, EventChartCustom не нужен.
Просто собирайте и пишите тики из индикатора, а индикаторы запускайте из советника.
Думаете потянет 71 индикатор? Мне кажется там много скрытой работы происходит при открытии и перерасчете каждого индикатора.
Сейчас запущен сборщик на таймере, если буду недоволен его работой, то может попробую такой вариант.
Спасибо!
Если у вас есть такой сборщик, может попробуете потестировать на большом количестве пар? Чтобы сравнить ресурсоемкость...
Думаете потянет 71 индикатор? Мне кажется там много скрытой работы происходит при открытии и перерасчете каждого индикатора.
Сейчас запущен сборщик на таймере, если буду недоволен его работой, то может попробую такой вариант.
Спасибо!
Если у вас есть такой сборщик, может попробуете потестировать на большом количестве пар? Чтобы сравнить ресурсоемкость...
Тут нечего проверять.
Во-первых, советник работает в одном потоке, поэтому пары перебираются последовательно. Индикаторы будут работать каждый в своем потоке, и для современных процессоров с 4-8-32 ядрами и всякими гипер-технологиями это даст ускорение чисто за счет распараллеливания.
Во-вторых, даже работая с одним инструментом, советник может пропускать тики (разработчики об этом прямым текстом говорят)!
А в-третьих, пустой индикатор (без просчета истории) ресурсов (и процессора, и памяти) практически не использует.
Поэтому шаг первый - поставить 5000 баров в окне, открыть все графики, перезапустить терминал, и посмотреть на использование ресурсов. Если устраивает, написать простой индикатор записи тиков и подцепить его на все чарты.
Для открытия всех графиков можно использовать что-то типа этого (код записывает шаблон и открывает заданное кол-во графиков. нужно подправить, чтоб он перебирал маркет-вотч и открывал графики разных инструментов):
Тут нечего проверять.
Во-первых, советник работает в одном потоке, поэтому пары перебираются последовательно. Индикаторы будут работать каждый в своем потоке, и для современных процессоров с 4-8-32 ядрами и всякими гипер-технологиями это даст ускорение чисто за счет распараллеливания.
Во-вторых, даже работая с одним инструментом, советник может пропускать тики (разработчики об этом прямым текстом говорят)!
А в-третьих, пустой индикатор (без просчета истории) ресурсов (и процессора, и памяти) практически не использует.
Поэтому шаг первый - поставить 5000 баров в окне, открыть все графики, перезапустить терминал, и посмотреть на использование ресурсов. Если устраивает, написать простой индикатор записи тиков и подцепить его на все чарты.
Для открытия всех графиков можно использовать что-то типа этого (код записывает шаблон и открывает заданное кол-во графиков. нужно подправить, чтоб он перебирал маркет-вотч и открывал графики разных инструментов):
Рассчитывать на много ядер не приходится, т.к. VPS приемлемы по цене только - 1 или 2-х ядерные. А сутками, месяцами и годами домашний комп нет жеания гонять, да и со связью проблемы чаще чем у VPS.
Что-то ваш код слишком большой...
Я делал вот так
string simbol[];
void OnInit(){
int num=SymbolsTotal(true); // true – только символы в MarketWatch
for (int i=0;i<num;i++){ iCustom(SymbolName(i, true),PERIOD_CURRENT,"history_multi");}
}
Вот так запускаются индикаторы для всех символов. Индикаторы были пустыми и скрытыми и они пергружали 2-х ядерный VPS.
int OnCalculate (const int rates_total,const int prev_calculated,const int begin,const double& price[]){
EventChartCustom(chart_id,0,n_symbol,0.0,_Symbol);
return(rates_total);
}
Либо по какой то другой причине не происходило OnChartEvent
Думаю есть вариант попроще.
Можно использовать функцию CopyTicks, зачем собирать тики когда сервер и терминал сам их собирает.
Из советника можно запрашивать новые тики, по любому инструменту, раз в минуту, или раз в 5 минут, и скидывать их в файл.
Рассчитывать на много ядер не приходится, т.к. VPS приемлемы по цене только - 1 или 2-х ядерные. А сутками, месяцами и годами домашний комп нет жеания гонять, да и со связью проблемы чаще чем у VPS.
Ну, как всегда... нужно сделать ферму по сбору информации без потерь, но бюджет на нее - $10/в месяц ;)
Что-то ваш код слишком большой...
Я делал вот так
string simbol[];
void OnInit(){
int num=SymbolsTotal(true); // true – только символы в MarketWatch
for (int i=0;i<num;i++){ iCustom(SymbolName(i, true),PERIOD_CURRENT,"history_multi");}
}
Вот так запускаются индикаторы для всех символов. Индикаторы были пустыми и скрытыми и они пергружали 2-х ядерный VPS.
int OnCalculate (const int rates_total,const int prev_calculated,const int begin,const double& price[]){
EventChartCustom(chart_id,0,n_symbol,0.0,_Symbol);
return(rates_total);
}
Либо по какой то другой причине не происходило OnChartEvent
Мой код занимается совсем другим, поэтому и больше.
Хотя, ваш вариант тоже должен работать. Но не факт, что индикаторы, вызванные однажды, не "отваливаются" через какое-то время.
Я использовал отдельные графики, потому что в моей задаче нужны были именно советники (их не вызовешь скрытыми).
Тормоза могут быть и от EventChartCustom, но это надо проверять. Я бы сделал запись из индикатора.
Думаю есть вариант попроще.
Можно использовать функцию CopyTicks, зачем собирать тики когда сервер и терминал сам их собирает.
Из советника можно запрашивать новые тики, по любому инструменту, раз в минуту, или раз в 5 минут, и скидывать их в файл.
Кстати, да. Если уже нормально работает.
Тормоза могут быть и от EventChartCustom, но это надо проверять. Я бы сделал запись из индикатора.
Сделал запись из индикатора - работает без задержек. Т.е. проблема в EventChartCustom - при болшом количестве вызовов она начинает пропускать и тормозить.
При записи из индикатора нагрузка процессора 60% (запуск по 71 символу). Такая же и при работе советника с таймером.
Сравнил результаты записи из индикаторов с результатами советника с таймером (запуск по 71 символу). Различий практически нет.
Иногда советник с таймером определяет тиковые объемы с задержкой, т.е. от предыдущего тика:
2016.02.05 12:21:18,1.11917,1.11911,54
2016.02.05 12:21:19,1.11917,1.11910,55
2016.02.05 12:21:19,1.11916,1.11910,55
2016.02.05 12:21:20,1.11917,1.11910,57
Объем получаю через CopyTickVolume (через CopyRates думаю будет больше тормозов, жаль что нету такого SymbolInfoDouble(simbol,TICK_VOLUME)). В индикаторе объемы определяются чётко.
Т.o. вариант записи в файл в самом индикаторе оказался самым лучшим.
Но не факт, что индикаторы, вызванные однажды, не "отваливаются" через какое-то время.
А что, такое возможно? Если да, то все плюсы работы через индикаторы, этим перечеркнутся.Тоже нужно проверить. Вообще, МТ следит за тем, чтоб старые кэши не держались зря в памяти. Но тут не совсем тот случай.
Просто понаблюдайте несколько часов - если не отвалятся, значит все ок.