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

 

GetLastError

Возвращает содержимое системной переменной _LastError.

int GetLastError();

Возвращаемое значение

Возвращает значение последней ошибки, произошедшей во время исполнения mql5-программы.

Примечание

После вызова функции содержимое переменной _LastError не обнуляется. Чтобы обнулить эту переменную, необходимо вызвать функцию ResetLastError()

***

т.е. теперь такая конструкция будет работать более корректно?

if(GetLastError()>0) Print(ENTO(GetLastError()));
// а так?
if(GetLastError()>0) Print(ENTO(_LastError));
// или так?
if(_LastError>0) Print(ENTO(_LastError));
// видимо наверное так будет правильней...
if(GetLastError()>0) {Print(ENTO(_LastError)); ResetLastError(); }


ЗЫ: функция ENTO(_LastError); конвертирует ЕррНомерТуОписалово...
 

OrderGetInteger (и не только...)

Возвращает запрошенное свойство ордера, предварительно выбранного при помощи функции OrderGetTicket или OrderSelect. Свойство ордера должно быть типа datetime, int. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

long OrderGetInteger(

ENUM_ORDER_PROPERTY property_id // идентификатор свойства

);

2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool OrderGetInteger(

ENUM_ORDER_PROPERTY property_id, // идентификатор свойства

long& long_var // сюда примем значение свойства

);

Параметры

property_id

[in] Идентификатор свойства ордера. Значение может быть одним из енумератора ENUM_ORDER_PROPERTY.

long_var

[out] Переменная типа long, принимающая значение запрашиваемого свойства.

Возвращаемое значение

Значение типа long.

========================================

Ну в принципе всё ясно... и сложно и просто одновременно...

То бишь, ежли с одним идентификатором, то так, лонг:

long svoistvo;
svoistvo=OrderGetInteger(ENUM_ORDER_PROPERTY );

а ежли ещё и со ссылкой, то булл

long svoistvo;
OrderGetInteger(ENUM_ORDER_PROPERTY, &svoistvo );

причём амперсанд обязательно указывать (или нет?)

Судя по общему стилю справки, ежли указано в описании

long& long_var // сюда примем значение свойства

То и в функциях пишем тоже самое, в данном случае OrderGetInteger(ENUM_ORDER_PROPERTY, &svoistvo );

верно? или есть ещё варианты?

 

TradeHistoryRequest();

Насколько я понял это просимая ранее функция которая подгружает историю за запрошенный период в "Историю счёта" ?

Умолчательных параметров нет, а посему посто TradeHistoryRequest(); для выборки всей истории, либо:

TradeHistoryRequest(0, дата); с начала и ДО

TradeHistoryRequest(дата, 0); с ОТ и по СЕЙЧАС

(с общим для всех вариантов включительно)

этого не получится?

 
StringToTime
Преобразование строки, содержащей время и/или дату в формате "yyyy.mm.dd [hh:mi]", в число типа datetime.
datetime StringToTime(
string value // строка-дата
);
Параметры
value

[in] Строка в формате " yyyy.mm.dd hh:mi ".

*

В справке МТ4 тоже представлен такой же формат строки с "полуминутками" без упоминания

возможности указывать явно и секунды... т.е. типа" yyyy.mm.dd hh:mm:ss", на что утратил массу времени попусту.

*

Тренировочный скрипт МТ4.

//+--- Скрипт. комботус.mq4 --------------------+
string Dann[]={
"2009.08.15 21:15:45",
"2009.08.2 03:5:7",
"2009.8.2 3:5:7",
"2009.08.15 21:15",
"2009.08.15",
"21:15:45",
"21:15"};
//+------------------------------------------------------------------+
int start()
{
// int i, chk=ArraySize(Dann);
// for(i=0; i<chk; i++)
//
for(i=0; i<ArraySize(Dann); i++)
{
Alert(i," вариант: ",
Dann[i]," = ",StrToTime(Dann[i]),
" = ",
TimeToStr(StrToTime(Dann[i]),TIME_DATE|TIME_SECONDS) );
}
return(0);
}

Пишет в алерте:

// вариант: исход = дататайм = результат

6 вариант: 21:15 = 1250370900 = 2009.08.15 21:15:00
5 вариант: 21:15:45 = 1250370945 = 2009.08.15 21:15:45
4 вариант: 2009.08.15 = 1250294400 = 2009.08.15 00:00:00
3 вариант: 2009.08.15 21:15 = 1250370900 = 2009.08.15 21:15:00
2 вариант: 2009.8.2 3:5:7 = 1249182300 = 2009.08.02 03:05:00
1 вариант: 2009.08.2 03:5:7 = 1249182300 = 2009.08.02 03:05:00
0 вариант: 2009.08.15 21:15:45 = 1250370945 = 2009.08.15 21:15:45
*

Все предельно ясно и понятно, ещё и попутно можно познать как и что куда вставлять.

Да-да, ссылка: Тип datetime предназначен для хранения даты ... кое что прояснят, но не всё...

*

ЗЫ! весьма предполагаю, что вариант 1 и 2 есть недоработка насчёт незначащего нуля в секундах.

Поправить бы...

а?

 

Приведение типов

Вот бы поподробнее, точнее потолковее, разьяснить почему разный вышел результат...

;)

При вычислениях с разными типами решающее значение имеет тип операнда справа.

так?

3/2=1 потому что 2-ка инт, затем 1+0.3=1.3 потому что 0.3 дабл.

Примеры:

char c1=3;

//--- первый пример

double d2=c1/2+0.3;

Print("c1/2+0.3 =",d2);

// Результат: c1/2+0.3 = 1.30000000

//--- второй пример

d2=c1/2.0+0.3;

Print("c1/2.0+0.3 =",d2);

// Результат: c1/2.0+0.3 = 1.80000000

 

Эххх...

"Знали бы ребятЫ, как тоскуют руки по штувалу!"

(с) пестня така

 

Интересная тема.

Никогда не читал хелп без программы

Ой. не. Читал один раз, году в 90-м, хелп к досовскому FoxPro на английском. Напечатал пачку бумаги, лег в больницу и наслаждался.

Потом MSDN появился - хелп на несколько гигов :)

Ребенок у меня (10 лет). Даже описание программ книжное читать не хочет. Включает и работает.

К фотошопу, правда несколько уроков посмотрела.

Скоро буду эксперимент проводить. Сможет ли она основы Access освоить. Купил диск с уроками.

А может ей хелп дать почитать?

 
moby_dick >>:

Скажите - я правильно понял, что скрипт теперь не сможет выполнять Init? Оставьте это плиз хоть как недокументированную функцию!

Скрипт имеет единственную точку входа OnStart, которая вызывается однократно при создании скрипта (без ожидания прихода тика).

Так как скрипт однократный, то для него не нужно иметь отдельные функции OnInit, OnDeinit - все это можно сделать прямо в функции OnStart.

 
kombat >>:

причём амперсанд обязательно указывать (или нет?)


Правильный вызов

OrderGetInteger(ENUM_ORDER_PROPERTY, svoistvo);
 

Возможно ли организовать удаленное управление советником,

хотя бы включить или выключить советник работающий на впс ?

Не всегда под рукой есть возможность заходить на хост.

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