关闭半数地段。 - 页 17

 
SDC:

你的思考方式完全不符合逻辑。修改这个神奇的数字怎么会比知道OrderOpenTime()更能帮助你?这相当于完全相同的事情。


因为我需要对一个订单进行多次部分平仓...。如果我做一个OrderClose()并与OrderOpenTime()进行比较,然后用同一个订单做另一个OrderClose(),但再次用OrderOpenTime()进行比较,它不会工作,因为在历史上会有一个关闭的订单,它不会关闭第二个OrderClose()函数... 现在,如果我可以使用Magicnumber 1234的OrderClose(),然后在OrderClose()完成后,我可以将订单的魔法号码修改为12345,因此,调用MagicNumber 1234的第一个函数将不再适用于剩余的订单,因为剩余的订单现在已经被分配了一个魔法号码12345。现在有了这个MagicNumber 12345,我就可以在另一个OrderClose()函数中使用它(假设它是适用的),并重复这个过程,直到我所拥有的,按我想要的方式工作和运行。在那之前,OrderOpenTime()只能工作一次......
 
我只是想,如果我错了请纠正我,但如果我使用OrderOpenTime()和OrderCloseTime()呢?

如果我将当前的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 上将你的开仓订单与所有这些订单进行比较。这样做是非常慢的,你的回测会变得越来越慢,因为它们运行的时间越长,历史记录就越大。

 
SDC:

此外,你应该避免对OrdersHistory进行任何操作。如果你运行一个长时间的回测,你可能在历史上有成百上千的订单,你的EA会在每个tick上将你的开仓订单与所有这些订单进行比较。这样做是非常慢的,你的回测会变得越来越慢,因为它们运行的时间越长,历史记录就越大。


那我还能怎么做呢...?
 

我刚刚向你展示了如何做到这一点!! 如果有比这更直接的方法,我想知道它是什么。如果你想做,就用历史来做,我只是给你讲讲我对这样做的看法而已。

 
SDC:

我刚刚向你展示了如何做到这一点!! 如果有比这更直接的方法,我想知道它是什么。如果你想做,就用历史来做,我只是给你讲讲我对这样做的看法而已。


哦,我明白了,静态datetime保存了OrderClose()的日期和时间,所以我可以将其与当前订单的初始开仓时间 进行比较,而不是看与历史有关的东西?
 

 
好样的--谢谢你的帮助!

静态数据时间对我来说是相当陌生的,所以我明天会研究这个问题,看看我的进展如何!希望到时我能把我的代码中这个恼人的部分整理好 :)
 
SDC:

你之前从来没有说过关于多次部分平仓的事情,你说你只是想半平仓,但无论如何你都想得太多了,完全忽略了明显的问题。

为什么OrderOpenTime()只工作一次?

static datetime partclosedonce;

static datetime partclosedtwice;

如果订单符合第1级关闭标准,并且开放时间与partclosedonce不匹配,则部分关闭它,将时间戳添加到partclosedonce。

如果订单符合部分关闭标准1,并且其操作时间与partclosedonce相匹配,那么它已经被部分关闭了一次,所以不要再部分关闭它。

如果订单符合第2级关闭标准,并且不符合partclosedtwice,则部分关闭它,并将时间戳添加到变量partclosedtwice。


砰!砰!砰这是很有效的--比我想象的要简单得多!刚开始看的时候,5分钟后,我就成功了。刚开始看的时候,5分钟后,我就把它弄好了 :)非常感谢您的帮助!我现在将结合我的多个OrderClose()函数,看看我是否能让它运行。一旦我完成了这项工作,我就会再开一个主题,以回馈我从这里的其他人那里得到的帮助!我认为这绝对是别人可以利用的一次简洁的帖子。我还没有走出困境,但那个静态的数据时间在这个orderclose()中可以完美地工作。我也不明白为什么其他的不能用 :)