//-------------Reverse trade for buyfor(xx =OrdersHistoryTotal()-1;xx >=0;xx --)
{
if(OrderSelect(xx, SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
{
//for buy order reverseif(OrderType()==OP_BUY && OrderProfit()<0) // if last buy closed with loss
{
//--- go trading only for first tiks of new barif(Volume[0]>1) return(0);
SellStopLoss = Bid + (StopLoss * CalcPoint1);
SellTakeProfit = Bid - (TakeProfit * CalcPoint1);
SellTicket = OrderSend(Symbol(),OP_SELL,LotSize,Bid,UseSlippage,SellStopLoss,SellTakeProfit,"Sell Reverse Order",MagicNumber,0,Red);
}
break;
}
}
}
我们不知道你想做什么
如果你一次只想做一笔交易,那么在发送新的订单之前,请检查是否有未结订单。
如果你只想每个柱子有一笔交易,那么每个柱子只测试一次
如果你想要一个组合条件,就测试这个组合。
我在这里解释一下。
我在每个小时内最多有6个支持和6个阻力。它可以是2个支持和2个阻力或任何东西,但每小时最多有6个支持和6个阻力。
我想在每小时开始时在这些S/R水平上开限价单。
我创建了一个买入功能和一个卖出功能......这样我就不需要为总共12个S/R水平写下相同的买入/卖出代码。
现在,当我使用下面这段代码时。
它创建了多个相同的订单。
我也使用了WHRoeder代码。在一个单独的函数中。因为我不能在一个函数中声明函数。
你的问题不在于你所发布的函数,你的问题在于调用函数的代码。
很明显,没有检查是否已经下了订单。
你的问题不在于你所发布的函数,你的问题在于调用函数的代码。
很明显,没有检查是否已经下了订单
调用函数 的代码(快照)
如何检查订单是否已经下过了?用buyticket > 0的条件?
调用函数的代码(快照)
如何检查订单是否已经下过了?用buyticket > 0的条件?
很难给出建议,因为我不知道你在未触发的订单结束后在做什么,也不知道你是如何管理触发的订单的。
你可以创建一个全局声明的数组(或2个),并存储未结订单的票号。在打开一个新的订单之前,检查与水平相对应的数组元素 的值是否>0。
当然,你也需要检查票号,如果你删除了未触发的订单,将数组元素设置为0。你也可能需要检查订单是否已经关闭,根据你的逻辑,重新设置为0
我很难给出建议,因为我不知道你在结束时对未触发的订单做了什么,也不知道你是如何管理触发的订单的。
你可以创建一个全局声明的数组(或2个),并存储未结订单的票号。在打开一个新的订单之前,检查与水平相对应的数组元素的值是否>0。
当然,你也需要检查票号,如果你删除了未触发的订单,将数组元素设置为0。你可能还需要检查订单是否已经关闭,根据你的逻辑,重新设置为0
由于我设置了未触发订单的到期水平,它将在0:59或第59分钟到期。对于触发的订单,SL和TP被设置。
以前我设计的Ea在每个小时都有一个买入或卖出订单,代码很简单。但在这里,它似乎非常困难。
好的,我将尝试按照你说的进行编码。如果出现问题,我将在这里发布。另外,如果你能分享任何计算票数的简单代码例子,那就更好了。
谢谢你的建议。
我用下面的代码暂时解决了我的问题,并在小时图上运行它。简单
Bars是不可靠的(刷新/重新连接可以改变图表上的条数)volume是不可靠的(错过ticks)总是使用时间。新蜡烛 - MQL4论坛
谢谢你的代码。我把它加到了Tick功能上。但现在我的EA没有进行任何交易。因为我使用buycall/sell call函数来下挂单。我不能在函数中加入这个功能。
有什么想法吗?
另外,止损单上 的反向交易也不起作用。
在反向代码上有什么亮点吗? 为什么它不能工作?
谢谢你。