任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 149

 
ALXIMIKS:

这个问题很枯燥,但答案却无处可寻,或许我只是看错了。

在函数中,也可能在其他地方,我见过数据类型后面的& 符号,如果我没记错的话,有一次&&

func(int& mm_mode, string symbol, int magic,bool& stop) {

它的作用是什么? 它能做什么? (参考,如果你能找到更多的信息))。

这是一个通过参考的 参数转移。
hoz:


而更重要的是?已经讨论过了,INIT在例如断开连接或其他类似的情况下会失败。因为它不会在事后重新初始化数据本身,以备不时之需,而且它只运行一次!所以,这并不是完全正确的做法。
没有人阻止你在你需要的地方,根据你的条件调用init()。
 
gInitTrue = false;   // В глобальных
-------------------------------------
// Сама функция нашего ИНИТА
bool myInit()
{
   // Инициализируем..
   // неоходимые..
   // нам..
   // переменные.
   return(gInitTrue =true);
}
-------------------------------------
//Вызов из старта так:
if (gInitTrue = false)
   myInit();
 

hoz:

gInitTrue = false;   // В глобальных
-------------------------------------
// Сама функция нашего ИНИТА
bool myInit()
{
   // Инициализируем..
   // неоходимые..
   // нам..
   // переменные.
   return(gInitTrue =true);
}
-------------------------------------
//Вызов из старта так:
if (gInitTrue = false)
   myInit();

这就等于。

gInitTrue = false;   // В глобальных
-------------------------------------

bool init()
{
   if
   {
   // Инициализируем..
   // неоходимые..
   // нам..
   // переменные..
   }
   return(gInitTrue =true);
}
-------------------------------------
void start()
 {//Вызов из старта так:
  if (gInitTrue = false) init();
 }
 
001:

我想不出如何用最少的精力来实现这个逻辑。

如果(......)设置一个止损单。

如果(订单的有效期>时间)撤回订单,如果(...)设置一个新订单。

困难的是,可能有几个位置已经开放了,我们怎样才能把它们都打下来?什么是最简单的方法?

谢谢你!

int MagicNumber=555;
//---
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  //--- фильтр по символу
         if (OrderSymbol()!=Symbol()) continue;
         //--- фильтр по магик номеру (если такая проверка предусмотрена)
         if (OrderMagicNumber()!=MagicNumber) continue;
         //--- срабатывает условие удаления отложенного ордера
         if (OrderOpenPrice()>vremya)
         {  
            if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
            {  
               if (OrderDelete(OrderTicket())==true)
               {  Sleep(5*1000); //после удачного удаления усыпляем советник на 5 секунд
                  if (/*установить стоповый ордер*/)
                  {   OrderSend(...)
                  }
               }
            }
            else return(0);
         }
}  }  }
 
Zhunko:
这就是通过引用 传递参数。
没有人阻止你根据你的条件,在你想要的地方调用init()。


然后,我们又必须解决对这一时刻的控制问题。毕竟,为了知道 "它应该在哪里",你需要了解它。而且你可以通过一个旗子来发现,比如说。 事实证明,例如,那面旗帜将在全球。

gInitTrue = false;

在init()中,在函数的最末端分配一个值。

gInitTrue = true;

而我们将在函数的最开始控制启动。

if (gInitTrue != true)
    init();
我的理解是否正确?还是有其他需要考虑的问题?
 
hoz:


但更重要的是什么?已经讨论过了,INIT在例如断开连接或其他类似的情况下会失败。因为它不会在事后重新初始化数据本身,以备不时之需,而且它只运行一次!所以,这并不是一个很正确的做法。
init()没有时间限制,理论上计算可以运行数秒/分钟。在这里中断连接是没有意义的。
 
应该如何正确编写代码,以便如果指定的止损或止盈 小于最小止损,那么使它们相等,并将止损作为最小止损。?
 
webip:
应该如何正确编写代码,以便如果指定的止损或止盈小于最小止损,那么使它们相等,并将止损作为最小止损。?
MathMax()。
 
你能告诉我一个小代码吗?已打开的文件.... 可以用什么函数来写一条记录,保存它,然后关闭它...
 
Zolotai:
你能告诉我一个小代码吗?已打开的文件....哪个函数可以用来写一个录音,保存它,然后关闭它...

https://docs.mql4.com/ru/files