我的LockInProfit()和CloseAll()无法关闭所有内容。

蔡蔡
745
蔡蔡  
void LockInProfit()
{
   double Balance = AccountBalance();
   double Equity = AccountEquity();   
   
   if ((Equity) > (Balance*1.01))
   {          
         CloseAll();                
   }    return; 
}

void CloseAll() 
{
  // for (int i=OrdersTotal()-1;i>=0; i--)
   for (int i = 0; i < 要么 dersTotal(); i++)    // FIFO rule
   { 
      if (要么 derSelect(i, SELECT_BY_POS, MODE_TRADES)) 
      { 
         RefreshRates();            
         if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,clrNONE))
         Print("Error closing (CloseAll) #",IntegerToString(OrderTicket())," Error code ",GetLastError());
      }  
   }
}

我有多种货币的多个未平仓合约。触发LockInProfit()时,它不会关闭所有内容。

是问题所在 LockInProfit()或/和 关闭所有()?

 I suspect that  

1)该功能仅关闭 货币对 EA附属于并非所有其他货币对。

2)在某个时候,它停止关闭 (股权)不再> (Balance*1.01).

如何关闭所有内容? (所有以多种货币开立的头寸)

如何在不将EA附加到不同对的多个图表的情况下关闭所有内容。

仅将EA附加到一张图表时,如何关闭所有内容(包括不同货币对的货币)?

基思·沃特福德
主持人
27681
基思·沃特福德 2016.09.14 03:46:13  

平仓时必须倒计时。

这是因为,如果您在位置0处平仓,位置1处的交易将移至0,但是循环将移至位置1(即先前的位置2),并且会丢失最初位于位置1的交易。等等

如果这与FIFO冲突,则先将票证号保存在一个数组中,然后关闭它们。

要么

使用while循环? (我自己从未尝试过)

while(要么 dersTotal()>0)
   {
    //close the order at position 0
   }
费尔南多·卡雷罗
5131
费尔南多·卡雷罗 2016.09.14 03:58:44  
约翰尼·贝古德: 我有多种货币的多个未平仓合约。触发LockInProfit()时,它不会关闭所有内容。是问题所在 LockInProfit()或/和 关闭所有()?

胶莱 说,总是倒数。但是,不要盲目关闭所有订单!正确管理幻数标识!

将来,您永远不会知道您是否会同时使用其他EA和/或手动交易,并且您不希望您的EA弄乱这些交易。

因此,在EA中定义一个幻数ID,然后 只关闭 用那个幻数(而不是其余的)进行交易。

蔡蔡
745
蔡蔡 2016.09.14 08:36:57  
胶莱:

平仓时必须倒计时。

这是因为,如果您在位置0处平仓,位置1处的交易将移至0,但是循环将移至位置1(即先前的位置2),并且会丢失最初位于位置1的交易。等等

如果这与FIFO冲突,则先将票证号保存在一个数组中,然后关闭它们。

要么

使用while循环? (我自己从未尝试过)


   1)如果使用while循环,如何获取OrderSelect索引i?

while(OrdersTotal()>0)
   { 
      if (要么 derSelect(i, SELECT_BY_POS, MODE_TRADES))  


2)如何先将票证号保存在一个数组中然后关闭它们?

蔡蔡
745
蔡蔡 2016.09.14 08:37:49  
FMIC:

胶莱 说,总是倒数。但是,不要盲目关闭所有订单!正确管理幻数标识!

将来,您永远不会知道您是否会同时使用其他EA和/或手动交易,并且您不希望您的EA弄乱这些交易。

因此,在您的EA中定义一个幻数编号ID,并且仅使用该幻数进行平仓交易(而不是其余交易)。

我在所有订单上分配了魔术数字12345。

我如何关闭所有魔术编号为12345的订单? 

基思·沃特福德
主持人
27681
基思·沃特福德 2016.09.14 09:32:43  
约翰尼·贝古德:

   1)如果使用while循环,如何获取OrderSelect索引i?

 

从我以前的帖子

while(要么 dersTotal()>0)
   {
    //close the order at position 0
   }

约翰尼·贝古德:


2)如何先将票证号保存在一个数组中然后关闭它们?


循环浏览未结订单并将票证编号保存在数组中

遍历数组并使用保存的凭单号关闭交易

费尔南多·卡雷罗
5131
费尔南多·卡雷罗 2016.09.14 09:54:51  
约翰尼·贝古德: 我在所有订单上分配了魔术数字12345。我如何关闭所有魔术编号为12345的订单? 
之后 要么 derSelect() 成功,然后检查 要么 derMagicNumber() 并且只有当它与您自己的幻数相同时,您才可以继续将其关闭。
威廉·罗德
24124
威廉·罗德 2016.09.14 13:42:24  
如果存在多个订单(一个EA多个图表,多个EA, manual trading) you 必须 在位置循环中关闭/删除/修改时倒数。 养成总是倒数的习惯。 循环和关闭或删除订单-MQL4论坛