FileWrite(handle,"Losing Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",blorderOpen);
FileWrite(handle," ");
Print("Recorded Losing Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);
FileWrite(handle,"Winning Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",borderOpen);
FileWrite(handle," ");
Print("Recorded Winning Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);
我从头到尾看了一遍这个主题,试图找到一个解决方案,我有
Cyberia Trader1.85g jpy.mq4版本我已经加载了它,并且有
,但我根本没有任何订单。我使用的是30分钟的美元/瑞郎货币对。没有任何订单让我很难做任何前瞻性测试。系统已经运行了4天,仍然没有订单。
如果能得到一些帮助就太好了,谢谢。
欢呼声
贝诺如果我知道如何做得比70%好,我会帮助你,但我不知道。我在1小时图上运行,试试这个。
谢谢你提供的这段代码。我看了一下,可以看到它在创建和读取文件。我没有看到它在已经创建的文件的末尾添加任何东西。也许它有,只是我没有看到,也许它没有做,也没有什么可看的。我希望我知道有一段代码,我们知道它是将数据附加到结尾的,这样我就能看到它是如何做到的。
请看一下这个主题。
https://www.mql5.com/en/forum/175496
我一直在研究这段代码,我把它搞得一团糟,但是......。
我想让它打印到文件的努力目前还不成功。
我想,我将要求那些想要协助收集数据的人尝试手动完成这一工作。
我设置了这个附件中的EA,将CT的最小逻辑打印到日志中。这不是在抓取任何指标,但也许只是看一下CT的逻辑,就能给我们一些参考。
为了收集这些数据,你需要做的是在回溯测试 设置中运行EA,就像现在一样。然而,当它运行时,你需要监控日志标签。由于日志不能容纳超过几个订单的数据,而不会开始截断并从底端掉落数据,你需要在达到大约连续5-7个订单时迅速停止测试。然后将数据复制并粘贴到记事本中,重新启动测试器,观察它何时到达你之前复制/粘贴的地方。你必须小心翼翼地捕捉所有的数据,当你粘贴时,一个订单的数据看起来像这样......
2006.11.10 10:22:52 2004.03.05 03:02 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Recorded Winning Long 56 Opened: 1.2188 Closed: 1.221
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Ticket: 56 DV: -0.0051 CCI: 57.9346 Long order is opened @: 1.2188 StopLoss= 1.2171 TakeProfit= 1.2285
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Buy @ Minute 40
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: open #56 buy 0.42 EURUSDm at 1.2188 sl: 1.2171 tp: 1.2285 ok
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid:0.0004
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid:0.0004
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid:0.0009
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityMid:0.002
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityMid:0.0021
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityMid:0.0021
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityQuality:8
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityQuality:8
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityQuality:19
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuySucPossibilityQuality:7
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellSucPossibilityQuality:7
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedSucPossibilityQuality:14
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: UndefinedPossibilityMid*UndefinedPossibilityQuality:0.0164
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: BuyPossibilityMid*BuyPossibilityQuality:0.0032
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: SellPossibilityMid*SellPossibilityQuality:0.0034
2006.11.10 10:22:52 2004.03.04 18:40 Cyberia Trader1.9 R2.2 AlertEuro EURUSDm,H1: Hour: 18 Minute: 40
在一个小时的图表上运行这个程序并捕获数据。然后通过电子邮件将.txt记事本文件发送给我,也许如果 islandhome 从第一个订单开始,做 2005 年的前 500 次交易,AZBOfin 从 2005 年的交易 500 开始,做下一个 500 次?
啊!不可能。让我试试编码大师刚刚发布的内容。
请看一下这个主题:https://www.mql5.com/en/forum/175496
哇,你可能刚刚救了我很多的麻烦......。
你能不能看一下我发布的EA,看看我在代码中的4个地方试图打印到文件。两次是在开单的时候,然后是在关闭订单的时候,在不同的函数中。你知道我想从这里提取什么吗?你能帮助我编写代码,使其记录每个订单的信息,打开时的程序逻辑和关闭时的结果吗?
如果我每次做完这个文件刷新,会不会抹掉任何东西?我还是不明白刷新的事情是如何进行的。
Eureka!哦,谢谢你的编码大师,很好的救援!
现在我还是有点不明白......注意到.txt文件,它没有为每笔订单打印结果行。
我是否可以认为,如果它不打印结果行,那么它就是一个亏损的头寸?
你永远无法破译这种格式的数据,你需要它是成行的,试着加入这些。
我仍然有一个问题,它说有太多的文件被打开了......但这是你的数据需要形成的基本方式,以便你能在Excel中查看它。
//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file
string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";
File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');
if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",
"SellPossibilityMid*SellPossibilityQuality",
"BuyPossibilityMid*BuyPossibilityQuality",
"UndefinedPossibilityMid*UndefinedPossibilityQuality",
"UndefinedSucPossibilityQuality",
"SellSucPossibilityQuality",
"BuySucPossibilityQuality",
"UndefinedPossibilityQuality",
"SellPossibilityQuality",
"BuyPossibilityQuality",
"UndefinedSucPossibilityMid",
"SellSucPossibilityMid",
"BuySucPossibilityMid",
"UndefinedPossibilityMid",
"SellPossibilityMid",
"BuyPossibilityMid",
"Decision" ) < 0)
{
PrintError();
return (Error);
}
//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data
//Record statistics at time of Order - Added by DudeWorks
void RecordTickets ()
{
if (Error > 0)
return (Error); //stop on error
FileSeek(File,0,SEEK_END);
if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,
SellPossibilityMid*SellPossibilityQuality,
BuyPossibilityMid*BuyPossibilityQuality,
UndefinedPossibilityMid*UndefinedPossibilityQuality,
UndefinedSucPossibilityQuality,
SellSucPossibilityQuality,
BuySucPossibilityQuality,
UndefinedPossibilityQuality,
SellPossibilityQuality,
BuyPossibilityQuality,
UndefinedSucPossibilityMid,
SellSucPossibilityMid,
BuySucPossibilityMid,
UndefinedPossibilityMid,
SellPossibilityMid,
BuyPossibilityMid,
Decision) < 0)
{
PrintError();
return (Error);
}
FileFlush(File);
return(0);
}
你永远无法破译这种格式的数据,你需要的是行的数据,试着加入这些。
我仍然有一个问题,它说有太多的文件被打开......但这是你的Dumpp需要的基本方式,以便你可以在Excel中查看它。
//LOGIC FOR HEADER OF FILE - creates the header labels for the rows in the CSV file
string fileName = Symbol() + "-" + TimeToStr(LocalTime(), TIME_DATE) + " " + TimeHour(LocalTime()) + "-" + TimeMinute(LocalTime()) + ".csv";
File = FileOpen(fileName, FILE_CSV|FILE_WRITE, ',');
if (FileWrite(File, Symbol(),"DATETIME","Lots","Bid","SlipPage","StopLoss","TakeProfit","MagicNumber",
"SellPossibilityMid*SellPossibilityQuality",
"BuyPossibilityMid*BuyPossibilityQuality",
"UndefinedPossibilityMid*UndefinedPossibilityQuality",
"UndefinedSucPossibilityQuality",
"SellSucPossibilityQuality",
"BuySucPossibilityQuality",
"UndefinedPossibilityQuality",
"SellPossibilityQuality",
"BuyPossibilityQuality",
"UndefinedSucPossibilityMid",
"SellSucPossibilityMid",
"BuySucPossibilityMid",
"UndefinedPossibilityMid",
"SellPossibilityMid",
"BuyPossibilityMid",
"Decision" ) < 0)
{
PrintError();
return (Error);
}
//LOGIC FOR APPEND OF FILEWRITE - Writes the rows of data
//Record statistics at time of Order - Added by DudeWorks
void RecordTickets ()
{
if (Error > 0)
return (Error); //stop on error
FileSeek(File,0,SEEK_END);
if (FileWrite(File, Symbol(),TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),Lots,Bid,SlipPage,StopLoss,TakeProfit,MagicNumber,
SellPossibilityMid*SellPossibilityQuality,
BuyPossibilityMid*BuyPossibilityQuality,
UndefinedPossibilityMid*UndefinedPossibilityQuality,
UndefinedSucPossibilityQuality,
SellSucPossibilityQuality,
BuySucPossibilityQuality,
UndefinedPossibilityQuality,
SellPossibilityQuality,
BuyPossibilityQuality,
UndefinedSucPossibilityMid,
SellSucPossibilityMid,
BuySucPossibilityMid,
UndefinedPossibilityMid,
SellPossibilityMid,
BuyPossibilityMid,
Decision) < 0)
{
PrintError();
return (Error);
}
FileFlush(File);
return(0);
}
这对我来说不是一个问题。
excel上的导入 外部数据功能可以很好地将其放入行中。只需告诉它以";"为界,我想在格式化方面遇到的挑战是,它没有为损失的头寸打印结果行。这意味着行中的数据对每个订单都不一样,这使得设计一个识别器来识别输掉的条目变得很困难。现在我可以把赢的数据和其他的数据分开,也许这就够了,我想我可以绕过我得到的东西,但我在这里面还没有任何指标数据。
{
//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(OrderOpenPrice() + Spread >= OrderClosePrice())
{
datetime blorderOpen=OrderOpenTime();
handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);
if(handle!=-1)
{
FileSeek(handle,0,SEEK_END);
FileWrite(handle,"Losing Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",blorderOpen);
FileWrite(handle," ");
Print("Recorded Losing Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);
FileFlush(handle);
FileClose(handle);
}
else
{
int err1;
err1=GetLastError();
Print("error(",err1,"): ",ErrorDescription(err1));
return(0);
}
}//if win or lose
}//if buy
}//if symbol and magic number
return (0);
}//record long outcomes[/PHP]
what gives???
see this? this works fine...
[PHP]void RecordLongOutcomes()
{
//OrderSelect(OrderTicket(),SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(OrderOpenPrice() + Spread < OrderClosePrice())
{
datetime borderOpen=OrderOpenTime();
handle = FileOpen("Cyberia.txt",FILE_READ|FILE_WRITE);
if(handle!=-1)
{
FileSeek(handle,0,SEEK_END);
FileWrite(handle,"Winning Long OrderTicket: ",OrderTicket()," Opened @: ",OrderOpenPrice()," Closed @: ",OrderClosePrice()," Order Open Time: ",borderOpen);
FileWrite(handle," ");
Print("Recorded Winning Long ",OrderTicket()," Opened: ",OrderOpenPrice()," Closed: ", Bid);
FileFlush(handle);
FileClose(handle);
}
else
{
int err;
err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
//return(0);
}
}//if win or lose
}//if buy
}//if symbol and magic number
RecordLongLOutcomes();
return (0);
}//record long outcomes这是同样的代码!(practically)
这个mql语言是惊人的脾气!
嗨,Aaragorn
请上传最佳设置文件
的文件
谢谢
再见
嗨,Aaragorn
请上传最好的套装文件
的文件
谢谢
拜拜它在这里...
https://www.mql5.com/en/forum/174700/page71