有助于精简EA - 页 2 1234567 新评论 Ronaldo 2009.03.10 17:10 #11 delcor wrote>> 告诉我,在EA程序中是否有一个测试系统,可以一步步向你展示这个EA运行时发生的情况。 没有,没有测试的步骤;使用打印显示检查值和你程序的各个部分。 Ronaldo 2009.03.10 17:15 #12 我喜欢你的 "手数优化 "代码;我对它进行了调整,以便在损失增加时增加手数。 Rudolph Brits 2009.03.10 21:35 #13 ronaldosim: 我喜欢你的 "手数优化 "代码;我对它进行了调整,以便在损失增加时增加手数。 请告诉我 或者把你的EA发给我 Rudolph Brits 2009.03.10 21:44 #14 delcor: 请给我看看或者把你的EA发给我它给了我一个错误函数"CalculateCurrentOrders "没有被引用,将从exp-file中删除。 Ronaldo 2009.03.11 06:51 #15 delcor wrote>> 它给了我一个错误 函数 "CalculateCurrentOrders "没有被引用,将从exp-file中删除。 忽略这个错误;它只是说你有一个叫做CalculateCurrentOrders的函数,但你并没有使用它;所以你要么删除它,要么退出;它不会造成任何伤害;系统说它会从你的编译文件中删除这个函数 ex4 Ronaldo 2009.03.11 06:54 #16 delcor wrote>> 请给我看看 或者把你的EA发给我 在函数LotOptimization下,将你的代码改为如下内容 lot=lot*MulltiplyingFactor*losses 其中MulitplyFactor=2或3或4等,类似于你的DecreaseFactor,即随着亏损的增加而减少你的手数。 尽管如此,随着损失的增加,增加你的手数对你的EA来说是危险的,所以要小心使用。 Rudolph Brits 2009.03.11 08:32 #17 ronaldosim: 在函数LotOptimization下,将你的代码改为如下内容 lot=lot*MulltiplyingFactor*losses 其中MulitplyFactor=2或3或4等,类似于你的DecreaseFactor,即在损失增加时减少你的手数。 尽管如此,随着损失的增加,增加你的手数对你的EA是很危险的,所以要小心使用。 你的意思是这样的吗? //+------------------------------------------------------------------+ //|计算最佳手数 | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots*Multiplying*losses; int orders=HistoryTotal(); // 历史订单总数 int losses=0; // 亏损订单的数量,没有休息时间 //---- 选择手数大小 lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1)。 //---- 计算亏损订单的数量而不中断 如果(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史错误!"); break; } 如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。 //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } 如果(损失>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- 返回手数大小 如果(lot<0.1) lot=0.1; return(lot); } 100点 如何编码? [存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. Ronaldo 2009.03.11 11:00 #18 delcor wrote>> 你是说像这样的东西吗? //+------------------------------------------------------------------+ //|计算最佳手数| //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots*Multiplying*losses; int orders=HistoryTotal(); // 历史订单总数 int losses=0; // 亏损订单的数量,没有休息时间 //---- 选择手数大小 lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1)。 //---- 计算亏损订单的数量而不中断 如果(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史错误!"); break; } 如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。 //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } 如果(损失>1) lot=NormalizeDouble(Lots*Multiplying*losses;,1);} //---- 返回手数大小 if(lot<0.1) lot=0.1; return(lot); } 不,把它放在if(loss>1)的后面。 Rudolph Brits 2009.03.11 12:14 #19 ronaldosim: 不,把它放在if(loss>1)的后面。 它给了我一个错误 '乘法' - 未定义变量 C:\Program Files\InterbankFX Trader 4\experts\jbtest4.mq4 (57, 44) 我在哪里定义它 Rudolph Brits 2009.03.11 14:40 #20 delcor: 它给了我一个错误 'Multiplying' - 未定义变量 C:\Program Files\Interbank FX Trader 4\experts\jbtest4.mq4 (57, 44) 我在哪里定义它? 好吧,我有int multiplying=2。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
告诉我,在EA程序中是否有一个测试系统,可以一步步向你展示这个EA运行时发生的情况。
没有,没有测试的步骤;使用打印显示检查值和你程序的各个部分。
我喜欢你的 "手数优化 "代码;我对它进行了调整,以便在损失增加时增加手数。
我喜欢你的 "手数优化 "代码;我对它进行了调整,以便在损失增加时增加手数。
请告诉我
或者把你的EA发给我
请给我看看
或者把你的EA发给我
它给了我一个错误
函数"CalculateCurrentOrders "没有被引用,将从exp-file中删除。它给了我一个错误
函数 "CalculateCurrentOrders "没有被引用,将从exp-file中删除。忽略这个错误;它只是说你有一个叫做CalculateCurrentOrders的函数,但你并没有使用它;所以你要么删除它,要么退出;它不会造成任何伤害;系统说它会从你的编译文件中删除这个函数 ex4
请给我看看
或者把你的EA发给我
在函数LotOptimization下,将你的代码改为如下内容
lot=lot*MulltiplyingFactor*losses
其中MulitplyFactor=2或3或4等,类似于你的DecreaseFactor,即随着亏损的增加而减少你的手数。
尽管如此,随着损失的增加,增加你的手数对你的EA来说是危险的,所以要小心使用。
在函数LotOptimization下,将你的代码改为如下内容
lot=lot*MulltiplyingFactor*losses
其中MulitplyFactor=2或3或4等,类似于你的DecreaseFactor,即在损失增加时减少你的手数。
尽管如此,随着损失的增加,增加你的手数对你的EA是很危险的,所以要小心使用。
你的意思是这样的吗?
//+------------------------------------------------------------------+//|计算最佳手数 |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots*Multiplying*losses;
int orders=HistoryTotal(); // 历史订单总数
int losses=0; // 亏损订单的数量,没有休息时间
//---- 选择手数大小
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1)。
//---- 计算亏损订单的数量而不中断
如果(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史错误!"); break; }
如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
如果(损失>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- 返回手数大小
如果(lot<0.1) lot=0.1;
return(lot);
}
你是说像这样的东西吗?
//+------------------------------------------------------------------+
//|计算最佳手数|
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots*Multiplying*losses;
int orders=HistoryTotal(); // 历史订单总数
int losses=0; // 亏损订单的数量,没有休息时间
//---- 选择手数大小
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1)。
//---- 计算亏损订单的数量而不中断
如果(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史错误!"); break; }
如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
如果(损失>1) lot=NormalizeDouble(Lots*Multiplying*losses;,1);}
//---- 返回手数大小
if(lot<0.1) lot=0.1;
return(lot);
}
不,把它放在if(loss>1)的后面。
不,把它放在if(loss>1)的后面。
它给了我一个错误
'乘法' - 未定义变量 C:\Program Files\InterbankFX Trader 4\experts\jbtest4.mq4 (57, 44)
我在哪里定义它
它给了我一个错误
'Multiplying' - 未定义变量 C:\Program Files\Interbank FX Trader 4\experts\jbtest4.mq4 (57, 44)
我在哪里定义它?
好吧,我有int multiplying=2。