自行车运营商 "为 "问题 - 页 11

 
WhooDoo22:


我想你没明白我的意思 ......如果我加上一些大括号,也许会更清楚。......你这样做了......。

我相信我的意思是这样做的......。

这是因为我希望这个条件......

应用于大括号内的代码部分("{ }")。

那么,为什么你没有在你的最新版本的代码中做这个改动呢?......如果你想这么做,为什么不这么做呢?

 
WhooDoo22:

西蒙。


你图像中的0可能是来自......。.


Nah-uh-uh!;)

让我们顺着文档通道来一次旅行吧?哈哈哈。

datetimeOrderCloseTime() )
返回当前所选订单的收盘时间。如果订单关闭时间不为0,那么所选的订单已经关闭,并从账户历史中检索。未结订单和挂单的关闭时间等于0。

注意:订单必须是先前由OrderSelect() 函数选择的。


首先,让我们都来看看我最近编写的OrderClose()函数的代码块...

接下来,让我们都来看看 "专家 "窗格的快照中显示的结果......

啊,我们这里有什么呢?)

Print(OrderCloseTime())显然是错误的,但你的代码中仍然有它,为什么? 当你加入我建议的两行代码时,发生了什么?
 

西蒙。

那么,为什么你没有在你的最新版本的代码中做这个改动呢?......如果你想做,为什么不做?

请给我一点时间看一下。

我以前就 写这个代码,但现在不想 这个代码。没有理由这样编码...。

   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))       
      {
      if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
      if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}           
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
         {
         OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);
         Print(OrderCloseTime());
         GetLastError();
         }
      }

当我可以用这个来代替编码时...

   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))       
   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);
      Print(OrderCloseTime());
     }

所有 "如果 "条件都适用于大括号("{}")内的内容。在这段代码中添加大括号(以我的意思 来编码)是低效的,没有任何作用。


谢谢你。

 

西蒙。


我不知道你想说什么,你能解释一下吗?

   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))       
   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);
      Print(OrderCloseTime());
     }

// replace above code block with...

   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))       
   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);
//      Print(OrderCloseTime());
     }

在模拟账户的终端上快速旋转EA(没有Print()函数),然后点击 "专家 "窗格,观察 "专家 "窗格中的其他结果中是否没有0(0)。

注意没有0。嗯,对吗?)

现在让EA旋转一下(包括Print()函数)。

注意 "专家 "窗格中的0。


你对 "专家 "窗格的结果中为什么有一个0进行了有根据的猜测,你是对的(在信息的开头划掉 "Nah-uh-uh!;)")。

你图像中的0可能是来自.....

Print(OrderCloseTime());

记得吗?你当然记得了。)


Print(OrderCloseTime())显然是错误的,但你的代码中仍然有它,为什么?

请解释为什么你认为它是错误的。

我把它放在代码中,是为了向你表明一个观点重点 是。零点在 "专家 "窗格中出现是因为代码中存在这段代码。


当你加入我建议的那两行代码时,发生了什么?

我目前正在努力解决这个问题。)


谢谢你

 
WhooDoo22:

Print(OrderCloseTime())显然是错误的,但你的代码中仍然有它,为什么?

请解释为什么你认为它是错误的。

我把它放在代码中,是为了向你表明一个观点重点 是。零点在 "专家 "窗格中出现是因为代码中存在这段代码。


你发布的最后一张图片显示,USDJPY订单是在01:45:35关闭的 ......关闭订单的那一行之后的下一行代码是Print(OrderCloseTime());它的结果是0 ......0作为一个日期时间是1970年1月1日午夜,这不是你关闭订单的时间,正如你正确指出的,OrderCloseTime()的返回值为0也可能是订单未平仓或挂单的 时候,你的订单已经关闭,你知道它已经关闭,你的最后一张图片证明了这点。答案是它不可能是正确的,所以这意味着它是错误的。

 

西蒙。

我目前正在研究这个问题...

   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))       
   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}           
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {
      int ClosedTicketNum = OrderTicket();   //  <---- add this line
      
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);
      
      OrderSelect(ClosedTicketNum, SELECT_BY_TICKET);   //  <---- add this line

      Print(OrderCloseTime());
      GetLastError();
     }

谢谢你。

 
WhooDoo22:

西蒙。

那么,为什么你没有在你的最新版本的代码中做这个改动呢?......如果你想做,为什么不做?

请给我一点时间看一下。

我以前就 写这个代码,但现在不想 这个代码。没有理由这样编码...。

当我可以用这个来代替编码时...

所有 "如果 "条件都适用于大括号("{}")内的内容。在这段代码中加入大括号(以我 方式)是低效的,没有任何作用。

好了,看一下这段代码.. . .

if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))                                  // 1.
if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}                   // 2.
if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}                  // 3.
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))   // 4.
     {  
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);                   // 5.
      Print(OrderCloseTime());                                                    // 6.
     }

我对这些行进行了编号,以便于讨论。

如果OrderStopLoss()和OrderTakeProfit()都是0,那么其他编号的几行代码将被执行?

 

西蒙。

修正了,所以能按原定计划工作。

if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}                   // 2.
if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}                  // 3.
if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))                                  // 1.
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))   // 4.
     {  
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);                   // 5.
      Print(OrderCloseTime());                                                    // 6.
     }

第2行和第3行。

谢谢你。

 

西蒙。

   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {
      int ClosedTicketNum=OrderTicket();
      
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);

      OrderSelect(ClosedTicketNum,SELECT_BY_TICKET);
      
      Print(OrderCloseTime());
     }

结果。

'专家'窗格的结果。

为什么订单关闭时间以这样的形式表示(1357306061)?

Print()函数工作的原因是OrderSelect()函数(在大括号内)必须选择关闭的订单而不是开放的订单?这必须在大括号内完成,对吗?)狡猾,狡猾。

谢谢你。

 

西蒙。

它来了...砰!

   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {      
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
      
      Print(OrderCloseTime());
     }

甚至更好!哈哈哈;)

谢谢你。

附加的文件: