初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1502

 
psihodelit 函数 从一个 EA导入 另一个 EA?

例如,有一个 EA 可以打开订单,还有一个 EA 可以监控账户状态,其中指定了缩减等参数、

我需要当达到第二个顾问的缩减时,第一个顾问不打开订单....。

如何举例说明?

如果第一个智能交易系统以一定的幅度开仓,那么您可以在它或另一个智能交易系统中对这些仓位进行排序,并计算它们的总盈亏。而您的第二个智能交易系统会计算利润损失,因此它不会缩水,也不会开仓,而是以所需的 medzhik 监控仓位的状态。一般情况下,头寸开立后,都是各自为战,在这些头寸中,您通常需要找到合适的)))))。

 
psihodelit 函数 从一个 EA导入 另一个 EA?

例如,有一个 EA 可以打开订单,还有一个 EA 可以监控账户状态,其中指定了缩减等参数、

我需要当达到第二个顾问的缩减时,第一个顾问不打开订单....。

如何举例说明?

有几种选择。

您可以使用上述建议。这是一种可行的变体。

可以使用终端的全局变量

可以通过写入/读取文件 在智能交易系统之间建立交换。

正如人们所说,所有毡尖笔的味道和颜色都是不同的。)

 
psihodelit 函数 从一个 EA导入 另一个 EA?

例如,有一个 EA 可以打开订单,还有一个 EA 可以监控账户状态,其中指定了缩减等参数、

我需要当达到第二个顾问的缩减时,第一个顾问不打开订单....。

如何举例说明?

首先(当然是个人观点),您需要了解一些微妙之处

  1. 两个 EA 的代码是否都可以编辑。
  2. EA 是否会在全局变量中留下活动痕迹
  3. 您是否至少具备基本的编码技能?
如果这三个问题的答案都是肯定的,那么就很容易实现您的计划,如果存在差距,就会比较困难,但也是有可能的--我们将一起想办法。
 
Sergey Voytsekhovsky #:

如果这三个微妙之处的答案都是肯定的,那么......

那么这里就不会出现这个问题。

 
Yuriy Bykov #:

非常感谢你提出的上述想法。如果你感兴趣的话,下面是我们的成果。

//---
   NOD = 1;
   ArraySort(Arr_ZigLag);
   size_zigLag = ArraySize(Arr_ZigLag);
   for(int i = size_zigLag - 1; i > 0; i--)
     {
      if(NOD != 1)
         if(Arr_ZigLag[i] != Arr_ZigLag[i-1])
            NOD = CalculateNOD(Arr_ZigLag[i-1], NOD);
      if(NOD == 1)
         if(Arr_ZigLag[i] != Arr_ZigLag[i-1])
            NOD = CalculateNOD(Arr_ZigLag[i], Arr_ZigLag[i-1]);
           }
   return(NOD);
  }
//+------------------------------------------------------------------+
//| Функция НОД(НаибольшийОбщийДелитель)                             |
//+------------------------------------------------------------------+
int CalculateNOD(int a=1, int b=1)
  {
   int Nod = (int)MathMod(a, b);
   while(Nod > 0)
     {
      a = b;
      b = Nod;
      Nod = (int)MathMod(a, b);
     }
   if(Nod == 0)
      Nod = b;
   return(Nod);
  }
 
Sergey Voytsekhovsky #:

或者你可以这样说

//+------------------------------------------------------------------+
//| Наибольший общий делитель чисел a и b                            |
//+------------------------------------------------------------------+
int gcd(int a, int b) {
   int c;

   while(b > 0) {
      c = a % b;
      a = b;
      b = c;
   }

   return a;
}

//+------------------------------------------------------------------+
//| Наибольший общий делитель массива чисел a                        |
//+------------------------------------------------------------------+
int ArrayGcd(int &a[]) {
   int n = ArraySize(a);
   if(n == 1) {
      return 0;
   }
   int c = gcd(a[0], a[1]);

   for(int i = 2; i < n; i++) {
      c = gcd(a[i], c);
      if(c == 1) {
         break;
      }
   }
   return c;
}


int OnCalculate(...) {
   ...
   ArraySort(Arr_ZigLag);
   NOD = ArrayGcd(Arr_ZigLag);
   return(NOD);
  }
 
Yuriy Bykov #:

或者你可以这样说

我同意,很漂亮!我可以把它放在图书馆吗?

 
Yuriy Bykov #:

或者你可以这样说

你能给我一个提示吗?

你使用的数学函数是"除法余数",但我有一个内置函数" MathMod",它说的是"两个数相除的实余数"。实数 "是什么意思?????

 
Sergey Voytsekhovsky #:

EVERYTHING 这个词是什么意思?

在这种情况下,小数是隐含的。

 
Aleksandr Slavskii #:

有几种选择。

您可以采用上述建议。这是一个相当可行的方案。

可以使用全局终端变量

您可以通过写入/读取文件 来设置智能交易系统之间的交换。

俗话说,所有的毡尖笔都有不同的味道和颜色)))))。

如何才能理解向哪个方向移动、从哪里开始以及如何移动?几乎没有任何知识...


  1. 是的。
  2. 顾问是否会在全局变量
    中留下他们的活动痕迹,我不能确定。
  3. 您是否至少具备基本的编码技能
    一点点。