//+------------------------------------------------------------------------------------------+//| Конец_Строки_Файла.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函数是如何工作 的,以及文件指针是什么。
大家好。
我下了一个挂单(创建时间,如11:31)。
然后这个订单在12:01触发
问题:如果订单已经进入市场,而OrderOpenTime( )函数返回进入市场的时间,我如何知道挂单的日期和时间。
有没有人知道如何解决这个问题?
预先感谢你。
在MT4的订单列表中,没有办法。
一种方法是记住放置的时间
现在是你了解文本文件的时候了,它是如何组织的,它包括哪些内容。在每读完一行后,解印光标位置,使用
讽刺的是,我上面提出的问题是由一个几乎与你的建议相对应的情况引发的......
为了了解FileIsEnding和FileIsLineEnding函数是如何工作的,我写了以下脚本。
在第1-2块中,我打开并将数字1.3584写进文件(DoubleToStr函数将其转换为文本)。
在第3-4块中,我打开了文件并读取了写在那里的数字。
extern int position外部变量应该是使用FileTell 函数来移动文件指针,以尝试了解 FileIsEnding和FileIsLineEnding函数是如何工作 的,以及文件指针是什么。
MQL4.community 书中说,文件指针是文本光标的类似物。
但是,运行该脚本数次,每次将外部变量postiton增加1(也就是说,从而将文件指针移到文件开头的右边1个字节),Comment函数会输出一些信息,例如
如果postiton=7,信息将看起来像这样。
如果postiton=7,信息将看起来像这样。
我明白,由于字符串常数在PC内存中占8个字节,而文件中只有1个转换后的数字,将文件指针向右移动8个字节会给我带来4099的错误(这意味着已经到达文件的末端)。我还了解到,FileIsEnding函数返回1(真)的原因也是如此(达到了文件终点)。但我不明白为什么FileIsLineEnding函数 返回0(假的,这意味着文件指针没有到达行的末端)。毕竟,根据MQL书中给出的类比(文件指针与文本游标大致相同),我推断,文件的结束也是字符串的结束。但考虑到当文件指针到达文件末端时,FileIsEnding和FileIsLineEnding有不同的值,我在 "什么是文件指针 "方面感到困惑。但由于我必须从某个地方开始问起,所以我按照第433页上的内容问了这个问题。
因此,我有一个巨大的请求,希望你能清除我那被加热的大脑,并回答以下问题(或至少有一个能帮助我理解其余问题的问题)。
1.我对文件指针的理解有什么问题(我在第433页的帖子中给出的问题)?
2.这句话的意思是 "如果指定的检查(第5-6块的最后2行)被删除,那么在运行 时将创建一个额外的对象。只有在这之后, while 循环的结束条件才会被触发,控制权才会被转移到8-9块"(问题在我第433页的帖子中给出)。
3.为什么FileIsLineEnding在到达文件末端时返回0而不是1。
P.S. 为了不给论坛添乱,提前感谢您的回答。
祝大家有美好的时光
请告诉我如何画一条水平线((出价+要价)/2+0.00333):)
下午好!
先生们,该怎么做?
移动电脑无法看到网络,"没有通信"。
下午好!
先生们,该怎么做?
移动电脑无法看到网络,"没有通信"。
创建一个新的演示。旧的演示一定是由于时间限制而被删除了。
为自己创建一个新的演示。旧的演示一定是由于截止日期而被删除了 。
我不是用模拟账户,是三个真实账户。
但都是来自同一个Dtz,这有什么影响吗?
我不是用模拟账户,是三个真实账户。
但是,所有这些都来自于同一个Dtz,这能影响到什么吗?
:) 好吧,给经纪公司打电话。这与MQL编程论坛有什么关系?
这与MQL编程论坛有什么关系?
出于某种原因,终端机立即 "滚动 "起来 :)
我正在处理!
专业人士,请指教。如果我有一个挂起的止损单,但价格已经进入它的扩展价差,超过了止损....。将会发生什么?
该命令将由传播者吃...还是会发生错误,订单不会被触发?
同事们,最详细的建议是什么?
我有一个挂单 X
如何在挂单创建的N小时后关闭订单?
一个额外的条件:挂单可能成为市场订单。
在挂单仍未完成的情况下,一切都很简单。
挂单变成市价单的情况很有趣(即当挂单变成市价单的时候,创建它的时间也会改变)。
我想从专业人士那里得到解决这个问题的想法,更好的是,我想得到这种情况的代码