新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 103

 
trader781:
例如:我如何等待交易结束?
阿列克谢-维克多罗夫
1.当一个订单被打开时,在变量全局水平或静态中写入票据,然后监控这个订单,直到它的颜色蓝色,哎呀,直到它被比较OrderCloseTime()>0关闭。如果关闭时间大于零,则该订单被关闭。

2.对GOTO操作符的替换要有效得多。阅读关于这些功能的文件。

有没有办法给我看一个例子?我如何等待前一个交易结束?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

 
DenZell:

有没有办法给我看一个例子?我如何等待前一个交易结束?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

有几种选择。

最简单的一个是行动的顺序。首先,我们试图对已经开出的订单做一些事情,然后,如果没有开出的订单,我们试图设置它。

我们将仓位处理和新订单的开仓分为两个独立的用户定义函数。然后在OnTick()函数 中检查是否存在未结订单,并根据得到的结果调用一个或另一个函数。

它在文字上看起来是这样的。

void OnTick()
{
if(OrdersTotal() > 0)
  открытие();
else
  сопровождение();
}

bool открытие()
{
// здесь код открытия
}

bool сопровождение()
{
// здесь код сопровождения
}
而且,如果OrderCloseTime()>0,就更难检查到具体的订单了。

如果账户提供了这种情况,但更多的情况是其他专家顾问的工作或手动开单的情况。
 
是否可以在终端以编程方式选择账户历史的开始日期?
 
Money_Maker:
我能否在终端以编程方式选择账户历史的开始日期?
你可以。这将是历史上第一个具有6型平衡操作的订单。这个订单的开启时间 将是账户历史的开始。
 
Artyom Trishkin:
你可以。这将是历史上第一个具有6型平衡操作的订单。
我不需要历史上的第一个订单......历史在最大限度内打开......我需要从某个日期开始的历史......我将以编程方式设置(显然,这个问题由于细节而被简化了)。
 
Money_Maker:
我不需要历史上的第一个订单......历史被打开到最大,我需要从某个日期开始的历史......我将以编程方式设置(显然,这个问题是以牺牲细节为代价来简化的)。
答案也是可能的。

但问题仍然是 "精简 "的,所以我会说,我们应该跳过那些开放时间 早于那个 "特定日期 "的订单。
 
Artyom Trishkin:
答案也是,你可以。

但问题仍然是 "精简",所以我想说,我们应该跳过开放时间 早于这个 "特定日期 "的订单......当然,我没有想到......但7年来有很多订单......。
我还没有真正想过按日期过滤......但7年是一个很大的订单。
该问题在截图中以红色划线......所以该问题没有被精简?
 
Money_Maker:
当然,我没有想到要按日期过滤......但7年里有很多订单。
在截图中,问题用红色下划线,你必须把某个日期放在那里......所以问题没有被精简?
我不明白你的问题 :(

你到底想通过编程做什么?
 
Artyom Trishkin:
我不明白你的问题 :(

你到底想通过编程做什么?
在红色下划线的地方,输入日期,基本上点击确定......它决定了报告中的历史深度。
 
Money_Maker:
在红色下划线的地方,输入日期,基本上点击确定......它决定了报告中的历史深度。
你不能在纯mql中以编程方式进行。你需要通过WinAPI来寻找这个窗口和日期,我想。
原因: