Compiling 'universalMAcrossECNmartingaleSAR.mq4'... '(' - function definition unexpected (538, 20)'TempLastOrderProfit' - variable not defined (548, 15)'TempLastOrderProfit' - variable not defined (551, 15)'TempLastOrderProfit' - variable not defined (553, 52)
问题是,我在马丁格尔系统中使用了非常类似的代码,效果非常好。 既然它对马丁格尔系统有效,现在不也应该有效吗?
试试使用类似这样的东西。
{
double TempLastOrderProfit = 0;
datetime CloseTime = 0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
{
CloseTime = OrderCloseTime();
TempLastOrderProfit = OrderProfit() + OrderSwap()+ OrderCommission();
}
}
return(TempLastOrderProfit);
}
它将返回你最后一笔订单的准确利润(或损失)金额。
试试用这样的方法:它将返回最后一笔订单的准确利润(或损失)金额
谢谢你的帮助,姆拉登。我对代码进行了一些调整,直到我得到了没有任何错误的编译,但EA仍然在亏损后停止并反转。这就是我现在使用的确切代码。
{
double TempLastOrderProfit = 0;
datetime CloseTime = 0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() >CloseTime)
{
CloseTime = OrderCloseTime()。
}
}
如果(StopAndReverse==true && subTotalTrade()>0 && OrderProfit()>0)
{
if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true))
{
subCloseOrder();
如果(subTotalTrade()>0) subCloseOrder();
如果(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !");
}
}
}
double GetLastPL() 给我带来了以下错误:'(' -函数 定义意外。
谢谢你的帮助,Mladen。我对代码进行了一些调整,直到我得到了没有任何错误的编译,但EA仍然在亏损后停止并反转。这就是我现在使用的确切代码。 double GetLastPL() 给我带来以下错误:'(' - 函数定义出乎意料。
黑库克
你必须在循环中进行所有的逻辑比较,因为像OrderProfit()这样的函数是从一个封闭的订单列表中返回当前选择的订单 的利润。如果不在主循环内(for(int i=OrdersHistoryTotal()-1;i>=0;i--)),那么只有最后选择的订单会被测试,但这并不意味着它是最后一个订单(metaquotes在其文档中明确指出,已关闭(或仍在打开)的订单列表中的订单不一定是任何特定的顺序 - 这是代码员的责任,以检查顺序。)
BlackCoq 你必须在循环中进行所有的逻辑比较,因为像OrderProfit()这样的函数是在关闭订单的列表中返回当前所选订单的利润。如果不在主循环内(for(int i=OrdersHistoryTotal()-1;i>=0;i--)),那么只有最后选择的订单将被测试,但这并不意味着它是最后一个订单(metaquotes在其文档中明确指出,已关闭(或仍在打开)的订单列表中的订单不一定是任何特定顺序 - 这是代码员的责任,以检查顺序。)
在这个看似简单的任务失败了许多小时后,我决定在继续之前多学习一些编程。无论如何,感谢您的帮助!
当我试着这样做的时候,EA根本就不会开出任何头寸。
{ double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); } } { if(StopAndReverse==true && subTotalTrade()>0 && OrderProfit()>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }[/PHP]
And with this, it would "stop and reverse" even if last trade was a loss:
[PHP] { double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); TempLastOrderProfit = OrderProfit() + OrderSwap()+ OrderCommission(); } } return(TempLastOrderProfit); { if(StopAndReverse==true && subTotalTrade()>0 && TempLastOrderProfit>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }再次感谢您。
在这个看似简单的任务失败了许多小时后,我决定在继续之前多学习一些编程。谢谢你的帮助!
当我尝试这样做的时候,EA根本就不会开出任何头寸。
{ double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); } } { if(StopAndReverse==true && subTotalTrade()>0 && OrderProfit()>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }[/PHP]
And with this, it would "stop and reverse" even if last trade was a loss:
[PHP] { double TempLastOrderProfit = 0; datetime CloseTime = 0; for(int i=OrdersHistoryTotal()-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime) { CloseTime = OrderCloseTime(); TempLastOrderProfit = OrderProfit() + OrderSwap()+ OrderCommission(); } } return(TempLastOrderProfit); { if(StopAndReverse==true && subTotalTrade()>0 && TempLastOrderProfit>0) { if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true)) { subCloseOrder(); if(subTotalTrade()>0) subCloseOrder(); if(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }BlackCoq
如果你按原样使用我发布的函数,它将返回最后一个平仓订单的准确利润(不需要改变其中的任何内容)。
BlackCoq 如果你按原样使用我发布的函数,它将返回你最后一笔平仓订单的准确利润(不需要改变其中的任何内容)。
当我试图复制这个函数 时,无论我如何调整,都会出现许多错误。
这段代码。
{
double GetLastPL()
{
double TempLastOrderProfit = 0;
datetime CloseTime = 0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime() >CloseTime)
{
CloseTime = OrderCloseTime();
TempLastOrderProfit = OrderProfit() + OrderSwap() + OrderCommission()。
}
}
return(TempLastOrderProfit)。
{
如果(StopAndReverse==true && subTotalTrade()>0 && TempLastOrderProfit>0)
{
if((LastTrade=="BUY" && SellCondition==true) || (LastTrade=="SELL" && BuyCondition==true))
{
subCloseOrder();
如果(subTotalTrade()>0) subCloseOrder();
如果(subTotalTrade()>0) subCloseOrder();
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !");
}
}
}
}给我带来了错误。
编译'universalMAcrossECNmartingaleSAR.mq4' ...
'(' - 函数定义出乎意料 (538, 20)
'TempLastOrderProfit' - 变量未定义 (548, 15)
'TempLastOrderProfit' - 未定义的变量 (551, 15)
'TempLastOrderProfit' - 未定义的变量 (553, 52)
当我试图复制这个函数时,无论我如何调整,都会出现许多错误。
这个代码。
if(IsTesting() && PrintControl==true) Print("STOP AND REVERSE !"); } } } }[/PHP]
Gives me the errors:
[PHP]
Compiling 'universalMAcrossECNmartingaleSAR.mq4'... '(' - function definition unexpected (538, 20)'TempLastOrderProfit' - variable not defined (548, 15)'TempLastOrderProfit' - variable not defined (551, 15)'TempLastOrderProfit' - variable not defined (553, 52)
黑库克
该函数 必须粘贴在任何其他函数之外。这里有一个非常简单的ea,显示了它是如何工作的,以及应该如何使用它
BlackCoq 该函数必须粘贴在任何其他函数之外。下面是一个非常简单的EA,显示了它是如何工作的以及应该如何使用它
我确信我在这里错过了什么,但即使我试图在EA中的任何其他函数之外复制该函数,我仍然得到以下错误。
'(' - 函数定义意外(在双倍GetLastPL() 之后)
'TempLastOrderProfit' - 变量未定义 (554, 15)
'TempLastOrderProfit' - 变量未定义 (557, 15)
我确信我错过了什么,但即使我试图在EA的任何其他函数之外复制该函数,我仍然得到以下错误。
'(' - 函数定义出乎意料(在双倍GetLastPL() 之后)
'TempLastOrderProfit' - 未定义变量 (554, 15)
TempLastOrderProfit' - 未定义变量 (557, 15)对不起,但没有你的代码,我不知道你在做什么。
你可以从该测试EA中看到,它的工作完全没有问题。
对不起,没有你的代码,我不知道你在做什么,你可以从测试的EA中看到,它工作起来一点问题都没有。
当我试图编译你所附的EA时,我也得到了几个错误。我们使用的是不同版本的MT4吗?
我附上了我试图在 "停止和逆转 "之前添加功能 的EA。