初学者的问题 MQL5 MT5 MetaTrader 5 - 页 823

 
User_mt5:

你能告诉我如何理解这一点吗?

这些订单的价格走了很多次,最终涨了,但没有一个订单成为头寸。为什么?

如果在哪里写了,请给我一个链接。


没有足够的手数来执行该订单。

据我所知,我对这个问题了解甚少,你必须把限价器放在远高于当前价格的 位置。

 
Vladislav Andruschenko:

没有足够的手数来执行该订单。

我想也是如此。但接下来是什么呢?我们不能删除或修改该订单。那么,他们将永远挂在那里?
我不明白当演示上没有足够的地段时,这意味着什么。

弗拉迪斯拉夫-安德鲁申科

据我所知,我对这一问题有一点了解,你必须把限价器放在远高于当前价格 的位置。

不,这是不正确的。你可以在当前限额内的任何地方下单。有一个StopLevel的限制。也就是说,你不能把订单放在比StopLevel的值更接近价格的地方。

但如果服务器接受它,这意味着一切都很好。

 
User_mt5:

我也这么认为。但我们接下来应该怎么做?我们不能删除或修改该订单。那么,他们将永远挂在那里?
而且我们并不真正理解当演示上没有足够的地段时,这意味着什么。

不,这是不正确的。你可以在当前限额内的任何地方下单。有一个StopLevel的限制。也就是说,你不能把订单放在比StopLevel值更接近价格的地方。

但如果服务器接受它,这意味着一切都很好。


在交流中,情况有些不同。

 
Vladislav Andruschenko:

证券交易所的情况有点不同...

弗拉德,什么交换?你可以看到哪个公司的演示是开放的...

 
Alexey Viktorov:

弗拉德,什么交换?你可以看到哪个公司的演示是开放的...


我是说期货。 不,我糊涂了,别理我,我现在正在吃药。

 
Alexey Viktorov:

弗拉德,什么交换?你可以看到哪个公司的演示是开放的...?

能否请你解释一下该评论的内容,因为我是新手。
顺便说一下,我已经按下了 "买入 "按钮,订单没有被执行,但它在工具箱窗口中显示为......某种程度上的待定,但在图表中没有显示。
 
User_mt5:
能否请你解释一下这个评论的内容,因为我是这个行业的新手。
顺便说一下,我戳了一下买入按钮,订单没有执行,但它在工具窗口中显示为......某种意义上的挂起,但在图表中没有。
有什么可解释的呢?在截图中,你可以看到账户号码 和与交易所无关的经纪人的名字。
 
Alexey Viktorov:
有什么好解释的呢?在截图中,你可以看到账户号码 和一个与交易所无关的经纪人的名字。

我不明白。

如果这个经纪商不让我在这个符号上交易,那么他为什么要把它列入模拟的符号列表中?
如果是这样,我们应该如何理解目前的订单情况?

那么,如果订单被部分执行(可能发生在5个符号上),那么剩下的订单应该如何处理?
在手动关闭或执行之前,它是否必须是关闭的或活的?
如果在什么地方写了,我将非常感谢你的链接。

 
User_mt5:

我不明白...

如果这个经纪人不让我在这个符号上交易,那么他为什么要把它列入模拟的符号列表?
如果他这样做,我们应该如何理解目前的订单状况?

那么,如果订单被部分执行(可能发生在5个符号上),那么剩下的订单应该如何处理?
在手动关闭或执行之前,它是否必须是关闭的或活的?
如果在什么地方写了,我将非常感谢你的链接。

不要试图把我拖入关于办公室如何工作的讨论。特别是我多年前就与这个人断绝了一切关系,对它一无所知。

 
Vladimir Karputov:

一个粗略的算法。

  1. 我们在OnInit()中创建两个句柄(用于快速和慢速 移动平均线指标)。
  2. 在OnTick()中(建议只在新条形上工作,而不是在每个tick上)声明两个数组--其中一个将从快速MA复制数值,第二个数组将从慢速MA复制数据。
  3. 从慢速MA和快速MA中复制例如100个最后值(即我们应该从索引 "0 "和数字 "100 "中复制数据)到这些数组中。
  4. 我们对数组进行反转,使数组中的索引#0对应于图表中最右边的柱子。
  5. 现在我们只需要在两个数组中从 "0 "到 "100-1 "进行循环,寻找交叉点。当我们找到交叉点时,循环变量的值将是酒吧的编号。
注意:这种算法没有考虑到任何检查和错误保护。

谢谢,当前两个算法步骤完成后,我如何写出循环来寻找穿越两个MAs的条数,并且在第一个条上有两个MAs的值?

   MA1_1=iMAGet(handle_iMA_1, 1);      // значение 1-й МА

   MA2_1=iMAGet(handle_iMA_2, 1);      // значение 2-й МА

/

double iMAGet(const int handle,const int index)
  {
   double MA[];
   ArraySetAsSeries(MA,true);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle,0,0,index+1,MA)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(MA[index]);
  }

.