只在盈利目标时关闭盈利的交易 - 页 4

 
af1:

好吧,Raptor,我试着做这个循环,但在做这个之前,如果我只是改变一下呢?

从这个。
到这个。


这样做能行吗?

不,你必须在关闭/删除订单时进行倒计时。
 
RaptorUK:
不,你必须在关闭/删除订单时进行倒计时。


嗨,Raptor!

我一直在检查代码,说实话,我没有看到你帖子中建议的代码行有什么不同。

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)

和我正在测试的EA的代码。

for(i=OrdersTotal()-1;i>=0;i--)

我看到的唯一区别是,你添加了MODE_TRADES,而你没有添加睡眠。这有关系吗?

你能给我一些指导,告诉我应该在代码中改变什么吗?

 
af1:


嗨,Raptor!

我一直在检查代码,说实话,我没有看到你帖子中建议的代码行有什么不同。

和我正在测试的EA的代码。

我看到的唯一区别是,你添加了MODE_TRADES,而你没有添加睡眠。这有关系吗?

你能给我一些指导,告诉我应该在代码中改变什么吗?

对不起,我看到这个....

for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }

. . . 你的帖子,并认为这是你的OrderClose()代码 .. .

 
af1:


我没有添加2个外部bool,我只是把这个改为关闭 "只买入订单"

并将此改为关闭 "只卖出订单"

所以现在我有两个EA。一个用于收盘买入,一个用于收盘卖出。这对我来说很好。


我在两个账户上进行了测试,模拟账户和真实账户。在模拟账户上运行良好,但在真实账户上,一旦达到盈利目标,它将开始平仓,但当剩余的订单降到盈利目标以下时,它将停止平仓。如果在平仓的时候价格在变化,就会发生这种情况。因此,它倾向于留下盈利的订单,而不是将它们全部关闭(盈利的订单)。

我读了RaptorUK的这个帖子https://www.mql5.com/en/forum/139654。是这样的,但我真的不知道什么才是解决这个问题的最好办法。



才注意到这一点--不知道是否会有什么不同,但这是不对的。

for(int i=0;i<OrdersTotal();i++)

      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }
 
af1:


我没有添加2个外部bool,我只是把它改为关闭 "只买入订单"。

并将此改为关闭 "只卖出订单"

所以现在我有两个EA。一个用于收盘买入,一个用于收盘卖出。这对我来说很好。


我在两个账户上进行了测试,模拟账户和真实账户。在模拟账户上运行良好,但在真实账户上,一旦达到盈利目标,它将开始平仓,但当剩余的订单降到盈利目标以下时,它将停止平仓。如果在平仓的时候价格在变化,就会发生这种情况。因此,它倾向于留下盈利的订单,而不是将它们全部关闭(盈利的订单)。

我读了RaptorUK的这个帖子https://www.mql5.com/en/forum/139654。是这样的,但我真的不知道什么才是解决这个问题的最好办法。



这表明在关闭交易时有错误,在日志中是怎么说的?

也许你的滑点只有5点,太小了?

 
RaptorUK:

对不起,我看到这个 . . .

......和你的帖子,并认为这是你的OrderClose()代码。. .

没有问题。

GumRai:


我刚刚注意到这个--不知道是否会有很大的区别,但这是不对的。

for(int i=0;i<OrdersTotal();i++)

在演示中,我没有看到任何区别,但在真实账户 中,当它 "奇怪地 "关闭卖出订单时,问题出现了,所以也许这可以解决这个问题。

让我再测试一下这个变化,我再告诉你结果。

GumRai:


这表明有错误的关闭交易,在日志中是怎么说的?

也许你的滑点只有5点,太小了?

记录中没有错误。

也许更大的滑移量会有帮助。我将进行测试。

 

朋友们好

请问哪里有MT5的EA,可以在达到利润时关闭所有的交易。

 
BobyGill:

朋友们好

哪里有MT5的EA,可以在达到盈利时关闭所有交易。

你为什么在MT4板块提出一个6年前的话题来询问MT5?

 
伙计们...
只是想知道...
是否有可能使用相同的逻辑,但不同的是,只有当总交易量达到时,例如200笔交易 ,才会触发平仓利润。