Справка по языку MQL5 - страница 43

 

Ах вона что...

Ну тогды звиняйте, бо отвык уже от бумажных чтений.


Дык эта, вот стоит у меня "принтер" PDFCreator.

Ща попробую... ;)

 
stringo писал(а) >>

Его распечатывать в виде книжки проще.

Ага, и спокойно читать на диване :)

 
stringo писал(а) >>

В mql4 это было просто, но неэффективно. При таком запросе в "историческую базу эксперта" сначала копировался весь массив котировок, имеющийся в исторической базе клиентского терминала (правда копирование это - однократное, зато на каждом следующем тике проверяется и обновляется этот массив, независимо от того, будет он использован или нет). А только потом из этого локального массива отдаётся нужное значение.

В mql5 необходимо копировать соответствующий массив (High, Low etc) в свой локальный массив в необходимом объёме (хоть один элемент)

Допустим мы скопировали нужный объем данных в локальный массив. Пришел новый бар. Необходимо увеличить локальный массив на один элемент и в него копировать данные нового бара. Так?

И на каждом тике этот нулевой бар копировать поновой в локальный массив. Если происходит докачка истории после некоторого перерыва в работе, то локальный массив необходимо заполнить поновой. Если Ведется работа с несколькими таймфреймами, то необходимо по каждому таймфрейму создавать отдельный локальный массив.

Если ведется работа с нескольктми валютными парами, то для каждой пары создается свой локальный массив. И для каждого тф по каждой валютной паре. И все это на каждом тике должно проверяться и производиться докачка. А как быть, если в момент поступления нового тика производился какой-то расчет? На этом тике обновления локального массива не происходит. Мы думаем, что у нас все нормально. А на самом деле цена улетела. И эксперт этого не знает. Да и бог с ним, с экспертом, но ГРАФИЧЕСКИЕ построения не будут перерисованы. И кто работает с такими построениями, могут принимать неверные решения.

 
TEXX >>:

Ага, и спокойно читать на диване :)

..., наговаривая инструкции брокеру в телефон.:))

 
nen писал(а) >>

Допустим мы скопировали нужный объем данных в локальный массив. Пришел новый бар. Необходимо увеличить локальный массив на один элемент и в него копировать данные нового бара. Так?

И на каждом тике этот нулевой бар копировать поновой в локальный массив. Если происходит докачка истории после некоторого перерыва в работе, то локальный массив необходимо заполнить поновой. Если Ведется работа с несколькими таймфреймами, то необходимо по каждому таймфрейму создавать отдельный локальный массив.

Если ведется работа с нескольктми валютными парами, то для каждой пары создается свой локальный массив. И для каждого тф по каждой валютной паре. И все это на каждом тике должно проверяться и производиться докачка. А как быть, если в момент поступления нового тика производился какой-то расчет? На этом тике обновления локального массива не происходит. Мы думаем, что у нас все нормально. А на самом деле цена улетела. И эксперт этого не знает. Да и бог с ним, с экспертом, но ГРАФИЧЕСКИЕ построения не будут перерисованы. И кто работает с такими построениями, могут принимать неверные решения.

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


}

 
Xupypr >>:

AccountInfoDouble


Спасибо, поправили.

 
Справка обновлена
 

В справке по mql4 в разделе про MessageBox в конце было дописано:

Флаги поведения функции MessageBox() определены в файле WinUser32.mqh, поэтому необходимо включать этот заголовочный файл в программы через #include <WinUser32.mqh>. Здесь перечислены не все возможные флаги. Более подробную информацию можно получить в описании Win32 API.

-----------

В Справке по mql5 этих строк нет. Может быть что-то в этом духе надо вставить в Справку по mql5?

 
nen писал(а) >>

В справке по mql4 в разделе про MessageBox в конце было дописано:

Флаги поведения функции MessageBox() определены в файле WinUser32.mqh, поэтому необходимо включать этот заголовочный файл в программы через #include <WinUser32.mqh>. Здесь перечислены не все возможные флаги. Более подробную информацию можно получить в описании Win32 API.

-----------

В Справке по mql5 этих строк нет. Может быть что-то в этом духе надо вставить в Справку по mql5?

Потому что эти флаги теперь предопределённые константы и не надо для этого подключать никаких файлов

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