[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 471

 
Axmed писал(а)>>


CSV -逗号 分隔的数值。", "是默认的分隔符。用"; "分隔的情况较少使用,我不确定MQL4是否支持它。


intFileOpen( string filename, int mode, int delimiter=';')
打开文件进行输入和/或输出。返回打开的文件的文件描述符,如果失败则返回-1。调用GetLastError()来获取更多的错误信息。
注意:文件只能在terminal_directory\experts\files 如果是专家测试,terminal_directory\tester\files)文件夹或其子文件夹中打开。
FILE_BIN和FILE_CSV模式不能同时使用。
如果FILE_WRITE没有与FILE_READ结合,一个长度为零的文件将被打开。即使在文件被打开之前,文件中还有数据,也会被销毁。如果需要将数据附加到一个现有的文件中,必须使用FILE_READ | FILE_WRITE组合打开。
如果FILE_READ没有与FILE_WRITE结合,那么只有当文件已经存在时才会被打开。如果该文件不存在,可以使用FILE_WRITE创建。
在同一个可执行文件中,同时打开的文件不能超过32个。在一个模块中打开的文件的描述符不能转移到其他模块(库)。
参数。
文件名 - Filename - 文件名称。
模式 - 打开的方法。这可以是一个单一的值或一个值的组合:FILE_BIN、FILE_CSV、FILE_READ、FILE_WRITE。
分隔符 - csv文件的分界符。默认情况下,会应用';'字符。
例子。
 int handle; handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';'); if(handle<1) { Print("File my_data.dat not detected, last error " , GetLastError()); return(false); }

你也应该阅读帮助。
 
Axmed >>:


Что конкретно Вам не понравилось в том что я пишу?..

这一切都错了。
";"是默认的分隔符。
FileReadString - 不是读取整个字符串,而是从文件中的当前指针位置到下一个分隔符。

 

你好,请告诉我如何从自定义指标 中调用所需的变量,我试过GlobalVariableSet()/GlobalVariableGet()--从另一个EA中可以使用,但从指标中不行。预先感谢你。

 
kara100 писал(а)>>

你好,请告诉我如何从自定义指标中调用所需的变量? 我试过GlobalVariableSet()/GlobalVariableGet()--从另一个EA中可以使用,但从指标中不行。提前谢谢你...


你想得到哪个变量,从哪个指标中得到?
 

来自+MP的价格(第228行) - 我需要(价格)水平值

附加的文件:
ymp_1.mq4  6 kb
 
kara100 писал(а)>>

来自+MP的价格(第228行) - 我需要价值(价格)水平


尝试将变量prise移到全局级别,并将字符串GlobalVariableSet("55", prise);放在函数start()的开头,并从其他程序中得到双倍x=GlobalVariableGet("55")。

 
Techno писал(а)>>


尝试将变量prise移到全局级别,并将字符串GlobalVariableSet("55", prise);放在函数start()的开头,并从其他程序中得到双倍x=GlobalVariableGet("55")。


我已经试过了...它写道,全局变量没有被描述,也就是说,全局变量没有从指标中出来...>> 我再试试。

 
kara100 писал(а)>>


我想我试过了...它说没有描述全局变量,即没有全局变量从指标中出来......>> 我再试试。


一旦你修复了代码,请在这里发布。
 
朋友们,非常感谢你们的回复。澄清一下,如何将字符串转换为双数?
StrToDouble()不工作 :(

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
if(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..
Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера
else // При любой другой ошибке..
Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
PlaySound("Bzrrr.wav"); // Звуковое сопровождение
return; // Выход из start()
}
k=0;
while(FileIsEnding(Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла
//--------------------------------------------------------- 5 --
ss1[k] = (FileReadString(Handle));
x1[k]=StrToDouble(ss1[k]);//
ss2[k] = (FileReadString(Handle));
rr1[k] = (FileReadString(Handle));
rr2[k] = (FileReadString(Handle));
k=k+1;
if(FileIsEnding(Handle)==true) // Файловый указатель в конце
break; // Выход из чтения и рисования
}
FileClose( Handle ); // Закрываем файл
PlaySound("bulk.wav"); // Звуковое сопровождение
//-----------------------------------------------
Alert(" ", ss1[0], " ", ss2[0], " ", rr1[0], " ", rr2[0], " x1== ", x1[0] );

字符串数组从文件中正常填充。 但是,我需要将这些字符串转换为双数。
我做的。
x1[k]=StrToDouble(ss1[k]);
但是,当输出到Alert时,x1[0]=0,这是错误的。也就是说,在类型转换的某个地方出现了错误...

如何解决这种情况?
 
Morzh09 >>:

Друзья, спасибо большое, что откликнулись. уточнение, как преобразовать string в double?
StrToDouble() - не прокатывает :(
Строковые массивы заполняются из файла нормально. Но, необходимо преобразовать эти строки в double.
делаю это:
x1[k]=StrToDouble(ss1[k]);
но, при выводе в Алерте, x1[0] = 0, что неправильно. то есть, где-то тут ошибка в преобразовании типов...

Как такую ситуацию исправить?

能否请你把整个脚本贴出来?我的意思是与变量数组的声明等。

原因: