关闭半数地段。 - 页 15

 
我在使用这个?再加上上面"if(OpenOrdersThisPair(Symbol())>0)",这应该能使EA与每对交易分开?我知道你在说什么了。对于我如何使用OrderOpenTime()区分已经减半的交易和没有减半的交易,有什么建议吗?在正确的方向上有什么建议吗?

//+----------------------------------------------------------------------------------------------------------------------------------------+  
//| Check to see if any order open on this currency pair                                                                                   |
//+----------------------------------------------------------------------------------------------------------------------------------------+   

int OpenOrdersThisPair(string pair)
  {
   int total=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==pair) total++;
     }
   return(total);
  }
 
DomGilberto:
我在使用这个?再加上上面 "if(OpenOrdersThisPair(Symbol())>0)",这应该能使EA与每对交易分开?

不,假设你有2个EA在运行,每个都有一个订单,你有50:50的机会,OpenOrdersThisPair()函数 最后选择的OrderSelected()将是错误的...函数将返回一个,但你很可能选择了错误的订单。
 
请原谅我,但我不明白这怎么会是真的?我确定OrderSymbol()==pair?因此,连接到欧元兑美元的相关EA,会在欧元兑美元的订单选择中发现它?
 
这样能不能把它分类?在日志中它是这样告诉我的?如果是这个符号......不知道这是否是弱智的...... "OrderSymbol()==OrderSymbol() "怎么样?

   if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
     {
     if(OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)==True)
         {   
         Print("The Symbol is: ", OrderSymbol());  
         }
         
         if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss() && OrderSymbol()==OrderSymbol())
               {
               CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }

         if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice() && OrderSymbol()==OrderSymbol()) // lol? If this symbol is, this symbol...
               {
               CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }
            
2013.08.08 18:51:21	2010.02.08 01:00  Trend Fishing 3 Exits GBPJPY,H1: The Symbol is: GBPJPY

 

啊!如果我比较一下OrderCloseTime()和OrderOpenTime()呢?

当然,这将是实现我所希望的最好的方式?这样我就可以添加任意多的OrderClose函数?毕竟,我可以简单地选择历史上与当前 "OP_BUY "的OrderOpenTime()相同的交易,但是如果OrderCloseTime()>OrderOpenTime(),那么这将阻止OrderClose(),连续关闭一半!?

谁能告诉我,我在这里得到了一些工作:( 哈哈。

 
DomGilberto:
请原谅我,但我不明白这怎么会是真的?我正在确保OrderSymbol()==对?所以连接到欧元兑美元的相关EA,会发现它是欧元兑美元的订单选择?

你先是OrderSelect(),然后你检查 ......

if(OrderSymbol()==pair) total++;

......这对该函数 来说是很好的,如果符号不匹配,你就不增加计数 ......但这仍然意味着你最后选择的订单不是你正在处理的符号。

你需要一个额外的循环,找到一个有效的订单,然后退出循环 ...... 然后你就有了正确的订单选择。

 
我很困惑,本周我同时 在16个不同的货币对上测试了我的EA,它从未选择过错误的货币。我是不是错过了什么?
 
DomGilberto:
我很困惑,本周我同时 在16个不同的货币对上测试了我的EA,它从未选择过错误的货币。我是不是错过了什么?
就我所见,它似乎有可能选择错误的订单,我将修复它以确定,而不是冒险。检查 你的代码,如果它不可能发生,那么你就不需要修正它。
 

DomGilberto:
I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...

I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...

EA关闭了订单,EA需要知道哪个订单不能再次关闭,所以在关闭前要获得OrderOpenTime()。在该货币对 的订单中,EA的代码不会再以相同的OrderOpenTime()进行部分平仓。

 
SDC:

EA关闭了订单,EA需要知道哪个订单不能再次关闭,所以在关闭前要获得OrderOpenTime()。在该货币对的订单中,EA的代码不会再以相同的OrderOpenTime()进行部分平仓。


是的,我现在开始明白了--我想我需要与历史上在同一OrderSymbol()上关闭的交易进行比较?

但我的问题是,我试图将同一个 "OP_BUY "或 "OP_SELL "以不同的价格部分平仓多达4次......我想我应该问的问题是,我能否得到一种方法,即我有一个规则,所有的部分平仓(任何手数和价格的交易)将只在其预定义的 "OrderClose() "参数设置下部分平仓一次......

我现在正在考虑的这种比较OrderOpenTime()的方式基本上只起一次作用,并将限制任何其他类型的OrderClose() 函数的发生...。我想找到一种方法,可以让一条规则适用于4个OrderClose()函数。(如果这有意义的话?)

我知道人们建议开4个订单,但如果不深入研究,这样做对我来说效率较低。