[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 525

 
对不起,你能想象吗,最后的附录没有记录?
//----
   for ( i=OrdersHistoryTotal();i>0;i--){
    OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
    if( OrderMagicNumber( )==2000 
    &&OrderSymbol()==Symbol()&&
    OrderTakeProfit( )==OrderClosePrice(        )&&wremjapomnim<OrderCloseTime( ) ||
   OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()
   &&OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )){
   Alert ("нашли MODE_HISTORY");
 for ( i=OrdersTotal();i>0;i--)  {
 Alert ("паследний цикл",i);
  OrderSelect(i-1,SELECT_BY_POS );
  if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
  || OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol())  { 
  Alert ("OrderTicket( )",OrderTicket( )); 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); 
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);
   Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }}}}                              
   

具体来说,Alert"OrderTicket( )",OrderTicket( ))一行;这可能意味着最后一个周期没有完成!!。

这里是日志。 早些时候,我经常重写代码,我经常遇到错误,我认为是4108和4050,现在没有错误了!"。是的,无论如何,这是不可能的!

 

是的,我想这就是它变得棘手的地方。

如果( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
||OrderMagicNumber()==1000 &&OrderSymbol()==Symbol() {

这是正确的,S... 我在这一行做错了什么?


 
天哪,我不知道,一个条件作为一个条件。
 
Dimka-novitsek:

是的,我想这就是它变得棘手的地方。

如果( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
||OrderMagicNumber()==1000 &&OrderSymbol()==Symbol() {

这是正确的,S... 我在这一行做错了什么?


||首先被执行,然后是&&
 
ilunga:
只是在这一点上,它可能是一个远程挂单,结果将是不寻常的;)

我不明白,我在这里选择的不是删除,不是时尚史。好吧,没必要,那是以后的事。
 

-AAH!!!所以我把两边都包起来了!!!。 谢谢你!!!!!

好吧,我去洗个澡,很热。

 
Dimka-novitsek:

我不明白,我不是在删减被删除的,不是在删减时尚史。好吧,没必要,这是后话。

让我们假设我们有1个待处理的订单 要删除,并且我们已经达到了线(为了方便阅读,我按操作员分解了它)。

OrderDelete(OrderTicket( ));
Alert ("OrderDelete-vse",  GetLastError( ) );
OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);
Alert ("OrderClose-vse",  GetLastError( ) );
 C=0;

因此,我们有这样的秩序。

1)我们删除它,并在这样做的时候。

a) 我们很幸运,它被删除了

b) 它可能不会被删除,因为价格太接近/服务器超载/互联网故障/等等。但我们还是继续前进。

2)如果出了问题,我们要把它写下来

3) 关闭订单(待定!!!我们在第一点中删除了这个订单!!!)。

结果...我不能100%预测,但看起来是另一个错误

4) 显示有关信息

 
Dimka-novitsek:

是的,这就是问题所在。

if( OrderMagicNumber( )==2000 &&OrderSymbol( )==Symbol( )
|| OrderMagicNumber( )==1000 &&OrderSymbol( )==Symbol( )){

它是如此的正确...我在生产线上搞砸了什么?

让我们这样说吧...所以没有人被枪杀,你也不会被人指使......。:))

让我们按顺序开始吧。首先,我们要找到最后一个平仓的位置,并确保它在拿下时是平仓的。

   int j=-1;
   datetime t;
   // Поищем в цикле последнюю закрытую позицию, которая закрылась по TakeProfit
   for (int i=0; i<OrdersHistoryTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderSymbol()!=Symbol())     continue;
         if (OrderType()>1)               continue;
         if (OrderMagicNumber()==1000 || OrderMagicNumber()==2000) {
            if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
               }
            }
         }
      }
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
      if (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point) {
         Alert("Позиция с тикетом #",OrderTicket()," закрыта по TakeProfit, закрываем остальные прозиции и удаляем отложенные ордера");
         // Здесь код для закрытия всех открытых позиций (тоже в цикле)
         // Здесь код для удаления всех отложенных ордеров (также в цикле)
         }
      }

这一点。

// Здесь код для закрытия всех открытых позиций (тоже в цикле)
// Здесь код для удаления всех отложенных ордеров (также в цикле)

这将是你的家庭作业...:)

 
谢谢你!!!!!!
 
酷写!!!!