MT4文件功能替换。 - 页 10

 

文件替换

我想测试一个在策略测试器中 使用外部信号的EA,该线程指出,本地文件处理在策略测试器中不起作用。所以我试着使用这个主题中提供的dll。我想处理的输入是一个看起来像这样的文件。

2007-01-02;EURUSD;2.InstPipDown;;Yes

2007-01-02;USDJPY;1.InstPipUp;;Yes

2007-01-02;USDCHF;1.InstPipUp;;Yes

2007-01-03;EURUSD;2.InstPipDown;;Yes

2007-01-03;EURUSD;4.PipMax1Down;;Yes

2007-01-03;GBPUSD;4.PipMax1Down;;Yes

2007-01-04;USDJPY;8.PipRevBear;;Yes

2007-01-05;EURUSD;5.PipMax2Up;;Yes

2007-01-05;USDJPY;1.InstPipUp;;Yes

我确实自己创建了这个文件,所以我可以使用其他类型的分隔符。

我如何使用dll来获取一条 "记录"?我可以对各个字段进行解析。

我怎么知道我什么时候达到了EOF?

我已经尝试了一些变化,但我得到的结果不一致,有时是垃圾。像例子中那样写数据效果很好,但我想读数据。

 

好吧,坚持不懈的规则!我发现了这个问题。

经过几个小时,我发现了这个问题。

文件处理程序拒绝打开我用其他程序创建的文件。打开返回-1。如果我使用演示程序创建的文件(mt4.log),并将我的内容复制到其中,打开就可以了。找不到原因。很奇怪

我使我的 "记录 "固定长度,并读取 "记录 "的长度加上2,以照顾到每条记录末尾的 "CRLF"。我得到了文件的长度,除以记录的长度,然后循环将所有的记录放入一个数组。

以下是代码。

int init()

{

string inArr[500];

int file;

int filesize;

int records;

int i;

file = gFileOpen("c:\mt4.log",READ)。

// Print(file)。

filesize = gFileSize(file);

// Print(filesize);

records = filesize/25。

// Print(records)。

for(i=1;i<=records;i++)

{

inArr = gFileRead(file,25);

}

gFileClose(file)。

Print(inArr[filesize-1]); //检查最后一条。

return(0);

}

 

带有文件输出的指标

你好,交易员和程序员。

我需要在一个新指标的代码上得到帮助。

该指标应该能够写入相关信息的文件,但它应该只在打开一个新的蜡烛后写入,而不是每一个刻度

我想做的是,在每一个新的蜡烛上写下过去1000条的OHCL来训练一个PNN。

还有一些其他的信息,以了解一个蜡烛的收盘概率是多少。

请帮助我们。这将是一个伟大的项目,但如此简单的事情我却笨(或懒)得去做:-)

普里诺瓦

 

datetime timeprev=0; before init()

if(timeprev==Time[0])

返回(0)。

timeprev=Time[0]; 就在start()下面。

就这样了。

 

很好,这是很快速的回复。

谢谢你

 

为什么移动功能 被从库中删除

CodersGuru。

我无法告诉你,你对我来说是多么有价值,你值得我从客户那里得到很多赞美,因为没有你,我就无法完成支持他们的工作。

你的教程中提到的移动功能没有实现,这是否有什么原因。

再次感谢您的服务

John McGlaughlin

 

gFileRead

你好。

在查看mtguru1.dll的源代码时,我发现gFileRead()函数不应该工作。我错了吗?

gFileRead()使用一个局部变量来存储从文件中读取的字符串。当函数返回时,它返回一个指向该变量的指针,但这个指针可能是一个有效的指针,因为局部变量buffer超出了范围。

因此,从MQL4的EA来看,这样的指令应该会崩溃。

string buffer = gFileRead( handle, 50 )。

如果它能工作,那就很奇怪了......

P.S.: 我已经把这个问题贴在了错误的主题里,以前。https://www.mql5.com/en/forum/172885。

 

Errata Corrige:

.... 但这个指针可以是一个有效的指针 ....

但这个指针 可能是一个有效的指针

 

执行一个EXE文件

你好。

我想做一件简单的事情(我是这么想的)。我想从EA中简单地打开(启动)一个外部程序。(不在EA中)

所以,仅仅是为了测试的目的。假设我想在EA中发生某种情况时打开Microsoft word。

我以前也这样做过,但我找不到这个脚本,我花了两个小时在网上搜索。下次我将把代码保存在一个安全的地方。

 

有什么问题吗?

我得到这个错误 "2008.10.21 01:54:34 Fundamental Trader DailyFX_MQL4 v0.02: handle 2 does not exist in FileClose"

我应该怎么做?

原因: