//+------------------------------------------------------------------------------------------+//+------------------------------------------------------------------------------------------+//| 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)); //записываем цены OHLC в файл 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函数是如何工作的,以及文件指针是什么。
我只是好奇--如果没有下订单,那一定是出了错?而你可能无法阅读并纠正它?
/*下一个零取货和零止损的订单,然后修正。
我不是想这样做,但日志是干净的!"。
"如果这是 一个停止的问题,这只是一个保险选项
这就是问题所在--日志是干净的!
"如果问题是关于停止,这只是在紧急情况下的一种保险选择
你下了一个没有止损和接管的订单,然后观察它是否开盘!
在你的经纪公司为这种类型的交易账户设置止损和止盈,只能通过修改之前设置的零值来实现。
下一个没有止损和接管的订单,并观察它是否开盘!
在这种类型的交易账户中,在你的DC中设置止损和止盈,只能通过修改它们之前设置的零值来实现。
谢谢你,这很有帮助。
原来你需要开一个0的账户,然后通过引入止损来修改?
谢谢你,这很有帮助。
所以你必须从0开始开立一个账户,然后通过输入止损来修改它?
我必须以这些参数的零值开立一个订单,然后通过修改开立的订单来修改它们。
打开一个这些参数值为零的订单,然后通过修改打开的订单对其进行修改。
日志是干净的,因为没有人会为你做错误 检测和错误处理。
Спасибо, стопы устанавливаются в точностью до символов графика, т.е. 0,00001 или с точностью до 0,0001?
MarketInfo就在你的手中。
没有人愿意处理你的问题。虽然你早就可以回答你的问题了,当然,如果你想的话。
下午好...关于FileIsEnding 和FileIsLineEnding函数 的问题。为了了解FileIsEnding和FileIsLineEnding函数是如何工作的,我写了以下脚本。
在第1-2块中,我打开并写入数字1.3584(DoubleToStr函数将其转换为文本)到文件。
在第3-4块中,我打开了文件并读取了写在那里的数字。
extern int position外部变量应该是使用FileTell函数来移动文件指针,以尝试了解FileIsEnding和FileIsLineEnding函数是如何工作的,以及文件指针是什么。
MQL4.community书中说,文件指针是文本光标的类似物。
但是,运行该脚本数次,每次都将外部变量postiton改为1(即,从而将文件指针移到文件开头的右边1个字节),Comment函数会输出一些信息,例如
如果postiton=7,信息将看起来像这样。
如果postiton=8,信息将看起来像这样。
我明白,由于字符串常数在PC内存中占用8个字节,而文件中只有1个转换后的数字,那么将文件指针向右移动8个字节就会出现4099的错误(这意味着已经到达文件的末端)。我还了解到,FileIsEnding函数返回1(真)的原因也是如此(达到了文件终点)。但我不明白为什么FileIsLineEnding函数返回0(假的,这意味着文件指针没有到达行的末端)。毕竟,根据MQL书中给出的类比(文件指针与文本游标大致相同),我推断,文件的结束也是字符串的结束。但考虑到当文件指针到达文件末端时,FileIsEnding和FileIsLineEnding有不同的值,我对什么是FILE Pointer感到疑惑。
问题。
1.什么是文件指针?
2.为什么行的末端和文件的末端不重合(当文件指针到达文件末端时)?
P.S. 为了不给论坛添乱,提前感谢您的回答
1.什么是文件指针?
2.为什么行的结束和文件的结束不一致(当文件指针到达文件的结束)?
P.S. 不是为了给论坛添乱,提前感谢您的回答。
1.当你输入时,文件指针实际上是一个光标
2.谁告诉你它们应该重合的? 有'\n'字符串终止符和'EOF'文件结束符;这些是不同的字符。它们就像句子的结束符(句号)和段落的结束符("换行符")。首先是一个句号,这是行文的结束。然后是该段的结尾。
你好。写一个idnikator有一个问题,基本上有两个数组的缓冲区。
质量1
质量2
而数组中 每个元素 的数据都是以小数计算的,即数值为15、27、41、14等。
如果我设置数组的int类型,如果我运行每个元素,我可以看到数组值与计算值相对应,但如果类型是Int,那么指标线就不会显示在窗口中。
如果我设置数组的类型为双倍,那么数组就会存储更多的值,我不知道它们来自哪里,例如21456545454,43654534532,24325235232等等。这与计算值完全不相符。
可能是什么问题?