如何编码? - 页 23 1...161718192021222324252627282930...347 新评论 Wackena 2007.03.19 10:10 #221 islandrock: 这段代码并没有使我的EA开启的每笔交易在开启后的12小时内到期...... 订单过期 时间只对挂单起作用。如果OrderSend()是OP_BUY或OP_SELL,你需要在代码中为你的订单计时。下面是一个简单的例子。 int OrderTime; OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask+TakeProfit*Point,"timetest",16384,0,Green) OrderTime=TimeCurrent(); int total = OrdersTotal(); for(int cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if((OrderType() <= OP_SELL) && (OrderSymbol() == Symbol()) ) { if(OrderType()==OP_BUY && TimeCurrent()-OrderTime>(12*60)*60) { OrderClose(OrderTicket(),LotsOptimized(),Bid,3,Violet); } } } Wackena How to code? 10点3.mq4 小女子刚学EA 简单问题请大家指点一下 islandrock 2007.03.21 13:24 #222 代码功能不正确 我用它来给我的账户每小时发送一次状态邮件。然而,在我编译和加载它之后,它在下一小时的第59分钟完美地发送了那封邮件,因为它应该这样做,然后它再也没有发送另一封。我做错了什么? 我不需要在第59分钟发送,我只需要每小时发送一次 bool mail; int start() { 如果(Minute()>=59 && !mail){ SendMail("Account Status","Account Balance is="+DoubleToStr(AccountBalance(),2)+"_Account Equity is="+DoubleToStr(AccountEquity(),2)+ "_账户利润是="+DoubleToStr(AccountProfit(),2)+"_账户保证金是="+DoubleToStr(AccountMargin(),2)+ "_账户自由保证金是="+DoubleToStr(AccountFreeMargin(),2))。 mail=true。 } jlpi 2007.03.21 13:32 #223 也许你只需要在某些时候把mail = false放进去,或者直接删除 对mail变量的测试,因为目前的代码当然只会发送1封邮件。 islandrock 2007.03.21 13:41 #224 对邮件变量进行什么测试?...我不明白,请解释一下。 如何在mail=true后面加上 如果(minute()<=58 && !mail) mail= false。 我想这可能有用吗? 我认为它的编码是错误的 jlpi 2007.03.21 14:03 #225 我想你可以把 if (minute()<=58 && mail) // 注意不要用!"邮件 "而用 "邮件"。 mail= false。 而这应该是在你的第一个if之外,所以不是在mail = true之后,而是在}之后。 可能有更好的方法来编码,但这应该是可行的。 islandrock 2007.03.21 14:16 #226 将要尝试 谢谢你,我会给它一个机会......两小时后让你知道。 islandrock 2007.03.21 20:14 #227 很好,它的作用是....,或者至少它看起来是这样的 islandrock 2007.03.25 14:47 #228 需要对这部分代码的帮助 谁能告诉我如何正确地写这段代码? i.e.:如果公开出价>2。 如果开盘价>2 我知道剩下的部分,但我无法正确编写这部分的代码。 我知道这很简单,但我要拔掉我的头发。 islandrock 2007.03.26 10:21 #229 有人吗? 哇,也许这是个糟糕的问题 [删除] 2007.03.26 10:33 #230 如果(Open[0] > 2){ //开标 //你的代码 } 如果(Open[0]+(Ask-Bid)>2){ //开盘出价 //你的代码 } 取决于你的经纪人,开盘价的回测 可能不起作用。 1...161718192021222324252627282930...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这段代码并没有使我的EA开启的每笔交易在开启后的12小时内到期......
订单过期 时间只对挂单起作用。如果OrderSend()是OP_BUY或OP_SELL,你需要在代码中为你的订单计时。下面是一个简单的例子。
int OrderTime;
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask+TakeProfit*Point,"timetest",16384,0,Green)
OrderTime=TimeCurrent();
int total = OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if((OrderType() <= OP_SELL) && (OrderSymbol() == Symbol()) )
{
if(OrderType()==OP_BUY && TimeCurrent()-OrderTime>(12*60)*60)
{
OrderClose(OrderTicket(),LotsOptimized(),Bid,3,Violet);
}
}
}Wackena
代码功能不正确
我用它来给我的账户每小时发送一次状态邮件。然而,在我编译和加载它之后,它在下一小时的第59分钟完美地发送了那封邮件,因为它应该这样做,然后它再也没有发送另一封。我做错了什么?
我不需要在第59分钟发送,我只需要每小时发送一次![](https://c.mql5.com/forextsd/smiles/cry_smile.png)
bool mail;
int start()
{
如果(Minute()>=59 && !mail){
SendMail("Account Status","Account Balance is="+DoubleToStr(AccountBalance(),2)+"_Account Equity is="+DoubleToStr(AccountEquity(),2)+
"_账户利润是="+DoubleToStr(AccountProfit(),2)+"_账户保证金是="+DoubleToStr(AccountMargin(),2)+
"_账户自由保证金是="+DoubleToStr(AccountFreeMargin(),2))。
mail=true。
}
也许你只需要在某些时候把mail = false放进去,或者直接删除 对mail变量的测试,因为目前的代码当然只会发送1封邮件。
对邮件变量进行什么测试?...我不明白,请解释一下。
如何在mail=true后面加上
如果(minute()<=58 && !mail)
mail= false。
我想这可能有用吗?
我认为它的编码是错误的
我想你可以把
if (minute()<=58 && mail) // 注意不要用!"邮件 "而用 "邮件"。
mail= false。
而这应该是在你的第一个if之外,所以不是在mail = true之后,而是在}之后。
可能有更好的方法来编码,但这应该是可行的。
将要尝试
谢谢你,我会给它一个机会......两小时后让你知道。
很好,它的作用是....,或者至少它看起来是这样的![](https://c.mql5.com/forextsd/smiles/shades_smile.png)
需要对这部分代码的帮助
谁能告诉我如何正确地写这段代码?
i.e.:如果公开出价>2。
如果开盘价>2
我知道剩下的部分,但我无法正确编写这部分的代码。
我知道这很简单,但我要拔掉我的头发。
有人吗?
哇,也许这是个糟糕的问题
如果(Open[0] > 2){ //开标
//你的代码
}
如果(Open[0]+(Ask-Bid)>2){ //开盘出价
//你的代码
}
取决于你的经纪人,开盘价的回测 可能不起作用。