bool fnOrderDuplicate(){
iDuplicateOrders =0;//setting orderdup to zero
iOrders =OrdersTotal()-1;//iOrders returns market orders count - 1. So if zero orders, we get -1for(int i= iOrders; i>=0; i--)// the loop to cycle through total orders{OrderSelect( i, SELECT_BY_POS, MODE_TRADES);//select order for functionif((OrderType()!=OP_BUY)&&(OrderType()!=OP_SELL))//if order is NOT op-buy and is NOT op-sell, sCurrentOrderType = other (ie no order)
sCurrentOrderType ="OTHER";if(OrderType()==OP_BUY)//if order=buy, sCurrent OrderType = buy
sCurrentOrderType ="BUY";//***7Jul09 ';' was missing at end of lineif(OrderType()==OP_SELL)//***7Jul09: the end ')' was missing.
sCurrentOrderType ="SELL";//if orderfound = sell, sCurrentOrder= sellif((OrderSymbol()==Symbol())&&( sCurrentOrderType == sSignal))//if ordersymbolfortheorder= symbolforchart && ScurrentOrder = sSignal(fn_entryrules)
iDuplicateOrders++;//iDuplicateOrders is added 1}if( iDuplicateOrders ==0)//if iduporders = 0 then fnOrderDuplicate = false, otherwise it's true.return(false);return(true);}
谢谢CB,我应该注意到这一点,所以错误是在最后(130)。
那么它是否有效?
CB
嘿,CB,它正在运行交易,但我还没有详细检查交易,看看逻辑是否正确跟进(乍一看似乎是这样)。因此,这是我要说的一个巨大的 "谢谢你!!!!":-)
在策略运行盈利之前,还有一段路要走,因为代码只是一种自动交易的方式,我需要在自己这边做一些工作来完善策略本身。看起来所有这些努力都得到了回报,但我仍然对编码感到超级困惑。我将开始自己制作一些小代码,在图表上显示评论,并对这些代码进行修改,以帮助我学习你使用的函数 和其他东西。我非常感谢你对这个CB的帮助,以及你的耐心,因为我一直在问同样的事情,并且一遍又一遍地犯同样的错误。谢谢您的帮助。
这将是很容易的。
为自己设定一个参数,即未结订单的最大数量。如果你需要经常改变它,就把它外置。
然后只通过改变fnOrderDuplicate()函数 来实现 - 你不应该改变start()函数。这将有助于保持应用程序的现有架构。
CB
嘿,CB,我现在花了2个小时试图做你在上面的帖子中要求的事情,看了其他的代码和文档,但没有进展(我只是不知道该怎么做)。伙计,我一直被这样卡住,太烦人了,即使是最简单的事情!一定有一种方法比我现在的学习方式更容易,因为我觉得我在学习上没有任何进展,你们好心为我写所有的代码。
嘿,CB,任何帮助在上面的点,如何修复的代码,做一个方向的多个交易?
只需将:如果 (iDuplicateOrders == 0)改为:如果 (iDuplicateOrders<= iMaxDuplicateOrders)。
CB
嘿,CB,谢谢你的建议。有了这个选项,我就不能调节一个方向上允许有多少未平仓的订单(比如说我让extern iMaxDuplicateOrders = 4;),EA会运行4个短线,而不是平均分配参数(比如:最大2个短线,最大2个长线)。我是否应该尝试制作一个bool fnOrderDuplicate的副本(例如:bool fnOrderDuplicateBuys,和bool fnOrderDuplicateSells),然后在bool fnShouldWeTrade中分别引用每个副本。在我看来,这可能是可行的,你怎么看?
嘿,CB,谢谢你的建议。有了这个选项,我就不能调节一个方向上允许有多少未平仓的订单(比如说我让extern iMaxDuplicateOrders = 4;),EA将运行4个短线,而不是平均分配参数(比如:最大2个短线,最大2个长线)。我是否应该尝试制作一个bool fnOrderDuplicate的副本(例如:bool fnOrderDuplicateBuys,和bool fnOrderDuplicateSells),然后在bool fnShouldWeTrade中分别引用每个副本。在我看来,这可能是可行的,你怎么看?
设置iMaxDuplicateOrders = 4将意味着每个方向上最多有4个订单,因为我们在增加计数器之前检查 方向。
功夫不负有心人。在这个例子中,反过来说也是应该的。抱歉--我已经对你没有自己做出修改感到失望了。所有需要做的就是把限制从一个单子改成一个变量。
从注释中可以看出,你只是在用散文重新创建代码,而没有真正理解其逻辑。
CB