Теория ускорения работы советника при использовании пользовательского индикатора (функция - iCustom) - страница 7
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Нет. Есть такая волшебная функция, которая перемелет все потуги:
Этот механизм вшит в сам язык\терминал. Хотя мысль интересная...
Печально... будем думать дальше.
Что значит кончилась? :-)
Значит, что индикатор стал возвращать нули вместо циферь.
Dennis Kirichenko, Karputov Vladimir - спасибо за информацию о функциях!
Только не пойму, в чем разница между TERMINAL_MEMORY_TOTAL и TERMINAL_MEMORY_AVAILABLE?
TERMINAL_MEMORY_TOTAL - это максимум доступной памяти, а TERMINAL_MEMORY_AVAILABLE - оставшаяся память, верно?
Только не пойму, в чем разница между TERMINAL_MEMORY_TOTAL и TERMINAL_MEMORY_AVAILABLE?
TERMINAL_MEMORY_TOTAL - это максимум доступной памяти, а TERMINAL_MEMORY_AVAILABLE - оставшаяся память, верно?
Попробовал руками, менять шаблон с кучей индикаторов на почти пустой - эффект есть (но кэш остается - думаю это не критично). А вот как сделать открытие и закрытие через скрипт шаблона - я не умею. Я так понял, что сомнение есть именно в том, что пока будет запущен скрипт, память отчищаться не будет... Андрей, пожалуйста, помогите провести эксперимент.
А что не получается? Что помочь? Где попытка? Где код?
ChartOpen для открытия графика. Потом на него ChartApplyTemplate с именем заранее подготовленного шаблона (он ведь все время один будет, записывать не надо). Потом ChartClose.
Память замерять через предложенную функцию. Или можете скачать из маркета мой бесплатный индикатор iMemory, он специально для этого был создан.
В четверке добавим более агрессивное автоматическое удаление таких копий индикаторов.
Ура! Как приятно, когда власть имущие тебя слышат!
А "таких копий индикаторов" - это тех, что были вызваны первыми при нехватки памяти для последних, или что-то другое?
А что не получается? Что помочь? Где попытка? Где код?
ChartOpen для открытия графика. Потом на него ChartApplyTemplate с именем заранее подготовленного шаблона (он ведь все время один будет, записывать не надо). Потом ChartClose.
Память замерять через предложенную функцию. Или можете скачать из маркета мой бесплатный индикатор iMemory, он специально для этого был создан.
Да какой из меня программист.... вот начал писать скрипт - первая команда на открытие чарта не дает результат. Что не так?
//+------------------------------------------------------------------+
//| Scripts.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Input1=0;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
long ChartOpen(string GBPUSD, ENUM_TIMEFRAMES PERIOD_H1);
void OnStart()
{
}
//+------------------------------------------------------------------+
Да какой из меня программист.... вот начал писать скрипт - первая команда на открытие чарта не дает результат. Что не так?
Так имелось в виду "сделайте за меня", а не "помогите"? Так и говорите.
Не так - практически все: функцию ChartOpen надо вызывать из тела функции OnStart. Первый параметр - строка, должен быть в кавычках. Указывать тип данных (string и ENUM_TIMEFRAMES) при вызове не надо).
Начните с поиска примеров использования функции или с документации (там тоже есть примеры).
Так имелось в виду "сделайте за меня", а не "помогите"? Так и говорите.
Не так - практически все: функцию ChartOpen надо вызывать из тела функции OnStart. Первый параметр - строка, должен быть в кавычках. Указывать тип данных (string и ENUM_TIMEFRAMES) при вызове не надо).
Начните с поиска примеров использования функции или с документации (там тоже есть примеры).
В том то и дело, что нормального примера нет в хелпе.
Согласно Вашим комментариям переделал:
//+------------------------------------------------------------------+
//| Scripts.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Input1=0;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
long ChartOpen("GBPUSD", PERIOD_H1);
}
//+------------------------------------------------------------------+
Получаю ошибки при клмпиляции, что не так?
'Scripts.mq4' Scripts.mq4 1 1
'ChartOpen' - function can be declared only in the global scope Scripts.mq4 21 10
'GBPUSD' - declaration without type Scripts.mq4 21 20
'GBPUSD' - comma expected Scripts.mq4 21 20
'PERIOD_H1' - declaration without type Scripts.mq4 21 32
4 error(s), 0 warning(s) 5 1
В том то и дело, что нормального примера нет в хелпе.
Согласно Вашим комментариям переделал:
//+------------------------------------------------------------------+
//| Scripts.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Input1=0;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
long ChartOpen("GBPUSD", PERIOD_H1);
}
//+------------------------------------------------------------------+
Получаю ошибки при клмпиляции, что не так?
'Scripts.mq4' Scripts.mq4 1 1
'ChartOpen' - function can be declared only in the global scope Scripts.mq4 21 10
'GBPUSD' - declaration without type Scripts.mq4 21 20
'GBPUSD' - comma expected Scripts.mq4 21 20
'PERIOD_H1' - declaration without type Scripts.mq4 21 32
4 error(s), 0 warning(s) 5 1
Долго объяснять что не так :)
В том то и дело, что нормального примера нет в хелпе.
Кроме хелпа есть кодобаза и форум. Поиск работает.
ps: тьфу, а вставка ссылки в сообщение поломалась =(
https://www.mql5.com/ru/search#!keyword=ChartOpen&page=2