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
{
staticdatetime New_Time=0;
New_Bar=false;
if( New_Time!==Time[0])
New_Time=Time[0];
New_Bar=true;
}
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 );
}
是的,那又怎样?
在可视化模式下工作时有一些限制
我做错了什么!!!!
我想出了这个解决问题的办法
/* 对不起,我对帖子做了些许改动--以便维宁的内容可以阅读 */
我做错了什么!!!!
我想出了这个解决问题的办法
/* 抱歉,对帖子做了一些改动--为了使维宁可读*/。
是指。"如果最后一个小节的时间不为零"。所以它总是不等于零。
此外,变量
bool New_Bar;是在start()函数中定义的,所以它在其他函数中不可见。此外,你试图在start()体内定义的Fun_New_Bar(),在MQL中不能这样做,所有的函数都必须在全局模块级别声明。New_Bar的声明也应该放在这里。
此外,在start()函数的一次执行过程中(如果它不是循环的),你不能定义bar的形成,然后等待下一个bar的形成:根据定义,start()被调用,并在每个tick终止(有细微差别,但一般来说是这样)。
我建议重读帮助,消除MQL程序执行 中的漏洞,并看到一个写循环程序 的例子,非循环 也是。
谢谢你的体贴。 我应该按哪个按钮来获得这种格式的代码?
SRC----------------------------\|/
--------------------------------------- V
这条线
是指。"如果最后一个小节的时间不等于零"。所以它总是不等于零。
谢谢你,但我不明白这一行的 "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分钟尚未过去时设置挂单。如果(---------- && ?????????)