自行车运营商 "为 "问题 - 页 4 1234567891011...16 新评论 Nathan 2012.12.31 13:24 #31 西蒙。好吧,让我试着把止损位也加入到EA中,只是为了更好地衡量。啊哈!USDJPY的冻结水平 是0,止损水平是30。我认为30代表3,因为经纪人是5位数。我试着使用MODE_SPREAD,得到了20。很明显,USDJPY的点差不是20,而是;)2.0.也可以说,2点相当于20点。谢谢你。 Simon Gniadkowski 2012.12.31 13:29 #32 给你的一条线索.. . . Nathan 2012.12.31 13:37 #33 西蒙。这似乎又是一个选择订单的问题。OrderClose()函数正试图关闭一个订单(不是USDJPY订单)。它正试图关闭欧元兑美元图表 上的订单。OrderPrint()函数在执行前已经被选择了,显然与它的目的相似。围着无效价格的红色一定是表示错误的。环绕USDJPY的绿色一定表明是正确的。因此,如果所有这些都是真的,我必须关注红色圆圈,并在执行OrderClose()函数前选择订单。谢谢你。 Simon Gniadkowski 2012.12.31 13:45 #34 WhooDoo22:什么是买入和卖出?卖出价是当前符号的最新已知卖方价格(卖出价)。买入价是当前符号的最新已知的买方价格(报价,买入价)。 你已经知道收盘失败的原因了 . . . . 只要仔细想一想。看看你的代码,你用什么价格来关闭订单? Nathan 2012.12.31 13:57 #35 西蒙。卖出/买入是当前符号的最新已知卖家/买家价格。EA希望关闭订单的价格是欧元兑美元符号的价格。为什么EA依赖于被放置在USDJPY图表上来关闭其订单?OrderSelect()函数 的目的是选择票号,一旦票号被选中,EA就可以选择 显然,EA必须在USDJPY符号图上才能关闭订单。擦掉我刚才说的一切。这就是解决方案。错误在于第三个参数。我正在考虑指定符号,然后在它的参数(OrderClose()函数的第三个参数的位置)中放置卖价/买价变量。这应该可以消除思想上的任何疑惑。谢谢你。 Simon Gniadkowski 2012.12.31 14:12 #36 WhooDoo22:.这就是解决方案。错误在于第三个参数中。我正在考虑指定符号,然后将卖价/买价变量放在它的参数中(OrderClose()函数的第三个参数的位置)。这应该能消除思想上的任何模糊不清。谢谢你。 买入价 和卖出价 是预定义变量,只 与EA当前所在的图表有关。 如果你想要的买入价或卖出价与EA所在的图表不同,你不能使用买入价和卖出价预定义变量。 不过你可以使用MarketInfo();-) Nathan 2012.12.31 14:23 #37 西蒙。错误在于OrderClose()函数 的第三个参数内,因为;)卖价/买价是当前符号的 最新已知卖家/买家价格。如果"当前符号 " 是指EA所处的当前图表,那么这可能会有点混乱。我应该记得,MQL4已经存在了一段时间,有其独特的说明和表示方法。解决办法是用另一种方法代替Ask/Bid预定义变量,如...// solution 1. MarketInfo("USDJPY",MODE_BID); // solution 2. MarketInfo("USDJPY",MODE_ASK);你对此有何看法?我添加了这个EA的一个版本,它有能力打印美元指数订单的信息,并关闭它,无论它放在哪个图表上。我还没有确认它是否修改了USDJPY订单的SL和TP,但会在核实后确认。EA产生了一个最后的错误,应该不难解决。我目前正在解决这个问题。以下是错误读数的快照。谢谢你。 附加的文件: zap_aeusdjpyxordern__uv4.mq4 2 kb Simon Gniadkowski 2012.12.31 15:51 #38 WhooDoo22:西蒙。错误发生在OrderClose()函数的第三个参数中,因为;)Ask/Bid是当前符号的 最新已知卖家/买家价格。如果"当前符号 " 是指EA所处的当前图表,那么这可能有点令人困惑。我应该记住,MQL4已经存在了一段时间,有其独特的说明和表示方法。解决办法是用一个替代方案来代替Ask/Bid预定义变量,例如......你对此怎么看?我添加了这个EA的一个版本,它能够打印美元订单的信息,并关闭它,无论它放在哪个图表上。我还没有确认它是否修改了USDJPY订单的SL和TP,但会在核实后确认。EA产生了一个最后的错误,应该不难解决。我目前正在解决这个问题。这是错误读数的快照。谢谢你。 现在你看到了你的代码的局限性。...你不再有一个USDJPY订单,所以你的while找到了0号位置的订单,它不是USDJPY,然后它找到了1号位置的下一个订单,它不是USDJPY,然后它查看了2号位置,OrderSelect()失败,这结束了while,但其余的代码被执行,这给出了一个失败的OrderModify(),一个失败的OrderPrint(),一个失败的OrderType()和失败的OrderClose() 。...GetLastError()自己在做什么? Nathan 2013.01.01 03:23 #39 西蒙。循环'while'运算符是这样执行的。如果表达式为真,运算符将被执行,直到表达式变为假。如果表达式为假,控制权将交给下一个运算符。在下面的SRC框中,代码的目的是要做以下事情。当变量'i'(包含在OrderSelect()函数 中)不是USDJPY的票面位置号和订单符号不是USDJPY时,变量'i'被增加,直到变量'i'是USDJPY票面位置号和订单符号是USDJPY。 一旦'while'循环变成假的,控制就会被传递到下面,到下一行代码。我提供了'while'的标题和主体,以提供视觉帮助。while(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()!="USDJPY") i++;我相信你明白'while'循环是如何在USDJPY货币对上定位一个票据的,即使目前没有票据在该货币对上,但是;)恐怕我不明白。如果USDJPY图表上没有订单需要定位,'while'循环怎么能定位USDJPY图表上的票呢?我相信你写了一些关于将订单定位在0号位置的内容,你能解释一下吗,或者提供一个链接供学习?谢谢你。 Simon Gniadkowski 2013.01.01 10:47 #40 WhooDoo22:我相信你明白 "while "循环是如何定位美元兑日元货币对的票据的,即使目前没有票据在该货币对上,但是;)恐怕我不明白。如果USDJPY图表上没有订单需要定位,那么'while'循环如何在USDJPY图表上定位一个票据?我相信你写了一些关于将订单定位在0位置的内容。 如果你想自己为自己写代码,那么你需要执行3个人的任务,甚至是4个人的任务。起草需求文件的人,软件工程师和测试工程师。仅仅知道语法倒背如流和能够写代码是不够的.你必须了解你要解决的问题以及你将如何解决它,你还必须知道如何测试代码 以确保它满足需求。在一个基本水平上,这意味着逐行检查你的代码,并确保它做你想做的事情,通常这是每个变量的值范围,从它们的最小值,通过典型值到最大值。 让我们用你的while循环来做这件事。当你声明一个int 变量而不设置它的值时,它的起始值是0,所以当你声明 i 时(为什么不使用一个更具描述性的变量名?),它的值是0,所以第一次循环时i 是0,所以OrderSelect()试图选择0 位置的订单,如果成功的话,OrderSymbol()调用将返回0位置订单的正确符号名称,如果它不是 "USDJPY",那么表达式(OrderSymbol() !="USDJPY")将导致一个真值 ,如果OrderSelect()为真 ,符号检查为真,真 和真=真,下一行代码(这是在while循环中)被执行。 现在i 是1,OrderSelect()选择了位置1的订单,所以它的值是true,符号检查没有找到USDJPY的符号,所以返回true。符号检查没有找到USDJPY的符号,所以返回true,又是true ,true = true ,所以再次执行i++ 现在i 是2,OrderSelect()试图选择位置2的订单,但是失败了。...只有2个订单,在0和1的位置,所以OrderSelect()返回false,OrderSymbol()会做什么?但即使它因为一些奇怪的原因返回真 ,OrderSelect()已经返回假,假 和真= 假 ......while循环已经结束,i 被设置为2 现在通过代码的其余部分,牢记i 的值为2...... 1234567891011...16 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
西蒙。
好吧,让我试着把止损位也加入到EA中,只是为了更好地衡量。
啊哈!USDJPY的冻结水平 是0,止损水平是30。
我认为30代表3,因为经纪人是5位数。我试着使用MODE_SPREAD,得到了20。很明显,USDJPY的点差不是20,而是;)2.0.也可以说,2点相当于20点。
谢谢你。
给你的一条线索.. . .
西蒙。
这似乎又是一个选择订单的问题。
OrderClose()函数正试图关闭一个订单(不是USDJPY订单)。它正试图关闭欧元兑美元图表 上的订单。
OrderPrint()函数在执行前已经被选择了,显然与它的目的相似。
围着无效价格的红色一定是表示错误的。
环绕USDJPY的绿色一定表明是正确的。
因此,如果所有这些都是真的,我必须关注红色圆圈,并在执行OrderClose()函数前选择订单。
谢谢你。
什么是买入和卖出?
卖出价是当前符号的最新已知卖方价格(卖出价)。
买入价是当前符号的最新已知的买方价格(报价,买入价)。
你已经知道收盘失败的原因了 . . . . 只要仔细想一想。
看看你的代码,你用什么价格来关闭订单?
西蒙。
卖出/买入是当前符号的最新已知卖家/买家价格。
EA希望关闭订单的价格是欧元兑美元符号的价格。
为什么EA依赖于被放置在USDJPY图表上来关闭其订单?OrderSelect()函数 的目的是选择票号,一旦票号被选中,EA就可以选择
显然,EA必须在USDJPY符号图上才能关闭订单。
擦掉我刚才说的一切。
这就是解决方案。错误在于第三个参数。我正在考虑指定符号,然后在它的参数(OrderClose()函数的第三个参数的位置)中放置卖价/买价变量。这应该可以消除思想上的任何疑惑。
谢谢你。
这就是解决方案。错误在于第三个参数中。我正在考虑指定符号,然后将卖价/买价变量放在它的参数中(OrderClose()函数的第三个参数的位置)。这应该能消除思想上的任何模糊不清。
谢谢你。
西蒙。
错误在于OrderClose()函数 的第三个参数内,因为;)卖价/买价是当前符号的 最新已知卖家/买家价格。如果"当前符号 " 是指EA所处的当前图表,那么这可能会有点混乱。我应该记得,MQL4已经存在了一段时间,有其独特的说明和表示方法。
解决办法是用另一种方法代替Ask/Bid预定义变量,如...
你对此有何看法?
我添加了这个EA的一个版本,它有能力打印美元指数订单的信息,并关闭它,无论它放在哪个图表上。我还没有确认它是否修改了USDJPY订单的SL和TP,但会在核实后确认。EA产生了一个最后的错误,应该不难解决。我目前正在解决这个问题。以下是错误读数的快照。
谢谢你。
西蒙。
错误发生在OrderClose()函数的第三个参数中,因为;)Ask/Bid是当前符号的 最新已知卖家/买家价格。如果"当前符号 " 是指EA所处的当前图表,那么这可能有点令人困惑。我应该记住,MQL4已经存在了一段时间,有其独特的说明和表示方法。
解决办法是用一个替代方案来代替Ask/Bid预定义变量,例如......
你对此怎么看?
我添加了这个EA的一个版本,它能够打印美元订单的信息,并关闭它,无论它放在哪个图表上。我还没有确认它是否修改了USDJPY订单的SL和TP,但会在核实后确认。EA产生了一个最后的错误,应该不难解决。我目前正在解决这个问题。这是错误读数的快照。
谢谢你。
西蒙。
循环'while'运算符是这样执行的。如果表达式为真,运算符将被执行,直到表达式变为假。如果表达式为假,控制权将交给下一个运算符。
在下面的SRC框中,代码的目的是要做以下事情。
当变量'i'(包含在OrderSelect()函数 中)不是USDJPY的票面位置号和订单符号不是USDJPY时,变量'i'被增加,直到变量'i'是USDJPY票面位置号和订单符号是USDJPY。 一旦'while'循环变成假的,控制就会被传递到下面,到下一行代码。
我提供了'while'的标题和主体,以提供视觉帮助。
我相信你明白'while'循环是如何在USDJPY货币对上定位一个票据的,即使目前没有票据在该货币对上,但是;)恐怕我不明白。
如果USDJPY图表上没有订单需要定位,'while'循环怎么能定位USDJPY图表上的票呢?
我相信你写了一些关于将订单定位在0号位置的内容,你能解释一下吗,或者提供一个链接供学习?
谢谢你。
我相信你明白 "while "循环是如何定位美元兑日元货币对的票据的,即使目前没有票据在该货币对上,但是;)恐怕我不明白。
如果USDJPY图表上没有订单需要定位,那么'while'循环如何在USDJPY图表上定位一个票据?
我相信你写了一些关于将订单定位在0位置的内容。
如果你想自己为自己写代码,那么你需要执行3个人的任务,甚至是4个人的任务。起草需求文件的人,软件工程师和测试工程师。仅仅知道语法倒背如流和能够写代码是不够的.你必须了解你要解决的问题以及你将如何解决它,你还必须知道如何测试代码 以确保它满足需求。
在一个基本水平上,这意味着逐行检查你的代码,并确保它做你想做的事情,通常这是每个变量的值范围,从它们的最小值,通过典型值到最大值。
让我们用你的while循环来做这件事。
当你声明一个int 变量而不设置它的值时,它的起始值是0,所以当你声明 i 时(为什么不使用一个更具描述性的变量名?),它的值是0,所以第一次循环时i 是0,所以OrderSelect()试图选择0 位置的订单,如果成功的话,OrderSymbol()调用将返回0位置订单的正确符号名称,如果它不是 "USDJPY",那么表达式(OrderSymbol() !="USDJPY")将导致一个真值 ,如果OrderSelect()为真 ,符号检查为真,真 和真=真,下一行代码(这是在while循环中)被执行。
现在i 是1,OrderSelect()选择了位置1的订单,所以它的值是true,符号检查没有找到USDJPY的符号,所以返回true。符号检查没有找到USDJPY的符号,所以返回true,又是true ,true = true ,所以再次执行i++
现在i 是2,OrderSelect()试图选择位置2的订单,但是失败了。...只有2个订单,在0和1的位置,所以OrderSelect()返回false,OrderSymbol()会做什么?但即使它因为一些奇怪的原因返回真 ,OrderSelect()已经返回假,假 和真= 假 ......while循环已经结束,i 被设置为2
现在通过代码的其余部分,牢记i 的值为2......