[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 188

 
但我不知道如果五角星小于30点,如何删除挂单
 
hoz:

是的,那又怎样?

在可视化模式下工作时有一些限制
 

我做错了什么!!!!

我想出了这个解决问题的办法

int start()
  {
     double Price=Ask+300*Point;    
     double SL=Price-300*Point;    
     double TP=Price+150*Point;
     bool New_Bar;
                          
     if (Time[0])                                                                           //   если образовался новый бар               
         int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP ); //   выставить отложенный ордер
     return ;
     Fun_New_Bar();                                                                      
     if ( New_Bar==true)                                                // если образовался следующий бар
        OrderDelete(Ticket);                                          // удалить отложенный ордер
  
//+------------------------------------------------------------------+
     void  Fun_New_Bar();                            //НО ПО ОТНОШЕНИЮ К ЭТОЙ СТРОКЕ КОМПИЛЯТОР ПИШЕТ ОШИБКУ       '(' - function definition unexpected  
       {                                                                           
          static datetime New_Time=0;
          New_Bar=false;
                                
         if( New_Time!==Time[0])                       
            New_Time=Time[0];                         
         New_Bar=true;                             
      }

/* 对不起,我对帖子做了些许改动--以便维宁的内容可以阅读 */

 
谢谢你的关心。 我应该按哪个按钮来获得这种格式的代码?
 
solnce600:

我做错了什么!!!!

我想出了这个解决问题的办法

/* 抱歉,对帖子做了一些改动--为了使维宁可读*/。

这条线
 if (Time[0])

是指。"如果最后一个小节的时间不为零"。所以它总是不等于零。

此外,变量

bool New_Bar;

是在start()函数中定义的,所以它在其他函数中不可见。此外,你试图在start()体内定义的Fun_New_Bar(),在MQL中不能这样做,所有的函数都必须在全局模块级别声明。New_Bar的声明也应该放在这里。

 

此外,在start()函数的一次执行过程中(如果它不是循环的),你不能定义bar的形成,然后等待下一个bar的形成:根据定义,start()被调用,并在每个tick终止(有细微差别,但一般来说是这样)。

我建议重读帮助,消除MQL程序执行 中的漏洞,并看到一个写循环程序 的例子,非循环 也是。

 
solnce600:
谢谢你的体贴。 我应该按哪个按钮来获得这种格式的代码?

SRC----------------------------\|/

--------------------------------------- V

 
他有这个权利。
 
alsu:
这条线
 if (Time[0])

是指。"如果最后一个小节的时间不等于零"。所以它总是不等于零。


谢谢你,但我不明白这一行的 "NOT "在哪里。不相等是由符号!==表示的。

我的意思是,只要出现新条形的开盘时间,即出现新条形,订单就会被打开。

而这确实是在每个五根柱子的开盘时打开订单的代码

 int start()

  {
 double Price=Open[0]+300*Point;	
 double SL=Price-300*Point;	
 double TP=Price+150*Point;
 if (Time[0])                         
 int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
  

 
 }


 

我决定采取我认为更简单的路线。

不是删除挂单--而是只在5分钟的蜡烛未结束时下挂单

也就是说,只有在满足两个条件的情况下,才可以下挂单。如果满足第一个条件

 if (Time[0])

- 我检查过了,订单已定。

我应该如何设置第二个条件,即只在5分钟尚未过去时设置挂单。如果(---------- && ?????????)

int start()

  {
 double Price=Open[0]+300*Point;    
 double SL=Price-300*Point;     
 double TP=Price+150*Point;
 
  
 
 
                          
   if (Time[0]&& ?????????  )                         
 int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
 return(0);
 
  }