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

 
如何以编程方式检查一键式交易面板是否正在运行?
 
Vladimir Tkach:
如何以编程方式检查一键式交易面板是否正在运行?

把它从班上 拉出来了。

   //--- Получение параметра "панель торговли OneClick" на чарте
   bool                 IsChartOneClick(void)            {return(ChartGetInteger(m_chart_id,CHART_SHOW_ONE_CLICK));}
 
Artyom Trishkin:

要解决这样的问题,就应该检查在这根柱子上是否存在或曾经存在过开仓和平仓 的情况。

否则你会把一切都堆积起来。信号功能应发送信号,交易功能应检查信号的有效性。


这就是我想做的事,但我不知道如何实施它。如何在当前的酒吧中检查。
 
AlGuru:

这就是我想做的事,只是不知道如何实现它。如何在当前的酒吧写检查。

检查是否有一个在第0条上开的头寸。

如果没有,则另外检查是否存在一个在第0条上开仓并在同一条上平仓的平仓头寸

相应地,你需要使这些功能。

  1. 最后一次开仓的开仓栏位
  2. 最后关闭的位置开放的酒吧
  3. 最后一次平仓的收盘条
  4. 在同一根柱子上打开和关闭最后一个平仓的事实(使用前两个函数2和3)。
然后,利用这些功能,获得你需要的数据,以作出决定。
 
a196012a:

大家好!

请告知如何在策略测试器中 对以下动作进行编码

一般想法

1.开单N -X(量=0.1)。

2.如果 这个 订单在SL上被关闭,那么。为了补偿损失,立即在SL上的订单 N X 收盘价,打开 订单 N - X1(体积= 0.3)。

我们必须要做的。

3 如果订单(体积=0.3)在SL上被关闭,只有 订单N-X 开仓小时值会 被记住,以补偿其开 仓时的 损失。

我知道如何打开这两个订单,但我不能找到我的方法,如何记住一个 在SL上关闭的0.1手量的订单 的小时值。

注意:这与同一勾股的订单关闭有关。

有时,在一个tick上有超过一个成交量为0.1和0.3的订单被关闭。

例如,如果3个0.1的订单 ,在一个SL上的一个tick上被关闭,而不是开3个0.3的订单 。- 只有1个0.3手的订单 被打开

在这种情况下,如果我在SL上只关闭1个0.3手的订单,那么当两个0.1手的订单被打开 补偿他们的损失时,我将不会得到小时的数值。

也就是说,在这种情况下,我需要开3个0.3手的 订单,而不是一个。


有时,3个0.3手的订单会在一个点上被SL关闭,尽管它们相应的0.1手订单是在不同的点上开的(但只是在一个价格)。

在这种情况下,程序只为最后一个0.1手的订单保存正确的值。

我需要程序保存SSL关闭的每个订单(0.1手)的小时值。


下面是我的代码,我们需要修改。

谢谢你的帮助。

下面是一个例子,说明在一个tick上有几个订单被关闭的情况


日安!

为什么需要考虑每个已关闭订单的时间?你可以不这样做...还是你在其他地方有这些数据?

2)最后正好有3个订单是以亏损收盘的?或者说,有多少个订单并不重要,也许是5个或8个......。因此,对于每个

...亏损平仓的订单应该对应于更大手数的订单?

 
Valerius:


日安!

1.为什么要对每个关闭的酒吧进行计时?你可以不这样做...你是否将这些数据保存在其他地方?

2)那最后3个以亏损收盘的订单呢?或者说,有多少个订单并不重要,可能是5个或8个......。因此,对于每个

......亏损平仓的订单应该对应于较大手数的订单?

谢谢你的答复。

是的,我在接下来的程序步骤中考虑到了开场时间。

这个数字可以从2到10。

确切地说,每一个被止损关闭的订单都应该对应于另一个以更大成交量开盘的订单。

我所说的 "匹配 "是指如果在1天内,在任何时候打开的3个订单被SL关闭,并立即以其收盘价关闭。

3个体积较大的订单应该打开。就在每个单独的订单结束后。例如,在12点,一个订单以1.2000的价格关闭

12点时,在1.2000的价格上,有一个更大的订单被打开。这对每一个被SL关闭的较小数量的订单都是一样的。在较大体积的订单被SL关闭后,记住订单打开时的小时数, 以回复 它被打开的 关闭 时间。也就是说,如果订单在12:00以1.200的价格开仓并通过止损平仓,那么大批量订单在12:00以1.2000的价格开仓。如果交易量较大的订单被SL关闭,请记住交易量较小的订单的开盘时间,即12 点。

我们应该在每一个只通过SL关闭的大批量订单后记住这一点。

我发现当几个订单(从2到10)在一个SL上被一个刻度关闭时,打开订单并保存小时值特别困难。

见最初的帖子中对这种情况的详细描述。

 
a196012a:

谢谢你的反馈。

是的,我在随后的程序行动中考虑到了开幕时间。

这个数字可以从2到10。

确切地说,每一个被止损关闭的订单都应该对应于另一个由更大成交量打开的订单。

我所说的 "匹配 "是指如果在1天内,在任何时候打开的3个订单被SL关闭,并立即以其收盘价关闭。

3个体积较大的订单应该打开。就在每个单独的订单结束后。例如,在12点,一个订单以1.2000的价格关闭

12点时,立即以1.2000的价格开出一个更大的订单。在每个订单中都是这样做的。而在较大体积的订单被SL关闭后,我们应该记住订单打开的时间 ,以回复 它被打开的 关闭。也就是说,如果订单在12:00以1.200的价格开仓并通过止损平仓,那么大批量订单在12:00以1.2000的价格开仓。如果交易量较大的订单被SL关闭,请记住交易量较小的订单的开盘时间,即12 点。

就这样,在每一个只在SL上关闭的较大体积的订单之后。


还有一个细节....例如,第一笔订单以0.1手关闭,第二笔订单以0.3手打开。我们已经记住了第一个订单的开启时间。然后第二笔订单被止损平仓,我们记住了第二笔订单的开仓时间并设置了0.9手的订单。以此类推。我的理解是否正确?我们是否应该永远只记住第一个订单的时间?
 
你好。为什么欧元对 美元货币对显示为149.16325而不是1.0616?


 
sidovi:
你好。为什么欧元对 美元显示在149.16325而不是1.0616?



尝试更新报价。服务 - 报价档案 - 选择您的货币对 - 加载。

如果这还没有帮助,请重新安装metatrader。

 
Valerius:

好了,再澄清一下....例如,第一笔订单以0.1手关闭,第二笔订单以0.3手打开。我们已经记住了第一个订单的开启时间。然后第二笔订单被止损平仓,我们记住了第二笔订单的开仓时间并设置了0.9手的订单。以此类推。我的理解是否正确?我们只需要记住第一个订单的时间?

所有较大的订单只有在成交量达到0.3手时才会打开。所有较小体积的订单,如果是在SL上收盘时以0.3手的体积开仓,将以0.1手的体积开仓。只有0.1和0.3。没有其他卷。

在通过SL关闭0.3手订单时,请记住订单打开时的小时,以回复其打开时的关闭(即0.1手订单)。

谢谢你的帮助。

你能告诉我在哪里设置了当我的帖子有回复时向我的电子邮件发送消息的选项吗?

再次非常感谢你。