[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 436

 
скажите пожалуйста, смайлик улыбаеться но не включаеться советник...как правилно настроит?...спасибо!
 
zorber:

Добрый день всем,

ставлю отложенный ордер (время создания, например 11:31)
потом этот ордер срабатывает, например в 12:01

Вопрос: как мне узнать дату и время создания отложенного ордера, если ордер уже вошел в рынок и функция OrderOpenTime( ) возвращает время входа в рынок.

Может кто знает как решить эту проблему?

Заранее благодарен


в МТ4 из списка ордеров никак.

Один способ - запоминать время выставления

 
Roger:
Давно бы уже разобрали текстовый файл, как устроен, из чего состоит. Распринтуйте положение курсора после каждого считывания строки, используя
int FileTell( int handle)
Сразу все станет ясно.

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

Для того, чтобы понять как работают функции FileIsEnding и FileIsLineEnding я написал такой скрипт:

//+------------------------------------------------------------------------------------------+
//|                                                                   Конец_Строки_Файла.mq4 |
//+------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
#property show_inputs                                                    //выводим перед запуском скрипта окно свойств
extern int  position=0;                                                  //внешняя переменная: смещение файлового указателя ОТ НАЧАЛА ФАЙЛА (в БАЙТАХ)
//---------------------------------------------------------------------------------------- 1 -
int start()                                                              //функция start
  {                                                                      //начало start
   double Timestart=GetTickCount();                                      //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   string name="Копия Запись чисел в файл.csv";                          //имя создаваемого файла
   bool h;                                                               //переменная: значение функции FileIsEnding
   bool h_l;                                                             //переменная: значение функции FileIsLineEnding
   int 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();                                                 //значение ошибки, производимой функцией FileIsEnding
   if(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. Чтобы не захламлять форум, заранее благодарю за ответ

 

Доброе всем времени сток

Подскажите пожалуйста как прорисовывать горизонтальную линию ((Bid+Ask)/2+0.00333):)

 

Доброго времени суток!

Господа что делать?

Терминал не видит сеть "НЕТ СВЯЗИ"

 
Ragen:

Доброго времени суток!

Господа что делать?

Терминал не видит сеть "НЕТ СВЯЗИ"


создайте себе новую демку. старая видать по срокам удалена
 
sergeev:

создайте себе новую демку. старая видать по срокам удалена

Я не на демке, три реальных счета.

Но все с одного дц, это может влиять на что либо?

 
Ragen:

Я не на демке, три реальных счета.

Но все с одного дц, это может влиять на что либо?


:) ну так звоните в ДЦ. при чем здесь форум программирования по MQL?
 
sergeev:

:) ну так звоните в ДЦ. при чем здесь форум программирования по MQL?

Почему то сразу "покатил" на терминал :)

Щя разберемся!

 

Профи, подскажите, пожалуйста. Если у меня выставлен отложенный стоп ордер, но цена на него зашла с расширенным спредом, превышающим стоплосс.... Что будет?

Ордер будет съеден по спреду... или ошибка выскочит и ордер не сработает?