从头开始自学MQL5语言 - 页 65

 
MrBrooklin:

你好,瓦莱里!非常感谢你,你的版本"......如果用我们的魔法和我们的符号的位置等于零,我们检查时间并打开一个位置...... "原来是最简单和最有效的。我把它加入到检查时间&&PositionTotal()==0的 条件中,只有一个所需金额的头寸被打开了!

真诚的,弗拉基米尔。


不幸的是,MKL没有命令,可以返回符号上的位置数。TotalPosition(总持仓)返回账户上所有符号的所有头寸。因此,要获得符号上的位置,你需要搜索所有的位置,并比较符号在我们的位置。

还有。在当头棒喝的时候,打开它,检查我们的位置的存在,颤音并不总是最佳的。有时,最好先检查是否用我们的向导开仓,如果是,我们就检查平仓时间,否则就拖动它,否则就检查开仓时间。

其目的是减少EA行动的数量。

 
Valeriy Yastremskiy:

不幸的是,在MKL中没有任何命令可以返回一个符号上的位置数。TotalPositions返回所有符号上的所有位置。因此,要获得一个符号的位置,你需要搜索所有的位置,并将符号位置与我们的位置进行比较。

还有。在当头棒喝的时候,打开它,检查我们的位置的存在,颤音并不总是最佳的。有时,最好先检查是否用我们的向导开仓,如果是,我们就检查平仓时间,否则就拖动它,否则就检查开仓时间。

其目的是减少EA行动的数量。

一切都很清楚了,瓦莱里!我正在努力实施你的提示。

真诚的,弗拉基米尔。

 
Valeriy Yastremskiy:

如果我们的Magik和我们的符号上的头寸是零,我们检查时间并开仓,如果是1,我们不开仓,我们检查收盘时间并拖曳,如果超过1,我们警告并不工作。我们可以使用卷轴或检查iff。

你好,瓦莱里!我试图写出没有位置枚举的代码。我写了它,检查了它,它都是有效的。

   if(PositionSelect(Symbol())==false && PositionGetInteger(POSITION_MAGIC)!=Magic_Number
   && time_current.hour==time_open.hour && time_current.min>=time_open.min && time_current.min<time_open1.min)
      OpenBUY();
真诚的,弗拉基米尔。
 
MrBrooklin:

你好,瓦莱里!我试图写出没有位置枚举的代码。我写了它,检查了它,它都是有效的。

问候,弗拉基米尔。

开始时还可以,但只是一个开始。条件太严格了。如果在我们的符号上没有位置,在所有的仪器上也没有与我们的魔力有关的位置,那么它似乎是正常的。在现实生活中,你可能在一个符号上打开2个窗口,另一个可能有一个位置。你可以简单地使用Magik来核算,例如像trishkin,前3位数字--符号代码,后2位数字--脚本/顾问代码。而第一步是手动编码,或根据窗口符号和脚本代码添加字符串 生成magik,然后将字符串转换为数字。

经典的方法是搜索所有订单或头寸。

但这对开始的时候来说太过分了。

这就是为什么一开始就可以。

 
Valeriy Yastremskiy:

开始是可以的,但只能是开始。条件太严格了。如果在我们的符号上没有位置,在所有的仪器上也没有与我们的魔力有关的位置,那么它似乎是正常的。在现实生活中,你可能在一个符号上开了2个窗口,而另一个可能有一个位置。你可以简单地使用Magik来核算,例如像trishkin,前3位数字--符号代码,后2位--脚本/顾问代码。而第一步是手动编码,或者根据窗口符号和脚本代码,通过添加行来生成一个magik,然后将行转换成数字。

经典的方法是搜索所有订单或头寸。

但这对开始的时候来说太过分了。

这就是为什么一开始是可以的。

谢谢你,瓦列里!搜索所有的职位是我一定会做的自我研究的下一个步骤之一。

问候,弗拉基米尔。

 
Valeriy Yastremskiy:

由于某些原因,所有的订单或头寸都被认为是典型的超限。

唉,这是MQL社区的一个传统,所有的EA都是在考虑到电脑突然失去连接和/或停电的情况下开发的。

一方面,这是一个很好的方法,但另一方面,这对EA的代码编写风格造成了很大的限制--EA只与订单主控人一起工作。 例如,如果你需要编写一个martingale,EA将搜索历史上最后一个订单 的主控人,并查看利润/损失,决定是否增加新手数

...总的来说,自从MT诞生以来--每个人都在等待互联网的消失,而战略本身已经不那么重要了))。

 
Igor Makanu:

唉,这是MQL社区的一个传统,所有的EA都是在考虑到突然失去连接和/或PC断电的情况下开发的。

一方面,这是一个很好的方法,但另一方面,它对EA的代码编写风格施加了很大的限制--EA只与订单主控人一起工作。 例如,如果你需要编写一个马汀格尔,EA会在历史上 搜索最后一个订单 的主控人,看盈亏情况,决定是否增加新的手数

...一般来说,自从MT创建以来--每个人都在等待互联网的消失,而战略本身不再那么重要了))。

你好,伊戈尔,感谢你分享这个非常有用的信息。

真诚的,弗拉基米尔。

 
Igor Makanu:

唉,这是MQL社区的一个传统,所有的EA都是在考虑到突然失去连接和/或PC断电的情况下开发的。

一方面,这是一个很好的方法,但另一方面,它对EA的代码编写风格施加了很大的限制--EA只与订单主控人一起工作。 例如,如果你需要编写一个马汀格尔,EA会在历史上 搜索最后一个订单 的主控人,看盈亏情况,决定是否增加新手数

...总的来说,自从MT创立以来--大家都在等待互联网的消失,而战略本身已经不那么重要了 ))

对火灾、洪水和愚昧的保护应该永远是!)通常我只限于在与DT失去联系的情况下停止。

 

大家今天好,心情好

我正在继续学习MQL5编程语言。我已经开始详细研究for 循环运算符,根据MQL5参考,我引用一下。

环操作符

执行运算符,直到被检查的表达式变成假的。表达式在每次迭代前都被检查


我去看for 循环操作符的描述,在那里我读到了这一点。

Оператор for состоит из трех выражений и выполняемого оператора:

for(выражение1; выражение2; выражение3) 
   оператор;

Выражение1 описывает инициализацию цикла. Выражение2 - проверка условия завершения цикла.
Если оно истинно, то выполняется оператор тела цикла for. Все повторяется, пока выражение2 не станет ложным. 
Если оно ложно, цикл заканчивается и управление передается следующему оператору. 
ВыражениеЗ вычисляется после каждой итерации.

操作员执行操作员?好的。我采取并运行for 循环操作,尝试所有的开仓,然后在if 语句中键入我需要的条件。

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelect(Symbol())==false && PositionGetInteger(POSITION_MAGIC)!=Magic_Number
         && time_current.hour==time_open.hour && time_current.min>=time_open.min && time_current.min<time_open1.min)
         OpenBUY();
     }

然后什么也没发生。买入头寸没有被打开。我如何理解这一点呢?我一定是做错了什么,或者我根本就没有正确理解for 语句的术语?

亲爱的专家!请给我建议,但不要用文字,不要用修正过的代码, 否则我就永远学不会MQL5编程语言了。

真诚的,弗拉基米尔。
 
MrBrooklin:

大家今天好,心情好

我正在继续学习MQL5编程语言。我已经开始详细研究for 循环运算符,根据MQL5参考,我引用一下。

环操作符

执行运算符,直到被检查的表达式变成假的。表达式在每次迭代前都被检查


我去看for 循环操作符的描述,在那里我读到了这一点。

操作员执行一个操作者?好的。我采取并运行for 循环操作,尝试所有的开仓,然后在if 语句中键入我需要的条件。

而什么也没有发生。买入头寸没有被打开。我如何理解这一点呢?我一定是做错了什么,或者我根本就没有正确理解for 循环操作符的目的?

亲爱的专家们!我想请你给一些反馈意见,但不要用语言表达,否则我永远也学不会MQL5编程语言。

真诚的,弗拉基米尔。

循环运算符和循环体中的运算符。它不完全是一种经典的俄罗斯语言。

当然,一切都很好,但循环体中的迭代器i在哪里?而为了获得定位字符和它的神奇符号,必须先选择它。职位描述是一个结构(在MQL5中,所有的东西都是一个结构,订单、时间和交易),它是通过选择来填写的,由迭代器来完成,它不是一个职位票,而是一个职位号码。 而且我们应该记住,职位描述结构总是最后的选择。