[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 54

 
vovan-gogan:

在我的例子中不也是这样吗?它有什么不同?除了我没有添加启动功能。


更好的是,它是这样的。

int start()                            // Спец. функция start
  {
    int Orders=0;
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          int ticket = OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic);     
          if (ticket>0)              // Если ордер установлен
             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)  Sleep(100); // Если ордер выбран         
          Orders++;
          Alert ("Ордер выставлен.Orders = ",Orders );
             
        }   
       Alert ("Ордеров нет. Orders = ",Orders );    
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }


                 
         
      
 
vovan-gogan:

但我看不出有什么区别,可以尝试。请告诉我我做错了什么。

你试试,写出结果。由于设置时缺乏必要的检查,订单可能没有根据你的情况来设置。此外,添加一个错误处理程序也无妨,当它由于某种原因没有安装时,滑移量使>0 - 这是立即显示的第一件事。
 
你是指挂单 的滑点吗?
 
vovan-gogan:
你是指挂单的滑点吗?


不要挑剔文字--只需设置它,就可以了......检查它。

至少在测试器中,一切都应该是有效的--如果你由于距离过短而没有设置订单,那么下次就会设置--你的问题是关于其他的东西--那么你就会完成其他的事情--按照测试器中的情况检查。

 
Roman.:


不要挑剔文字--只需设置它,就可以了......检查吧。

至少在测试器中,一切都应该是有效的--如果你由于小的距离而没有设置一个订单,它将在下一次被设置--你的问题是关于其他的东西--然后你将完成其他一切--在测试器中按原样检查。


谢谢你想帮忙,但在这种特殊情况下,我想让你先帮我了解我的错误。如果我不断地使用别人开发的解决方案,而没有意识到自己的错误,我就不太可能成长为一个程序员。我希望你同意这一点
 
vovan-gogan:

在我的例子中不也是这样吗?它有什么不同?除了我没有添加启动功能。


重新阅读局部和全局变量的概念。此外,由于该建筑

 if (OrdersTotal()>= 1) return(0);  

如果一个仓位将被手动打开或由同一交易账户上的另一个EA打开,当交易条件触发设置挂 单时,EA将不设置挂单,对于策略测试者来说,它可以正常工作。

在一般情况下,你需要根据你的算法逻辑,由这个非常专家顾问打开或设置的订单安排一个循环 - TS,在没有挂单的情况下,设置它,增加订单的计数器,打印信息。

 
vovan-gogan:

谢谢你愿意帮忙,但在这种特殊情况下,我希望你首先能帮助我了解我的错误。如果我不断地使用别人写的解决方案,而没有意识到自己的错误,我就很难成长为一个程序员。我希望你同意这一点


同意。重新阅读客户终端中的局部和全局变量 的概念。



int start()                            // Спец. функция start
  {
    int Orders=0;    
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          int ticket = OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic);     
          if (ticket>0)              // Если ордер установлен
             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)  Sleep(100); // Если ордер выбран         
          Orders++;
          Alert ("Ордер выставлен.Orders = ",Orders );
             
        }   
         
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }
 
vovan-gogan:

谢谢你愿意帮忙,但在这种特殊情况下,我希望你能先帮我了解我的错误。


已经提出了问题...:-Р

试试我之前帖子中的变体。

阅读这里 的教程和文档--我还没有看到更详细的肉酱被嚼碎的地方。

 
谢谢你关于全局变量和局部变量 的提示)我将阅读更多)
 
Alexandr24:
告诉我为什么当我打开一个图表(实时)时,用 M30的时间框架 应用参数int shift=iBarShift(NULL,PERIOD_M5,some_time)的指标;shift将是它应该有的,但当我通过测试器运行相同的指标,周期为M30时,shift没有计算出来?

谁知道如何解决这个问题?
原因: