ordersend()编码的帮助... - 页 3

 
mugged:

Raptor,如果你不介意的话......你打算如何通过php检查连接?

我的想法是这样的。

EA将通过FTP每2分钟(可以是5分钟,30分钟,无论你的容忍度是多少...*)发送一个小文件到我的主机网络服务器,在该网络服务器上运行一个Cron作业,寻找通过FTP收到的文件,并检查 它在过去2分钟内是否被更新,如果没有,它将向我发送一封警报邮件。

 
SDC:
我一直是这样做的,因为MQL4书中的例子就是这样做的,但现在我在想这看起来并不正确,如果你在卖出价上开仓,你想在该价格+你的TP金额上获利,你想在该价格-你的SL金额上止损?

如果你想在价格-x时停止。那是什么意思?你想在买入价达到x价时停止(还是在卖出价达到x价时停止。)

如果你想在买入时有3个点的止损并使用Ask - 3*pips2dbl。在你开仓的那一刻,你现在距离1个点(假设有2个点的点差),这又取决于你的定义。

如果你的意思是当买入价达到x价时,在买入时你的止损点将是x价。但在卖出时,你仍然想在价格x时停止,但触发价格必须是相对于要价的。

当点差发生变化时,你该怎么做?在卖出时,这意味着要在同一位置收盘(买入),你必须修改TP/SL。取决于你的定义。

我所做的是相对于买入价进行所有计算,并在最后进行调整。

//want to open at P
if (OP == OP_BUY)  double bid.to.open = Ask-Bid, bid.to.stop = 0,       DIR=+1.;
else                      bid.to.open = 0;       bid.to.stop = Ask-Bid; DIR=-1.;
:
if ((Bid - P) *DIR >= 0.){ // Time to open
  double openPrice = Bid + bid.to.open,
  OrderSend(NULL, OP, v, Bid+bid.to.open...)
 
WHRoeder:

我的方法是直接报告错误并返回。

我担心的是,我有一个SL和TP=0的开仓订单,而我的EA没有连接到互联网... . .我宁愿被提醒这种可能性,即使我的EA是在VPS或我自己的主机 上。
 

我不是不同意这一点,我确实说过 "报告错误"。

在isConnected()==false的情况下,EA除了等待,也没有什么可以做的。

对于ERR_TRADE_TIMEOUT,EA只能等待,然后再看。

从开始返回并等待下一个tick,然后恢复是最简单的。

 
WHRoeder:
我不是不同意这一点,我确实说过 "报告错误"。 只是在isConnected()==false或ERR_TRADE_TIMEOUT的情况下,EA无能为力,只能等待下一个 tick,然后再看。
当然,我只是想让你明白我的意思,在某些时候我希望有一个看门狗来告诉我有些事情是不对的......因此有了cron job和PHP的想法。
 
mugged:

猛禽,如果你不介意的话......你打算如何通过php检查连接?

也许像这样 ... .

<?php
$to = "recipient@example.com";
$subject = "EA is silent";
$body = "EA has stopped responding . . . ";

$file = 'somefile.txt';
$filetime = filemtime($file);
$timetwomins = time()-120; // two mins ago

if ($filetime < $timetwomins) {
   mail($to, $subject, $body)
}
?>
 

我想我要做的是,在订单触发之前有一封邮件提醒,然后再有一封确认止损被更改的邮件。

因此,如果我收到第一封邮件,而相应的修改邮件没有发出来,那么我就知道有问题了。

 
mugged:

我想我要做的是,在订单触发之前有一封邮件提醒,然后再有一封确认止损被更改的邮件。

因此,如果我收到第一封邮件,而相应的修改邮件没有发出来,那么我就知道有问题了。

我想 订单触发 发送一封邮件,然后再发送一封确认止损已被更改的邮件。
 
qjol:
我认为 订单触发后发送一封邮件,然后再发送一封确认停止的邮件。

我唯一担心的是,如果订单触发后,你的连接在邮件发送前就中断了,怎么办?

另一种方法是,第一封邮件告诉你有东西要触发,然后第二封确认停止的修改。

 
RaptorUK:

也许像这样的事情......。


猛禽,我喜欢这个主意。我过去曾想过这个问题,但不知道如何去做。

我现在有的只是EA每小时发送一封电子邮件,确认它已经启动并运行。我只是需要一些检查 邮件的方法,如果它没有进来,就发送一个警告。同样的想法,不同的方法,我想。

原因: