关闭半数地段。 - 页 17 1...10111213141516171819 新评论 Dominic Gilbert 2013.08.09 16:36 #161 SDC:你的思考方式完全不符合逻辑。修改这个神奇的数字怎么会比知道OrderOpenTime()更能帮助你?这相当于完全相同的事情。 因为我需要对一个订单进行多次部分平仓...。如果我做一个OrderClose()并与OrderOpenTime()进行比较,然后用同一个订单做另一个OrderClose(),但再次用OrderOpenTime()进行比较,它不会工作,因为在历史上会有一个关闭的订单,它不会关闭第二个OrderClose()函数... 现在,如果我可以使用Magicnumber 1234的OrderClose(),然后在OrderClose()完成后,我可以将订单的魔法号码修改为12345,因此,调用MagicNumber 1234的第一个函数将不再适用于剩余的订单,因为剩余的订单现在已经被分配了一个魔法号码12345。现在有了这个MagicNumber 12345,我就可以在另一个OrderClose()函数中使用它(假设它是适用的),并重复这个过程,直到我所拥有的,按我想要的方式工作和运行。在那之前,OrderOpenTime()只能工作一次...... Dominic Gilbert 2013.08.09 16:46 #162 我只是想,如果我错了请纠正我,但如果我使用OrderOpenTime()和OrderCloseTime()呢? 如果我将当前的OrderOpenTime()与同一符号()上的历史平仓进行比较,发现不匹配,那么CloseOrder()将运行。现在,如果第二个CloseOrder()函数 被调用(价格比第一个CloserOrder()高,我想在同一个订单上再平掉一些手),我可以比较OrderOpenTime()和OrderCloseTime()。如果OrderOpenTime(OpenPosition) == OrderOpenTime(History) && OrderCloseTime(history) > OrderOpenTime(OpenPosition)THEN OrderClose() 第二个函数...? Ian Venner 2013.08.09 18:07 #163 你之前从来没有说过关于多次部分平仓的事情,你说你只是想半平仓,但无论如何你都想得太多了,完全忽略了明显的问题。 为什么OrderOpenTime()只工作一次? static datetime partclosedonce; static datetime partclosedtwice; 如果订单符合第1级关闭标准,并且开放时间与partclosedonce不匹配,则部分关闭它,将时间戳添加到partclosedonce。 如果订单符合部分关闭标准1,并且其操作时间与partclosedonce相匹配,那么它已经被部分关闭了一次,所以不要再部分关闭它。 如果订单符合第2级关闭标准,并且不符合partclosedtwice,则部分关闭它,并将时间戳添加到变量partclosedtwice。 Ian Venner 2013.08.09 18:52 #164 此外,你应该避免对OrdersHistory进行任何操作。如果你运行一个长期的回测,你可能在历史上有成百上千的订单,你的EA会在每个tick 上将你的开仓订单与所有这些订单进行比较。这样做是非常慢的,你的回测会变得越来越慢,因为它们运行的时间越长,历史记录就越大。 Dominic Gilbert 2013.08.10 00:54 #165 SDC: 此外,你应该避免对OrdersHistory进行任何操作。如果你运行一个长时间的回测,你可能在历史上有成百上千的订单,你的EA会在每个tick上将你的开仓订单与所有这些订单进行比较。这样做是非常慢的,你的回测会变得越来越慢,因为它们运行的时间越长,历史记录就越大。 那我还能怎么做呢...? Ian Venner 2013.08.10 01:16 #166 我刚刚向你展示了如何做到这一点!! 如果有比这更直接的方法,我想知道它是什么。如果你想做,就用历史来做,我只是给你讲讲我对这样做的看法而已。 Dominic Gilbert 2013.08.10 13:25 #167 SDC: 我刚刚向你展示了如何做到这一点!! 如果有比这更直接的方法,我想知道它是什么。如果你想做,就用历史来做,我只是给你讲讲我对这样做的看法而已。 哦,我明白了,静态datetime保存了OrderClose()的日期和时间,所以我可以将其与当前订单的初始开仓时间 进行比较,而不是看与历史有关的东西? Ian Venner 2013.08.10 14:47 #168 是 Dominic Gilbert 2013.08.11 23:15 #169 好样的--谢谢你的帮助! 静态数据时间对我来说是相当陌生的,所以我明天会研究这个问题,看看我的进展如何!希望到时我能把我的代码中这个恼人的部分整理好 :) Dominic Gilbert 2013.08.12 11:31 #170 SDC:你之前从来没有说过关于多次部分平仓的事情,你说你只是想半平仓,但无论如何你都想得太多了,完全忽略了明显的问题。为什么OrderOpenTime()只工作一次?static datetime partclosedonce;static datetime partclosedtwice;如果订单符合第1级关闭标准,并且开放时间与partclosedonce不匹配,则部分关闭它,将时间戳添加到partclosedonce。 如果订单符合部分关闭标准1,并且其操作时间与partclosedonce相匹配,那么它已经被部分关闭了一次,所以不要再部分关闭它。如果订单符合第2级关闭标准,并且不符合partclosedtwice,则部分关闭它,并将时间戳添加到变量partclosedtwice。 砰!砰!砰这是很有效的--比我想象的要简单得多!刚开始看的时候,5分钟后,我就成功了。刚开始看的时候,5分钟后,我就把它弄好了 :)非常感谢您的帮助!我现在将结合我的多个OrderClose()函数,看看我是否能让它运行。一旦我完成了这项工作,我就会再开一个主题,以回馈我从这里的其他人那里得到的帮助!我认为这绝对是别人可以利用的一次简洁的帖子。我还没有走出困境,但那个静态的数据时间在这个orderclose()中可以完美地工作。我也不明白为什么其他的不能用 :) 1...10111213141516171819 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你的思考方式完全不符合逻辑。修改这个神奇的数字怎么会比知道OrderOpenTime()更能帮助你?这相当于完全相同的事情。
因为我需要对一个订单进行多次部分平仓...。如果我做一个OrderClose()并与OrderOpenTime()进行比较,然后用同一个订单做另一个OrderClose(),但再次用OrderOpenTime()进行比较,它不会工作,因为在历史上会有一个关闭的订单,它不会关闭第二个OrderClose()函数... 现在,如果我可以使用Magicnumber 1234的OrderClose(),然后在OrderClose()完成后,我可以将订单的魔法号码修改为12345,因此,调用MagicNumber 1234的第一个函数将不再适用于剩余的订单,因为剩余的订单现在已经被分配了一个魔法号码12345。现在有了这个MagicNumber 12345,我就可以在另一个OrderClose()函数中使用它(假设它是适用的),并重复这个过程,直到我所拥有的,按我想要的方式工作和运行。在那之前,OrderOpenTime()只能工作一次......
如果我将当前的OrderOpenTime()与同一符号()上的历史平仓进行比较,发现不匹配,那么CloseOrder()将运行。现在,如果第二个CloseOrder()函数 被调用(价格比第一个CloserOrder()高,我想在同一个订单上再平掉一些手),我可以比较OrderOpenTime()和OrderCloseTime()。如果OrderOpenTime(OpenPosition) == OrderOpenTime(History) && OrderCloseTime(history) > OrderOpenTime(OpenPosition)THEN OrderClose() 第二个函数...?
你之前从来没有说过关于多次部分平仓的事情,你说你只是想半平仓,但无论如何你都想得太多了,完全忽略了明显的问题。
为什么OrderOpenTime()只工作一次?
static datetime partclosedonce;
static datetime partclosedtwice;
如果订单符合第1级关闭标准,并且开放时间与partclosedonce不匹配,则部分关闭它,将时间戳添加到partclosedonce。
如果订单符合部分关闭标准1,并且其操作时间与partclosedonce相匹配,那么它已经被部分关闭了一次,所以不要再部分关闭它。
如果订单符合第2级关闭标准,并且不符合partclosedtwice,则部分关闭它,并将时间戳添加到变量partclosedtwice。
此外,你应该避免对OrdersHistory进行任何操作。如果你运行一个长期的回测,你可能在历史上有成百上千的订单,你的EA会在每个tick 上将你的开仓订单与所有这些订单进行比较。这样做是非常慢的,你的回测会变得越来越慢,因为它们运行的时间越长,历史记录就越大。
此外,你应该避免对OrdersHistory进行任何操作。如果你运行一个长时间的回测,你可能在历史上有成百上千的订单,你的EA会在每个tick上将你的开仓订单与所有这些订单进行比较。这样做是非常慢的,你的回测会变得越来越慢,因为它们运行的时间越长,历史记录就越大。
那我还能怎么做呢...?
我刚刚向你展示了如何做到这一点!! 如果有比这更直接的方法,我想知道它是什么。如果你想做,就用历史来做,我只是给你讲讲我对这样做的看法而已。
我刚刚向你展示了如何做到这一点!! 如果有比这更直接的方法,我想知道它是什么。如果你想做,就用历史来做,我只是给你讲讲我对这样做的看法而已。
哦,我明白了,静态datetime保存了OrderClose()的日期和时间,所以我可以将其与当前订单的初始开仓时间 进行比较,而不是看与历史有关的东西?
是
静态数据时间对我来说是相当陌生的,所以我明天会研究这个问题,看看我的进展如何!希望到时我能把我的代码中这个恼人的部分整理好 :)
你之前从来没有说过关于多次部分平仓的事情,你说你只是想半平仓,但无论如何你都想得太多了,完全忽略了明显的问题。
为什么OrderOpenTime()只工作一次?
static datetime partclosedonce;
static datetime partclosedtwice;
如果订单符合第1级关闭标准,并且开放时间与partclosedonce不匹配,则部分关闭它,将时间戳添加到partclosedonce。
如果订单符合部分关闭标准1,并且其操作时间与partclosedonce相匹配,那么它已经被部分关闭了一次,所以不要再部分关闭它。
如果订单符合第2级关闭标准,并且不符合partclosedtwice,则部分关闭它,并将时间戳添加到变量partclosedtwice。
砰!砰!砰这是很有效的--比我想象的要简单得多!刚开始看的时候,5分钟后,我就成功了。刚开始看的时候,5分钟后,我就把它弄好了 :)非常感谢您的帮助!我现在将结合我的多个OrderClose()函数,看看我是否能让它运行。一旦我完成了这项工作,我就会再开一个主题,以回馈我从这里的其他人那里得到的帮助!我认为这绝对是别人可以利用的一次简洁的帖子。我还没有走出困境,但那个静态的数据时间在这个orderclose()中可以完美地工作。我也不明白为什么其他的不能用 :)