Теория ускорения работы советника при использовании пользовательского индикатора (функция - iCustom) - страница 7

 
Dennis Kirichenko:

Нет. Есть такая волшебная функция, которая перемелет все потуги:

Этот механизм вшит в сам язык\терминал. Хотя мысль интересная...

Печально... будем думать дальше.

 

 

Dennis Kirichenko:

Что значит кончилась? :-)  

Значит, что индикатор стал возвращать нули вместо циферь.

 

 Dennis Kirichenko, Karputov Vladimir - спасибо за информацию о функциях!

Только не пойму, в чем разница между TERMINAL_MEMORY_TOTAL и TERMINAL_MEMORY_AVAILABLE?

TERMINAL_MEMORY_TOTAL - это максимум доступной памяти, а TERMINAL_MEMORY_AVAILABLE - оставшаяся память, верно?

 
-Aleks-:
 

Только не пойму, в чем разница между TERMINAL_MEMORY_TOTAL и TERMINAL_MEMORY_AVAILABLE?

TERMINAL_MEMORY_TOTAL - это максимум доступной памяти, а TERMINAL_MEMORY_AVAILABLE - оставшаяся память, верно?

Здесь лучший способ это самому проверить: открыть терминал; открыть диспетчер задач; запустить скрипт, который распечатывает значения TERMINAL_MEMORY_TOTAL, TERMINAL_MEMORY_AVAILABLE и сравнить с показаниями в диспетчере задач.
 
В четверке добавим более агрессивное автоматическое удаление таких копий индикаторов.
 
-Aleks-:
Попробовал руками, менять шаблон с кучей индикаторов на почти пустой - эффект есть (но кэш остается - думаю это не критично). А вот как сделать открытие и закрытие через скрипт шаблона - я не умею. Я так понял, что сомнение есть именно в том, что пока будет запущен скрипт, память отчищаться не будет... Андрей, пожалуйста, помогите провести эксперимент.

А что не получается? Что помочь? Где попытка? Где код?

ChartOpen для открытия графика. Потом на него ChartApplyTemplate с именем заранее подготовленного шаблона (он ведь все время один будет, записывать не надо). Потом ChartClose.

Память замерять через предложенную функцию. Или можете скачать из маркета мой бесплатный индикатор iMemory, он специально для этого был создан.

 
Renat Fatkhullin:
В четверке добавим более агрессивное автоматическое удаление таких копий индикаторов.

Ура! Как приятно, когда власть имущие тебя слышат!

А "таких копий индикаторов" - это тех, что были вызваны первыми при нехватки памяти для последних, или что-то другое? 

 
Andrey Khatimlianskii:

А что не получается? Что помочь? Где попытка? Где код?

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()

  {

  }

//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
-Aleks-:

Да какой из меня программист.... вот начал писать скрипт - первая команда на открытие чарта не дает результат. Что не так?

Так имелось в виду "сделайте за меня", а не "помогите"? Так и говорите.

Не так - практически все: функцию ChartOpen надо вызывать из тела функции OnStart. Первый параметр - строка, должен быть в кавычках. Указывать тип данных (string и ENUM_TIMEFRAMES) при вызове не надо).

Начните с поиска примеров использования функции или с документации (там тоже есть примеры). 

 
Andrey Khatimlianskii:

Так имелось в виду "сделайте за меня", а не "помогите"? Так и говорите.

Не так - практически все: функцию 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

 

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
-Aleks-:

В том то и дело, что нормального примера нет в хелпе.

Согласно Вашим комментариям переделал:

 //+------------------------------------------------------------------+

//|                                                      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

 

Долго объяснять что не так :)

void OnStart()

  {

   ChartOpen("GBPUSD",   PERIOD_H1);

  }
 
-Aleks-:

В том то и дело, что нормального примера нет в хелпе.

Кроме хелпа есть кодобаза и форум. Поиск работает.

ps: тьфу, а вставка ссылки в сообщение поломалась =(

https://www.mql5.com/ru/search#!keyword=ChartOpen&page=2 

Причина обращения: