Total=0;
for( pos=1; pos<=OrdersTotal(); pos++)
pos=OrderSelect(pos-1,MODE_TRADES); И что дальше? Переменная pos всегда или 0, или 1, цикл сбивается постоянно на начало, а то и заглючить может и превратиться в бесконечный цикл.
for(pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos,MODE_TRADES)) //Обязательно проверить, выбран ли ордер
{
if(OrderSymbol()==Symbol()) //желательно проверить, тот ли это ордер по символу, ещё можно по магику проверить дополнительно в этой же строке
{
Total++; //если это наш ордер, добавляем счётчику единицу
}
}
}
if(Total<1)
{
торгуем
}
大家好!
你能告诉我为什么订单不能打开吗?
初始化就是初始化,贸易就是初始化。EAs有OnTick,没有必要把所有东西都塞进init...
而对于inite来说,有开发人员发明的特殊退出代码,你为什么不使用它们?
Initu是指initu,trade是指togo。EAs有OnTick,没有必要把所有东西都塞进init...
而对于inite,有开发人员发明的特殊退出代码,我们为什么不使用它们呢?
可能是因为我们不知道内部的终止代码。教程中的例子与编辑器中的形式不同。例如,那里缺少int start()函数。当我把教程中的简单专家顾问的例子 粘贴到inite中时,不知怎么就成功了。但无论我写什么,都没有效果。所以我决定,经过两周的实验,向专家咨询。谢谢你的提示!
我把它全部放入OnTick,但没有任何变化。
我们不使用它,一定是因为我们不知道启动完成代码。教科书中的例子与编辑器中的形式不同。例如,那里缺少int start()函数。当我把教程中的简单专家顾问的例子粘贴到inite中时,不知怎么就成功了。但无论我写什么,都没有效果。所以我决定,经过两周的实验,向专家咨询。谢谢你的提示!
把它全部扔进OnTick,但没有任何变化。
忘了这个教程吧,它是用旧的语法写的,从那以后有很多变化。终端交付的帮助是最相关的,而kodobase,如果你看的话,也是MQL新版本的例子来源。
而关于不在inite中写所有的代码,以前是这样的,在论坛中搜索一下,这个论坛的各种语言都有数百个帖子,只是每次都有新的作者不是读者;)
忘了这个教程吧,它是根据旧的语法写的,从那时起,很多东西都变了。终端交付的帮助是最相关的,而kodobase,如果你看的话,也是MQL新版本的例子来源。
关于不在inite中写所有代码的问题,以前是这样的,在论坛中搜索一下,这个论坛有数百个各种语言的帖子,只是每次都有一个新的作者,他不是一个读者;)
谢谢!
旧的教科书,一旦失去意义,就应该立即被扼杀))
谢谢你!
旧的教程,一旦失去意义,就应该立即被抽走))
不要把所有的东西都扔到OnTick里,只有与交易有关的部分,只在启动时运行的那部分代码应该留在OnInit里(当然,函数的名字应该用拉丁文写,只是懒得每次都在论坛上改变布局)。
关于代码本身,有关于循环的问题,这很奇怪,在我看来,没有足够的大括号。
是的,而且对于计算损益水平,也没有正确规定。服务器应该发送价格,最好是标准化的,而不是以点为单位的数值。
还有,不要把所有的东西都放在OnTick里,只放与交易有关的东西,部分只在启动时触发的代码应该留在OnInit里(当然,函数名应该用拉丁文写,只是懒得每次都在论坛上改布局)。
关于代码本身,有关于循环的问题,这很奇怪,我认为大括号不够多......。
是的,也是为了计算损益水平,它们的规定是不正确的。服务器应该发送价格,最好是标准化的,而不是以点为单位的数值。
我知道了,谢谢。我将检查括号 - 编辑器没有产生错误。
为什么书中的例子会成功?我记下了所有的函数,只插入了示例代码,从int start开始。没有任何错误,交易就这样开始了。
明白了,谢谢。我将检查括号 - 编辑器没有给出任何错误。
为什么书中的例子会成功......?我删除了所有的函数,只插入了示例代码,从int开始。没有任何错误,交易就这样开始了。
好吧,我没有必要去交易那些有用的东西 ))))
如果你的问题是关于启动和ontik在新方式上的区别,你应该已经把所有东西从启动转移到ontik。或者说在你的例子中,从OnInit到OnTick。
编译器会记录语法错误,除了人之外没有人检查逻辑。在特殊情况下,甚至代码的作者也会感到困惑 :)
好吧,有效的东西不需要被交易))))。
而且,对于EA来说,start是旧的方式,OnTick是新的方式,所以你应该把所有东西从start移到OnTick。或者说在你的案例中,从OnInit到OnTick。
编译器会记录语法错误,除了人之外没有人检查逻辑。在特殊情况下,甚至代码的作者也会感到困惑 :)
//+------------------------------------------------------------------+
"好吧,有效的东西不需要兜售))"好吧,你想自己潦草地写点什么)。
病人在被操纵后并没有清醒过来。
"好吧,你不应该把有用的东西换掉。"))。好吧,你想自己潦草地写点什么)。
操纵之后,病人并没有清醒过来。
好吧,逻辑和数学都很蹩脚,很明显不会这样。
例如,为什么我们在这个EA中需要一个循环?我的意思是,很明显,我们需要计算给定的符号和魔术师的订单有多少已经下了,对吗?但我们在这里看到的是,循环没有计算任何东西,也不能计算,因为它没有一个 "计数器 "被拧在))))
OrderSelect() 返回一个布尔值,即真或假,这对pos变量来说是不合适的。而且,循环最好从最古老的顺序开始,即按相反的顺序,以避免跳过顺序。
总数变量可以作为一个计数器使用。
我删除了不必要的东西,在OrderSend后增加了错误输出,对于非ECN账户的测试者,订单已经打开。
哦,对了,还有销售的SL水平的计算是错误的,我们应该更加注意。
好吧,逻辑和数学都很蹩脚,所以很明显,它不会像那样工作。
例如,为什么这个EA中会有一个周期?我的意思是,很明显,我们需要计算我们有多少个给定的符号和魔法数字的订单,对吗?但我们在这里看到的是,循环没有计算任何东西,也不能计算,因为它没有一个 "计数器 "被拧在))))
OrderSelect()返回一个布尔值,即真或假,这对pos变量来说是不合适的。而且,循环最好从最古老的顺序开始,即按相反的顺序,以避免跳过顺序。
总数变量可以作为一个计数器使用。
我删除了不必要的东西,在OrderSend之后增加了错误输出,对于非ECN账户的测试者,订单已经打开。
哦,对了,还有销售的SL水平的计算是错误的,你需要更加小心。
哇!!!谢谢!!!。这需要进行一些思考。
也许某处有关于新规则的 "自学"?4位数的页码让人有点紧张...