Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В MT4 нет нормальной возможности накинуть на чарт индикатор с нужными настройками так, чтобы сразу работал - не выпадало окно с заданием входных параметров.
Поэтому использовался костыльный метод
Так же имеется проблема с пунктом 4 - загрузка шаблона иногда тормозит.
ChartRedraw до и после Chart-функций не избавляет от проблемы.
Вполне возможно, что на MT5 с этими функциями та же засада. Но там есть ChartIndicatorAdd, поэтому городить этот костыль не требуется.
В общем, нужно либо править Chart-функции, либо находить решение, как нормально добавить индикатор на чарт с нужными входными параметрами, чтобы он СРАЗУ работал, а не просил подтверждений.
ЗЫ Можно, конечно, написать свой собственный ChartSaveTemplate, но это уже звучит, как издевка.
Поэтому использовался костыльный метод
Видимо у меня сохранение TPL файла c 100000 объектами и 11 индикаторами происходит довольно быстро (не SSD) не больше 1 секунды. Все добавленные индикаторы на месте. Может предоставите ваш код?
Проверил описанный костыль с добавлением 11 индикаторов на чарте. Сохранение темплейта с вызовом синхронной функции, аплай темплейта тоже с вызовом синхронной функции.
Видимо у меня сохранение TPL файла c 100000 объектами и 11 индикаторами происходит довольно быстро (не SSD) не больше 1 секунды. Все добавленные индикаторы на месте. Может предоставите ваш код?
Делаете скрипт. Сначала сохраняете темплейт пустого графика ChartSaveTemplate, затем после сохранения, открываете файл tpl и вписываете туда индикаторы или хотя бы один. Закрываете файл tpl. И потом вызываете этот tpl ChartTemplateApply. Все это в одном скрипте, подряд один за другим.
В результате, будет следующее, сначала дописываются индикаторы в файл tpl, а затем с задержкой пишется ChartSaveTemplate (и пишет пустой график), затем с еще небольшой задержкой, срабатывает ChartTemplateApply - и естественно выводит пустой график без индикаторов. Притом попробуйте все это сделать еще и при отключенном от интернета компе.
У меня тоже SSD диск, 16G оперативка, 7-й интел процессор.
Отвечаю за коллегу. Судя по описанию не правильно делали. Руками на график не нужно набрасывать никаких индикаторов.
Делаете скрипт. Сначала сохраняете темплейт пустого графика ChartSaveTemplate, затем после сохранения, открываете файл tpl и вписываете туда индикаторы или хотя бы один. Закрываете файл tpl. И потом вызываете этот tpl ChartTemplateApply. Все это в одном скрипте, не по очереди.
В результате, будет следующее, сначала дописываются индикаторы в файл tpl, а затем с задержкой пишется ChartSaveTemplate (и пишет пустой график), затем с еще небольшой задержкой, срабатывает ChartTemplateApply - и естественно выводит пустой график без индикаторов. Притом попробуйте все это сделать еще и при отключенном от интернета компе.
У меня тоже SSD диск, 16G оперативка, 7-й интел процессор.
В итоге вот как это выглядит в терминале
Все сделано именно так как вы сказали, за следующими исключениями:
В итоге вот как это выглядит в терминале
Скрипт для Вас нужно готовить, и это не просто так - вот я прикладываю вам сам рабочий скрипт, который не работает, но там прицепов куча и DLL-ки и экзешники, и еще куча всего, плюс кое-где жестко прописанные пути только для моего компа. Не могу я сейчас бросить торговлю и писать для Вас упрощенную версию для проверки. В функции void af_TTi() - там все дело (перенесена из библиотеки, чтобы вам хоть как-то понятно было).
Пробовали воспроизвести описанную вами проблему на билдах 1031 и 1045. Функции ChartApplyTemplate() и ChartIndicatorDelete() работают корректно.
Поэтому от вас необходимо больше подробностей, в том числе шаблон, индикаторы, скрипты и тд.
Спасибо.
Вчера описал проблему в сервисдеск. В моем случае после перезапуска перестает работать функция ChartSymbol().
т.е. тот же самый сценарий - при первом запуске все ок, при перезапуске советника - не работает. При перезапуске терминала все снова работает.
В советник который я пишу используется работа с объектами всех открытых графиков на терминале, для этого есть блок получения списка этих графиков и их параметров:
long graph_id[100];
string graph_symbol[100];
long currChart=-1,prevChart;
while(true) {
if(currChart==-1) currChart=ChartFirst();
else currChart = ChartNext(prevChart);
if(currChart<0) break;
prevChart=currChart;
graph_id[graphs] = currChart;
graph_symbol[graphs] = ChartSymbol(currChart);
Print(graphs," ",currChart," ",ChartSymbol(currChart));
graphs++;
if(graphs>=100) break;
}
Как видите ID графиков не изменились, однако инструмент графика уже получить не получается через функцию ChartSymbol(), только для текущего графика - EURUSD.
Вероятно ChartPeriod, ChartGetInteger, CharGetString, CharGetDouble также не будут работать, не проверял.
Windows 7 64 (сборка 7601).
Господа разработчики!
Сегодня обнаружил вот такую-же штуку, перебрал много вариантов - не работает.
Пока решил написать, оказывается проблема не только у меня.
Система Win7 Х64
Версия терминала: 1045
int i=0;
long handle=0;
long chartID=ChartNext(handle);
while(chartID!=-1) {
handle=chartID;
i++;
ArrayResize(aList,i);
aList[i-1]=handle; // Print(i," = ",chartID," = ",ChartSymbol(chartID));
chartID=ChartNext(handle);
}
return(ArraySize(aList));
}
Аналогичная проблема в мт5, но немного легче.
Когда что-то начинает глючит, то помогает перезагрузка терминала, потом по какой-то причине "падает", и точно такие-же логи
Код такой-же, как и в первом случае. Версия терминала:1525
Господа разработчики!
Сегодня обнаружил вот такую-же штуку, перебрал много вариантов - не работает.
Пока решил написать, оказывается проблема не только у меня.
Система Win7 Х64
Версия терминала: 1045
int i=0;
long handle=0;
long chartID=ChartNext(handle);
while(chartID!=-1) {
handle=chartID;
i++;
ArrayResize(aList,i);
aList[i-1]=handle; // Print(i," = ",chartID," = ",ChartSymbol(chartID));
chartID=ChartNext(handle);
}
return(ArraySize(aList));
}
Аналогичная проблема в мт5, но немного легче.
Когда что-то начинает глючит, то помогает перезагрузка терминала, потом по какой-то причине "падает", и точно такие-же логи
Код такой-же, как и в первом случае. Версия терминала:1525
А взять рабочий код из справки кто мешает?
int i=0,limit=100;
Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart);
while(i<limit)// у нас наверняка не больше 100 открытых графиков
{
currChart=ChartNext(prevChart); // на основании предыдущего получим новый график
if(currChart<0) break; // достигли конца списка графиков
Print(i,ChartSymbol(currChart)," ID =",currChart);
prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
i++;// не забудем увеличить счетчик
}
скрипт, однократный запуск:
2017.02.07 18:53:28.101 chartlist USDCAD,M5: initialized
2017.02.07 18:53:28.109 chartlist USDCAD,M5: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 18:53:28.116 chartlist USDCAD,M5: 0GBPUSD ID =130296731464218785
2017.02.07 18:53:28.119 chartlist USDCAD,M5: 1USDCHF ID =130296731464218786
2017.02.07 18:53:28.125 chartlist USDCAD,M5: 2USDCAD ID =130850896497812502
2017.02.07 18:53:28.126 chartlist USDCAD,M5: 3USDJPY ID =130851889821927502
2017.02.07 18:53:28.133 chartlist USDCAD,M5: 4AUDUSD ID =130850896497812503
2017.02.07 18:53:28.145 chartlist USDCAD,M5: 5NZDUSD ID =130850896497812504
2017.02.07 18:53:28.146 chartlist USDCAD,M5: 6EURGBP ID =130851889821927501
2017.02.07 18:53:28.147 chartlist USDCAD,M5: 7EURJPY ID =131271782861990001
2017.02.07 18:53:28.147 chartlist USDCAD,M5: 8USDCAD ID =131271782861990002
2017.02.07 18:53:28.147 chartlist USDCAD,M5: uninit reason 0
2017.02.07 18:53:28.152 Script chartlist USDCAD,M5: removed
советник, каждый тик:
2017.02.07 19:01:36.535 chartlist EURUSD,H4: initialized
2017.02.07 19:01:51.794 chartlist EURUSD,H4: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 19:01:51.806 chartlist EURUSD,H4: 0GBPUSD ID =130296731464218785
2017.02.07 19:01:51.806 chartlist EURUSD,H4: 1USDCHF ID =130296731464218786
2017.02.07 19:01:51.812 chartlist EURUSD,H4: 2USDCAD ID =130850896497812502
2017.02.07 19:01:51.820 chartlist EURUSD,H4: 3USDJPY ID =130851889821927502
2017.02.07 19:01:51.820 chartlist EURUSD,H4: 4AUDUSD ID =130850896497812503
2017.02.07 19:01:51.820 chartlist EURUSD,H4: 5NZDUSD ID =130850896497812504
2017.02.07 19:01:51.820 chartlist EURUSD,H4: 6EURGBP ID =130851889821927501
2017.02.07 19:01:51.821 chartlist EURUSD,H4: 7EURJPY ID =131271782861990001
2017.02.07 19:01:51.825 chartlist EURUSD,H4: 8USDCAD ID =131271782861990002
2017.02.07 19:01:51.825 chartlist EURUSD,H4: 9EURUSD ID =131271782861990003
2017.02.07 19:01:55.469 chartlist EURUSD,H4: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 19:01:55.481 chartlist EURUSD,H4: 0GBPUSD ID =130296731464218785
2017.02.07 19:01:55.486 chartlist EURUSD,H4: 1USDCHF ID =130296731464218786
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 2USDCAD ID =130850896497812502
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 3USDJPY ID =130851889821927502
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 4AUDUSD ID =130850896497812503
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 5NZDUSD ID =130850896497812504
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 6EURGBP ID =130851889821927501
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 7EURJPY ID =131271782861990001
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 8USDCAD ID =131271782861990002
2017.02.07 19:01:55.493 chartlist EURUSD,H4: 9EURUSD ID =131271782861990003
2017.02.07 19:02:13.529 chartlist EURUSD,H4: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 19:02:13.530 chartlist EURUSD,H4: 0GBPUSD ID =130296731464218785
2017.02.07 19:02:13.530 chartlist EURUSD,H4: 1USDCHF ID =130296731464218786
2017.02.07 19:02:13.531 chartlist EURUSD,H4: 2USDCAD ID =130850896497812502
2017.02.07 19:02:13.533 chartlist EURUSD,H4: 3USDJPY ID =130851889821927502
2017.02.07 19:02:13.533 chartlist EURUSD,H4: 4AUDUSD ID =130850896497812503
2017.02.07 19:02:13.543 chartlist EURUSD,H4: 5NZDUSD ID =130850896497812504
2017.02.07 19:02:13.543 chartlist EURUSD,H4: 6EURGBP ID =130851889821927501
2017.02.07 19:02:13.549 chartlist EURUSD,H4: 7EURJPY ID =131271782861990001
2017.02.07 19:02:13.549 chartlist EURUSD,H4: 8USDCAD ID =131271782861990002
2017.02.07 19:02:13.549 chartlist EURUSD,H4: 9EURUSD ID =131271782861990003
2017.02.07 19:02:16.004 chartlist EURUSD,H4: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 19:02:16.007 chartlist EURUSD,H4: 0GBPUSD ID =130296731464218785
2017.02.07 19:02:16.008 chartlist EURUSD,H4: 1USDCHF ID =130296731464218786
2017.02.07 19:02:16.020 chartlist EURUSD,H4: 2USDCAD ID =130850896497812502
2017.02.07 19:02:16.020 chartlist EURUSD,H4: 3USDJPY ID =130851889821927502
2017.02.07 19:02:16.020 chartlist EURUSD,H4: 4AUDUSD ID =130850896497812503
2017.02.07 19:02:16.026 chartlist EURUSD,H4: 5NZDUSD ID =130850896497812504
2017.02.07 19:02:16.033 chartlist EURUSD,H4: 6EURGBP ID =130851889821927501
2017.02.07 19:02:16.033 chartlist EURUSD,H4: 7EURJPY ID =131271782861990001
2017.02.07 19:02:16.033 chartlist EURUSD,H4: 8USDCAD ID =131271782861990002
2017.02.07 19:02:16.033 chartlist EURUSD,H4: 9EURUSD ID =131271782861990003
2017.02.07 19:02:39.058 chartlist EURUSD,H4: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 19:02:39.071 chartlist EURUSD,H4: 0GBPUSD ID =130296731464218785
2017.02.07 19:02:39.074 chartlist EURUSD,H4: 1USDCHF ID =130296731464218786
2017.02.07 19:02:39.080 chartlist EURUSD,H4: 2USDCAD ID =130850896497812502
2017.02.07 19:02:39.085 chartlist EURUSD,H4: 3USDJPY ID =130851889821927502
2017.02.07 19:02:39.091 chartlist EURUSD,H4: 4AUDUSD ID =130850896497812503
2017.02.07 19:02:39.097 chartlist EURUSD,H4: 5NZDUSD ID =130850896497812504
2017.02.07 19:02:39.100 chartlist EURUSD,H4: 6EURGBP ID =130851889821927501
2017.02.07 19:02:39.106 chartlist EURUSD,H4: 7EURJPY ID =131271782861990001
2017.02.07 19:02:39.108 chartlist EURUSD,H4: 8USDCAD ID =131271782861990002
2017.02.07 19:02:39.108 chartlist EURUSD,H4: 9EURUSD ID =131271782861990003
2017.02.07 19:02:41.834 chartlist EURUSD,H4: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 19:02:41.845 chartlist EURUSD,H4: 0GBPUSD ID =130296731464218785
2017.02.07 19:02:41.856 chartlist EURUSD,H4: 1USDCHF ID =130296731464218786
2017.02.07 19:02:41.863 chartlist EURUSD,H4: 2USDCAD ID =130850896497812502
2017.02.07 19:02:41.866 chartlist EURUSD,H4: 3USDJPY ID =130851889821927502
2017.02.07 19:02:41.877 chartlist EURUSD,H4: 4AUDUSD ID =130850896497812503
2017.02.07 19:02:41.885 chartlist EURUSD,H4: 5NZDUSD ID =130850896497812504
2017.02.07 19:02:41.899 chartlist EURUSD,H4: 6EURGBP ID =130851889821927501
2017.02.07 19:02:41.906 chartlist EURUSD,H4: 7EURJPY ID =131271782861990001
2017.02.07 19:02:41.913 chartlist EURUSD,H4: 8USDCAD ID =131271782861990002
2017.02.07 19:02:41.913 chartlist EURUSD,H4: 9EURUSD ID =131271782861990003
2017.02.07 19:02:46.275 chartlist EURUSD,H4: ChartFirst = EURUSD ID = 130296731464218784
2017.02.07 19:02:46.286 chartlist EURUSD,H4: 0GBPUSD ID =130296731464218785
2017.02.07 19:02:46.293 chartlist EURUSD,H4: 1USDCHF ID =130296731464218786
2017.02.07 19:02:46.298 chartlist EURUSD,H4: 2USDCAD ID =130850896497812502
2017.02.07 19:02:46.305 chartlist EURUSD,H4: 3USDJPY ID =130851889821927502
2017.02.07 19:02:46.309 chartlist EURUSD,H4: 4AUDUSD ID =130850896497812503
2017.02.07 19:02:46.323 chartlist EURUSD,H4: 5NZDUSD ID =130850896497812504
2017.02.07 19:02:46.328 chartlist EURUSD,H4: 6EURGBP ID =130851889821927501
2017.02.07 19:02:46.331 chartlist EURUSD,H4: 7EURJPY ID =131271782861990001
2017.02.07 19:02:46.335 chartlist EURUSD,H4: 8USDCAD ID =131271782861990002
2017.02.07 19:02:46.335 chartlist EURUSD,H4: 9EURUSD ID =131271782861990003
2017.02.07 19:03:20.602 chartlist EURUSD,H4: uninit reason 1
2017.02.07 19:03:20.607 Expert chartlist EURUSD,H4: removed
Да не при чем тут эксперт. Скриптом это делается. Нету там никаких инициализаций. Сразу start или OnStart. Вы делаете отсебячину и обходите задержки. И пытаетесь кого-то убедить. Вот сейчас идет нервная торговля, и теперь садись и пиши упрощенный вариант для проверки. Хотя коню понятно, что нельзя ChartSaveTemplate ставить в очередь. А после обновления, вообще звездец. Если Вы это не решаете, скажите Станиславу или Ренату на худой конец.
Скрипт для Вас нужно готовить, и это не просто так - вот я прикладываю вам сам рабочий скрипт, который не работает, но там прицепов куча и DLL-ки и экзешники, и еще куча всего, плюс кое-где жестко прописанные пути только для моего компа. Не могу я сейчас бросить торговлю и писать для Вас упрощенную версию для проверки. В функции void af_TTi() - там все дело (перенесена из библиотеки, чтобы вам хоть как-то понятно было).
В атаче рабочий скрипт. Работает и при отсутствии подключения к счету.
А взять рабочий код из справки кто мешает?