如何编码? - 页 23

 
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

 

代码功能不正确

我用它来给我的账户每小时发送一次状态邮件。然而,在我编译和加载它之后,它在下一小时的第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。

}

 

也许你只需要在某些时候把mail = false放进去,或者直接删除 对mail变量的测试,因为目前的代码当然只会发送1封邮件。

 

对邮件变量进行什么测试?...我不明白,请解释一下。

如何在mail=true后面加上

如果(minute()<=58 && !mail)

mail= false。

我想这可能有用吗?

我认为它的编码是错误的

 

我想你可以把

if (minute()<=58 && mail) // 注意不要用!"邮件 "而用 "邮件"。

mail= false。

而这应该是在你的第一个if之外,所以不是在mail = true之后,而是在}之后。

可能有更好的方法来编码,但这应该是可行的。

 

将要尝试

谢谢你,我会给它一个机会......两小时后让你知道。

 

很好,它的作用是....,或者至少它看起来是这样的

 

需要对这部分代码的帮助

谁能告诉我如何正确地写这段代码?

i.e.:如果公开出价>2。

如果开盘价>2

我知道剩下的部分,但我无法正确编写这部分的代码。

我知道这很简单,但我要拔掉我的头发。

 

有人吗?

哇,也许这是个糟糕的问题

 

如果(Open[0] > 2){ //开标

//你的代码

}

如果(Open[0]+(Ask-Bid)>2){ //开盘出价

//你的代码

}

取决于你的经纪人,开盘价的回测 可能不起作用。