回溯测试中的伟大EA! - 页 115

 
tururo:
每次打开文件都会被覆盖。一个解决方案是在init()函数中打开文件,在deinit()中关闭它

所以我这样做...

int init()

{

handle=FileOpen("cyberia_log.csv", FILE_CSV|FILE_WRITE, ';');//这是我在代码中唯一使用FileOpen() 的地方,我关闭了所有其他的。

return(0)。

}

int deinit()

{

FileClose(handle)。

return(0);

}

而在代码中,当我想给它附加一些东西时,我这样做了......

FileWrite(handle, "SellPossibilityMid:", SellPossibilityMid)。

FileWrite(handle, "BuyPossibilityMid:", BuyPossibilityMid)。

而我得到的错误信息是 "有太多的文件打开了"

 

bool startfileopen = true。

int init()

{

如果(startfileopen)

{

handle=FileOpen("cyberia_log.csv",FILE_CSV|FILE_WRITE, '; ')。

startfileopen = false;

}

这似乎已经解决了这个故障。

但它仍然只显示文件中的一个条目,其中一部分被截断了......

Order Open Time: ;1160137278

SellPossibilityMid*SellPossibilityQuality:;0.00190286

BuyPossibilityMid*BuyPossibilityQuality:;0.00132571

UndefinedPossibilityMid*UndefinedPossibilityQuality:;0.00365143

UndefinedSucPossibilityQuality:;9

SellSucPossibilityQuality:;9

BuySucPossibilityQuality:;7

UndefinedPossibilityQuality:;18

SellPossibilityQuality:;9

BuyPossibilityQuality:;8

UndefinedSucPossibilityMid:;0.00074444

SellSucPossibilityMid:;0.00082222

BuySucPossibilityMid:;0.0008

UndefinedPossibilityMid:;0.00020286

SellPossibilityMid:;0.00021143

BuyPossibilityMid:;0.00016571

ng Short OrderTicket: ;24; Opened @: ;1.2685; Closed @: ;1.2677; Order Open Time: ;1160121599

 

这可能有帮助

你好,Aaragorn,你在CT上做了很好的工作,我有一个E.A.,我想它做的事情与你做的事情有点类似,也许有办法把它纳入CT。我想这是以某种方式收集csv文件中的tick数据。

问候。

mrtools

 

我有个朋友是个程序员,他告诉我忘掉init()deinit()的东西,当我调用它的时候改成

handle=FileOpen("cyberia_log.csv",FILE_CSV|FILE_WRITE|FILE_READ,'; ')。

我得离开一会儿,稍后我会回来看看。希望dudeworks能让它工作。我只是还不知道如何做这些文件的事情。

 
mrtools:
你好,Aaragorn,你在CT上做的工作很好,我有一个E.A.,我想它做的事情与你做的事情有点类似,也许有办法把它纳入CT。我想这是以某种方式收集csv文件中的tick数据。

问候。

mrtools

好的,谢谢你!这很有趣,看到其他的代码是有效的,我必须离开一下,但我会回来看看

 

无效手柄错误

Aaragorn,这个专家需要一个外部来源(我认为)来收集数据或分发数据,以便E.A.进行交易,不幸的是,我没有,也不知道如何创建一个,所以专家不会交易只是给出错误信息 "文件读数中的无效手柄-1",只是认为这个代码可能有帮助。

问候

mrtools

 
mrtools:
Aaragorn,这个专家需要一个外部来源(我认为)来收集数据或分发数据,以便E.A.进行交易,不幸的是,我没有,也不知道如何创建一个,所以专家不会交易,只是给出错误信息 "文件读取数中的无效句柄-1",只是认为这个代码可能有帮助。

问候

mrtools

谢谢你,我很感谢你的鼓励。

据我所知,这段代码首先删除了文件的任何先前值,然后打开一个文件添加一些东西,然后关闭该文件。

然后再打开文件,读取它所写的内容。

我面临的挑战是,当我想在不删除或覆盖已经写好的内容的情况下向文件中添加其他东西时,换句话说,就是把新的数据附加到文件的末尾......

我需要一个例子来说明如何做到这一点。

 

谁能教我如何正确使用文件的存储和调用功能?

我已经看了这个文件。

int FileOpen( string filename, int mode, int delimiter=';')

Opens file for input and/or output. Returns a file handle for the opened file or -1 (if the function fails). To get the detailed error information, call GetLastError() function.

Notes: Files can only be opened in the terminal_directory\experts\files folder (terminal_directory\tester\files if for expert testing) or in its subfolders.

FILE_BIN and FILE_CSV modes cannot be used simultaneously.

If FILE_WRITE does not combine with FILE_READ, a zero-length file will be opened. If even the file containd some data, they will be deleted. If there is a need to add data to an existing file, it must be opened using combination of FILE_READ | FILE_WRITE.

If FILE_READ does not combine with FILE_WRITE, the file will be opened only if it already exists. If the file does not exist, it can be created using the FILE_WRITE mode.

No more than 32 files can be opened within an executable module simultaneously. Handles of files opened in the same module cannot be passed to other modules (libraries).

Parameters:

filename - Filename.

mode - Opening mode. It can be one or combination of values: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE.

delimiter - Delimiter character for csv files. By default, the ';' symbol applies.

Sample:

int handle;

handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';');

if(handle<1)

{

Print("File my_data.dat not found, the last error is ", GetLastError());

return(false);

}

我已经看了这个,但它没有足够的细节来教我如何使用它。我想如果我已经知道如何使用它,这个链接会有意义,但由于我还不知道,所以它没有提供太多的见解。

http://www.metatrader.info/node/142

 
mrtools:
Aaragorn,这个专家需要一个外部来源(我认为)来收集数据或分发数据,以便E.A.进行交易,不幸的是,我没有,也不知道如何创建一个,所以专家不会交易,只是给出错误信息 "文件读数中的无效句柄-1",只是认为这个代码可能有帮助。

问候

mrtools

谢谢你提供的那部分代码。我看了一下,可以看到它在创建和读取文件。我没有看到它在已经创建的文件的末尾添加任何东西。也许它有,只是我没有看到,也许它没有做,也没有什么可看的。我希望我知道有一段代码,我们知道它是把数据附加到最后的,这样我就能看到它是如何做到的。

 

CT不工作

我从头到尾看了一遍这个主题,试图找到一个解决方案。

Cyberia Trader1.85g jpy.mq4版本,我已经加载了它,并且有了 ,但我根本没有任何订单。我使用的是30分钟的美元/瑞郎货币对。没有任何订单让我很难做任何前瞻性测试。系统已经运行了4天,仍然没有订单。

如果能得到一些帮助就太好了,谢谢。

欢呼声

贝诺