Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ах вона что...
Ну тогды звиняйте, бо отвык уже от бумажных чтений.
Дык эта, вот стоит у меня "принтер" PDFCreator.
Ща попробую... ;)
Его распечатывать в виде книжки проще.
Ага, и спокойно читать на диване :)
В mql4 это было просто, но неэффективно. При таком запросе в "историческую базу эксперта" сначала копировался весь массив котировок, имеющийся в исторической базе клиентского терминала (правда копирование это - однократное, зато на каждом следующем тике проверяется и обновляется этот массив, независимо от того, будет он использован или нет). А только потом из этого локального массива отдаётся нужное значение.
В mql5 необходимо копировать соответствующий массив (High, Low etc) в свой локальный массив в необходимом объёме (хоть один элемент)
Допустим мы скопировали нужный объем данных в локальный массив. Пришел новый бар. Необходимо увеличить локальный массив на один элемент и в него копировать данные нового бара. Так?
И на каждом тике этот нулевой бар копировать поновой в локальный массив. Если происходит докачка истории после некоторого перерыва в работе, то локальный массив необходимо заполнить поновой. Если Ведется работа с несколькими таймфреймами, то необходимо по каждому таймфрейму создавать отдельный локальный массив.
Если ведется работа с нескольктми валютными парами, то для каждой пары создается свой локальный массив. И для каждого тф по каждой валютной паре. И все это на каждом тике должно проверяться и производиться докачка. А как быть, если в момент поступления нового тика производился какой-то расчет? На этом тике обновления локального массива не происходит. Мы думаем, что у нас все нормально. А на самом деле цена улетела. И эксперт этого не знает. Да и бог с ним, с экспертом, но ГРАФИЧЕСКИЕ построения не будут перерисованы. И кто работает с такими построениями, могут принимать неверные решения.
Ага, и спокойно читать на диване :)
..., наговаривая инструкции брокеру в телефон.:))
Допустим мы скопировали нужный объем данных в локальный массив. Пришел новый бар. Необходимо увеличить локальный массив на один элемент и в него копировать данные нового бара. Так?
И на каждом тике этот нулевой бар копировать поновой в локальный массив. Если происходит докачка истории после некоторого перерыва в работе, то локальный массив необходимо заполнить поновой. Если Ведется работа с несколькими таймфреймами, то необходимо по каждому таймфрейму создавать отдельный локальный массив.
Если ведется работа с нескольктми валютными парами, то для каждой пары создается свой локальный массив. И для каждого тф по каждой валютной паре. И все это на каждом тике должно проверяться и производиться докачка. А как быть, если в момент поступления нового тика производился какой-то расчет? На этом тике обновления локального массива не происходит. Мы думаем, что у нас все нормально. А на самом деле цена улетела. И эксперт этого не знает. Да и бог с ним, с экспертом, но ГРАФИЧЕСКИЕ построения не будут перерисованы. И кто работает с такими построениями, могут принимать неверные решения.
1. Здесь с самого начала нужно себе представить, с каким объёмом ценовых данных надо работать. Если это 100-200 баров, то заморачиваться не надо и просто каждый раз копировать эти бары. Если это тысячи - десятки тысяч баров, тогда нужно думать.
2. От пропуска тика никто не застрахован. Если программа работает больше одной секунды, то можно проверять время поступления последнего тика.
AccountInfoDouble
Пример:
void OnStart()
{
//--- выведем всю информацию, доступную из функции AccountInfoDouble()
printf("ACCOUNT_BALANCE = %G",AccountInfoDouble(ACCOUNT_BALANCE));
printf("ACCOUNT_CREDIT = %G",AccountInfoDouble(ACCOUNT_CREDIT));
printf("ACCOUNT_PROFIT = %G",AccountInfoDouble(ACCOUNT_PROFIT));
printf("ACCOUNT_EQUITY = %G",AccountInfoDouble(ACCOUNT_EQUITY));
printf("ACCOUNT_MARGIN = %G",AccountInfoDouble(ACCOUNT_MARGIN));
printf("ACCOUNT_FREEMARGIN = %G",AccountInfoDouble(ACCOUNT_FREEMARGIN));
printf("ACCOUNT_MARGIN_LEVEL = %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));
printf("ACCOUNT_MARGIN_SO_CALL = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL));
printf("ACCOUNT_MARGIN_SO_CALL = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL)); - повтор, по аналогии должен быть пример с ACCOUNT_MARGIN_SO_SO
}
AccountInfoDouble
Спасибо, поправили.
В справке по mql4 в разделе про MessageBox в конце было дописано:
Флаги поведения функции MessageBox() определены в файле WinUser32.mqh, поэтому необходимо включать этот заголовочный файл в программы через #include <WinUser32.mqh>. Здесь перечислены не все возможные флаги. Более подробную информацию можно получить в описании Win32 API.
-----------
В Справке по mql5 этих строк нет. Может быть что-то в этом духе надо вставить в Справку по mql5?
В справке по mql4 в разделе про MessageBox в конце было дописано:
Флаги поведения функции MessageBox() определены в файле WinUser32.mqh, поэтому необходимо включать этот заголовочный файл в программы через #include <WinUser32.mqh>. Здесь перечислены не все возможные флаги. Более подробную информацию можно получить в описании Win32 API.
-----------
В Справке по mql5 этих строк нет. Может быть что-то в этом духе надо вставить в Справку по mql5?
Потому что эти флаги теперь предопределённые константы и не надо для этого подключать никаких файлов