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

 
artmedia70:

例如,根据EA的名称、货币对和安装的TF,自动为EA分配一个独特的魔法号码的功能。

呼叫。



你也可以用CRC32分配一个魔术师,以确保它是唯一的。或者,你可以快速检查以前保存的或从另一个终端接收的任何数据的完整性,例如,通过互联网。在这种情况下,darb所有的功能)))。明智地使用它)。

int crc_table[256];
 
/* Run this function previously */
void make_crc_table() 
{
    for (int i = 0; i < 256; i++) {
        int c = i;
        for (int j = 0; j < 8; j++) {
            if(c & 1 != 0)
               c = 0xEDB88320 ^ (c >> 1);
            else 
               c = c >> 1;
        }
        crc_table[i] = c;
    }
}
 
bool table_filled = false;

int crc32(string buf) 
{
    if(!table_filled)
    {
      make_crc_table();
      table_filled = true;
    }
    
    int len = StringLen(buf);
    
    int c = 0xFFFFFFFF;
    for (int i = 0; i < len; i++) {
        c = crc_table[(c ^ StringGetChar(buf,i)) & 0xFF] ^ (c >> 8);
    }
    return (c ^ 0xFFFFFFFF);
}
 
alsu:

而且我们还可以用CRC32来分配一个魔术师,以确保它是唯一的。或者我们可以快速检查以前保存的或从另一个终端接收的任何数据的完整性,比如说,通过互联网。在这种情况下,darb所有的功能)))。明智地使用它)。


阿列克谢,感谢你的有趣和写得好的功能。我将看一看。我自己也在想一个类似的想法,于是就来了。

好吧,就在这里。


维克多,我也在Dock里找过你。所以,这些代码是在CodeBase的指标中看到的,我是用它来进行手动交易的。事实证明,这远非万能药。因此,我扔掉了几乎所有的指标,现在我的专家顾问是它自己的指标,我几乎不需要其他任何东西!"。

顺便说一句,我在基地里挖到了很多东西!你必须自己成为一个专家,才能掌握Dock中的一切!教科书里有更多的细节,但也有很多遗漏!


鲍里斯,我自己并不真正使用指标。除非它是一个破折号...而字符串函数则需要用于其他目的。我在上面写到了这一点。在这里。

hoz:

以免读到各种歪门邪道的代码,如这里https://www.mql5.com/ru/articles/1524。

(我注意到那里,有一堆的bug。而一般来说,我不知道作者在写这段代码时在想什么)。

请给我一个关于这个变体的算法的提示。我想让挂单跟随对象,比如说趋势线。或者待定的订单在线路后面。

它是如何实施的?我并不真正理解它。

我明白,我们应该创建一个对象。但我们应该以某种方式规定,如果价格在对象的 "后面",我们应该做些什么,或者如果价格在线上,挂单就在它上面......。

 

朋友们,你们能给我一个提示吗?

是否有一个程序可以写出终端的所有操作?

或者如何使EA独立于服务器写日志

 
polycomp:
谢谢你的澄清!看来,最好不要在图书馆中使用静力学。


而且你也不应该在它们之外使用它们。在MT4中,静态类型的变量永远不会被重新初始化。
 
herhuman:

我怎样才能使EA独立于服务器写日志?

它确实如此。
 
hoz:


首先,要清楚地说明你想要什么。欢迎采用几何学 方法。
 
hoz:


阿列克谢,感谢你写了一个有趣和明智的专题。我会看一看的。我自己也在想一个类似的想法,就在这里。


鲍里斯,我自己并不真正使用指标。除非它是一个挥舞的机器...而字符串函数则需要用于其他目的。我在上面写到了这一点。在这里。


维克多,我也没有处理过这个问题,我在基地见过很多这样的情况。根据我的理解,与线的价格交叉与刷卡类似。同时用你的订单和仓位参数等来捕捉线的交叉点。把它挖出来!
 

亲爱的先生们,能否请您为一个新手 回答以下问题?

如果(((((Bid>1.2153)&&(Bid<1.2160) || (Bid>1.2173)&&(Bid<1.2180))||( (Bid>1.2100)&&(Bid<1.2107) ||(Bid>1.2094)&&(Bid<1.2101))||((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2098))|((Bid>1.2073)&&(Bid<1.2080)|(Bid>1.2005)&&(Bid<1.2012))))) // 如果价格符合if标题中所列的条件之一

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //打开一个订单

我有大约3000个不重复的条件数据,所以我把它们都放在一个一维数组中

Double masiv [3000];

如果((Bid==masiv[5]) // 如果价格 与索引为5的数组元素 的值相一致

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //打开订单

问题:哪些代码可以用来编写以下命令

如果价格与数组的 3000个 非重复值中的 任何一个 值相匹配,则为双倍 masiv [3000] 。

打开一个订单。

最简单的选择是把3000个条件放在if(.....)的头里。

但可能还有一些更紧凑的代码变体。

谢谢你的帮助。


 
solnce600:

亲爱的先生们,能否请你们告诉一个新来 的人这个问题的答案?

如果(((((Bid>1.2153)&&(Bid<1.2160 )| (Bid>1.2173)&&(Bid<1.2180))||( (Bid>1.2100)&&(Bid<1.2107) ||(Bid>1.2094)&&(Bid<1.2101))||((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2098))|((Bid>1.2073)&&(Bid<1.2080)|(Bid>1.2005)&&(Bid<1.2012))))) // 如果价格符合if标题中所列的条件之一

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //打开一个订单

我有大约3000个不重复的条件数据,所以我把它们都放在一个一维数组中

Double masiv [3000];

如果((Bid==masiv[5]) // 如果价格 与索引为5的数组元素的值相一致

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //打开订单

问题:哪些代码可以用来编写以下命令

如果价格与数组的 3000个 非重复值中的 任何一个 值相匹配,则为双倍 masiv [3000] 。

打开一个订单。

最简单的选择是把3000个条件放在if(.....)的头里。

但一定有一些更紧凑的代码变体。

谢谢你的帮助。




如果有必要,可以找到一个解决方案。例如,切换到一个整数的有序阵列。在其中搜索所需的值。
 
solnce600:

亲爱的先生们,能否请你们告诉一个新来 的人这个问题的答案?

如果(((((Bid>1.2153)&&(Bid<1.2160) || (Bid>1.2173)&&(Bid<1.2180))||( (Bid>1.2100)&&(Bid<1.2107) ||(Bid>1.2094)&&(Bid<1.2101))||((Bid>1.2092)&&(Bid<1.2099) || (Bid>1.2091)&&(Bid<1.2098))|((Bid>1.2073)&&(Bid<1.2080)|(Bid>1.2005)&&(Bid<1.2012))))) // 如果价格符合if标题中所列的条件之一

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //打开一个订单

我有大约3000个不重复的条件数据,所以我把它们都放在一个一维数组中

Double masiv [3000];

如果((Bid==masiv[5]) // 如果价格 与索引为5的数组元素的值相一致

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP, "jfh",123 ) //打开订单

问题:哪些代码可以用来编写以下命令

如果价格与数组的 3000个 非重复值中的 任何一个 值相匹配,则为双倍 masiv [3000] 。

打开一个订单。

最简单的选择是把3000个条件放在if(.....)的头里。

但可能还有一些更紧凑的代码变体。

谢谢你的帮助。



循环。

   double massiv[];  
//----------------------------------------------------------------------
   for (int i=0; i<ArrayRange(massiv,0); i++) {
      if (MathAbs(NormalizeDouble(Bid-massiv[i],Digits))<=0.5*Point) {
         // цена примерно совпадает со значением в massiv[i]
         // ... обрабатываем совпадение
         }
      }
//----------------------------------------------------------------------