ставлю отложенный ордер (время создания, например 11:31) потом этот ордер срабатывает, например в 12:01
Вопрос: как мне узнать дату и время создания отложенного ордера, если ордер уже вошел в рынок и функция OrderOpenTime( ) возвращает время входа в рынок.
Roger: Давно бы уже разобрали текстовый файл, как устроен, из чего состоит. Распринтуйте положение курсора после каждого считывания строки, используя
int FileTell(
int handle)
Сразу все станет ясно.
Ирония ситуации состоит в том, что на тот вопрос, к-й я задал выше меня натолкнула ситуация, к-я почти соответствует Вашему совету...
Для того, чтобы понять как работают функции FileIsEnding и FileIsLineEnding я написал такой скрипт:
//+------------------------------------------------------------------------------------------+//| Конец_Строки_Файла.mq4 |//+------------------------------------------------------------------------------------------+//+------------------------------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------------------------------+#property show_inputs //выводим перед запуском скрипта окно свойствexternint position=0; //внешняя переменная: смещение файлового указателя ОТ НАЧАЛА ФАЙЛА (в БАЙТАХ)//---------------------------------------------------------------------------------------- 1 -int start() //функция start
{ //начало startdouble Timestart=GetTickCount(); //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта string name="Копия Запись чисел в файл.csv"; //имя создаваемого файлаbool h; //переменная: значение функции FileIsEndingbool h_l; //переменная: значение функции FileIsLineEndingint error; //переменная: ошибкаint handle=FileOpen(name,FILE_CSV|FILE_WRITE,';'); //открываем заданный файл n записываем туда данныеint запись=FileWrite(handle,DoubleToStr(1.3584,4)); //записываем число в файл csv (в преобразованном виде, т.е в виде текста)FileClose(handle); //закрываем файл//---------------------------------------------------------------------------------------- 2 -
handle=FileOpen(name,FILE_CSV|FILE_READ,';'); //открываем заданный файлbool pos=FileSeek(handle,position,SEEK_SET); //смещаем от начала вправо указатель файлаdouble чтение=FileReadNumber(handle); //считываем число из текущей позиции (уже измененной функцией FileSeek) файлового указателяint size=FileSize(handle); //вычисляем размер заданного файла
h=FileIsEnding(handle); //устанавливаем текущее значение переменной h
h_l=FileIsLineEnding(handle); //устанавливаем текущее значение переменной h_l
error=GetLastError(); //значение ошибки, производимой функцией FileIsEndingif(error!=0)Alert("Текущая ошибка ",error); //если код текущей ошибки не равен 0, то получаем номер текущей ошибкиFileClose(handle); //закрываем файл//----------------------------------------------------------------------------------------- 3 -Comment("Размер файла ",name," составил ",size," байт",
"\nФункция FileSeek вернула: ",pos,
"\nФункция FileReadNumber(handle) вернула: ",чтение,
"\nФункция FileIsLineEnding(handle) вернула: ",h_l,
"\nФункция FileIsEnding(handle) вернула: ",h,
"\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000)," секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать сообщения на экран//----------------------------------------------------------------------------------------- 4 -return(0); //выход из start
} //конец start//-------------------------------------- КОНЕЦ START -------------------------------------- 5 -
В блоке 1-2 я открыл и записал в файл число 1.3584 (к-е функция DoubleToStr преобразует в текст).
Блоке 3-4 я открыл файл и прочитал записанное там число.
Внешняя переменная extern int position по задумке предназначена для того, чтобы, передвигая файловый указатель с помощью функции FileTell, попытаться понять, как работают функции FileIsEnding и FileIsLineEnding И что собой представляет файловый указатель.
В книге по MQL4, к-я находится на MQL4.community говорится, что файловый указатель является аналогом текстового курсора.
НО, запуская данный скрипт несколько раз и увеличивая с каждым разом внешнюю переменную postiton на 1 (т.е. сдвигая таким образом файловый указатель на 1 байт вправо от начала файла), функция Comment выводила ряд сообщений, например:
если postiton=7, то сообщение выглядело так:
если postiton=7, то сообщение выглядело так:
Я понимаю, что т.к. в памяти ПК строковые константы занимают 8 байт и в файле записано всего 1 преобразованное в текст число, то сдвигая файловый указатель на 8 байт вправо, я получу ошибку 4099 (к-я означает, что достигнут конец файла). Я также понимаю, что функция FileIsEnding вернула 1 (истина) по той же причине (достигнут конец файла). Но я не понимаю, почему функция FileIsLineEnding вернула 0 (ложь, что означает, что файловый указатель не достиг конца строки). Ведь, руководствуясь приведенной в книге по MQL аналогией (файловый указатель примерно то же, что и текстовый курсор), я рассуждал, что конец файла одновременно является концом строки. Но учитывая несовпадение значений функций FileIsEnding и FileIsLineEnding при достижении файловым указателем конца файла, я зашел в тупик в плане того, ЧТО ЕСТЬ ФАЙЛОВЫЙ УКАЗАТЕЛЬ?? Но поскольку надо было от чего-то отталкиваться, чтобы задать вопрос, я его и задал в том виде, в котором он приведен на стр.433.
Поэтому у меня огромная просьба внести ясность в мой разгоряченный мозг и ответить на следующие вопросы (или хотя бы на тот, который поможет мне в понимании остальных вопросов):
1. Что неправильно в моем понимании файлового указателя (вопрос приведен в моем посте на стр.433)
2. Смысл фразы "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9" (вопрос приведен в моем посте на стр.433)
3. Почему при достижении конца файла FileIsLineEnding возвращает значение 0, а не 1.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
Профи, подскажите, пожалуйста. Если у меня выставлен отложенный стоп ордер, но цена на него зашла с расширенным спредом, превышающим стоплосс.... Что будет?
Ордер будет съеден по спреду... или ошибка выскочит и ордер не сработает?
Добрый день всем,
ставлю отложенный ордер (время создания, например 11:31)
потом этот ордер срабатывает, например в 12:01
Вопрос: как мне узнать дату и время создания отложенного ордера, если ордер уже вошел в рынок и функция OrderOpenTime( ) возвращает время входа в рынок.
Может кто знает как решить эту проблему?
Заранее благодарен
в МТ4 из списка ордеров никак.
Один способ - запоминать время выставления
Давно бы уже разобрали текстовый файл, как устроен, из чего состоит. Распринтуйте положение курсора после каждого считывания строки, используя
Ирония ситуации состоит в том, что на тот вопрос, к-й я задал выше меня натолкнула ситуация, к-я почти соответствует Вашему совету...
Для того, чтобы понять как работают функции FileIsEnding и FileIsLineEnding я написал такой скрипт:
В блоке 1-2 я открыл и записал в файл число 1.3584 (к-е функция DoubleToStr преобразует в текст).
Блоке 3-4 я открыл файл и прочитал записанное там число.
Внешняя переменная extern int position по задумке предназначена для того, чтобы, передвигая файловый указатель с помощью функции FileTell, попытаться понять, как работают функции FileIsEnding и FileIsLineEnding И что собой представляет файловый указатель.
В книге по MQL4, к-я находится на MQL4.community говорится, что файловый указатель является аналогом текстового курсора.
НО, запуская данный скрипт несколько раз и увеличивая с каждым разом внешнюю переменную postiton на 1 (т.е. сдвигая таким образом файловый указатель на 1 байт вправо от начала файла), функция Comment выводила ряд сообщений, например:
если postiton=7, то сообщение выглядело так:
если postiton=7, то сообщение выглядело так:
Я понимаю, что т.к. в памяти ПК строковые константы занимают 8 байт и в файле записано всего 1 преобразованное в текст число, то сдвигая файловый указатель на 8 байт вправо, я получу ошибку 4099 (к-я означает, что достигнут конец файла). Я также понимаю, что функция FileIsEnding вернула 1 (истина) по той же причине (достигнут конец файла). Но я не понимаю, почему функция FileIsLineEnding вернула 0 (ложь, что означает, что файловый указатель не достиг конца строки). Ведь, руководствуясь приведенной в книге по MQL аналогией (файловый указатель примерно то же, что и текстовый курсор), я рассуждал, что конец файла одновременно является концом строки. Но учитывая несовпадение значений функций FileIsEnding и FileIsLineEnding при достижении файловым указателем конца файла, я зашел в тупик в плане того, ЧТО ЕСТЬ ФАЙЛОВЫЙ УКАЗАТЕЛЬ?? Но поскольку надо было от чего-то отталкиваться, чтобы задать вопрос, я его и задал в том виде, в котором он приведен на стр.433.
Поэтому у меня огромная просьба внести ясность в мой разгоряченный мозг и ответить на следующие вопросы (или хотя бы на тот, который поможет мне в понимании остальных вопросов):
1. Что неправильно в моем понимании файлового указателя (вопрос приведен в моем посте на стр.433)
2. Смысл фразы "если указанную проверку (2 последние строки в блоке 5-6) удалить, то в процессе исполнения программы будет создан лишний объект. И лишь после этого сработает условие окончания цикла while и управление будет передано в блок 8-9" (вопрос приведен в моем посте на стр.433)
3. Почему при достижении конца файла FileIsLineEnding возвращает значение 0, а не 1.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
Доброе всем времени сток
Подскажите пожалуйста как прорисовывать горизонтальную линию ((Bid+Ask)/2+0.00333):)
Доброго времени суток!
Господа что делать?
Терминал не видит сеть "НЕТ СВЯЗИ"
Доброго времени суток!
Господа что делать?
Терминал не видит сеть "НЕТ СВЯЗИ"
создайте себе новую демку. старая видать по срокам удалена
создайте себе новую демку. старая видать по срокам удалена
Я не на демке, три реальных счета.
Но все с одного дц, это может влиять на что либо?
Я не на демке, три реальных счета.
Но все с одного дц, это может влиять на что либо?
:) ну так звоните в ДЦ. при чем здесь форум программирования по MQL?
:) ну так звоните в ДЦ. при чем здесь форум программирования по MQL?
Почему то сразу "покатил" на терминал :)
Щя разберемся!
Профи, подскажите, пожалуйста. Если у меня выставлен отложенный стоп ордер, но цена на него зашла с расширенным спредом, превышающим стоплосс.... Что будет?
Ордер будет съеден по спреду... или ошибка выскочит и ордер не сработает?