新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1328

 
Alexey Viktorov:

这个问题似乎是关于MT5的。答案是:不是通过编程。这个问题可以结束了。

谢谢你

 

大家下午好,正如我所承诺的那样,我又回来了,准备了更多的教程Ј;-)当然,我得到了圣杯机的运行,但它在测试中一直很慢,所以我一直在寻找方法来执行它内部的代码,只在新条形图到达时才打勾。找到了以下选项。在全局层面,一个变量被定义为

int intBars;// ГЛОБАЛЬНО ОПРЕДЕЛЁННАЯ ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ НАСТУПЛЕНИЯ

然后我写了一个函数,检查是否出现了新的条形图--这是一个杰作


bool f_IsNewBar()
{
   if(intBars != Bars) 
   {
      intBars = Bars;
      return(true);
   } 
return(false);
}

当我发现这个变体时,他们说我应该用on-tick的所有逻辑创建一个函数。坦率地说,我不喜欢用函数的这种方法,所以我只是检查是否有一个新的条形,如果是真的,我将在on-tick中执行代码。在简化的形式下--没有任何实际工作,它看起来是这样的

void OnTick()
{//НАЧАЛО ОН ТИК
   // если появился новый бар:
   if(f_IsNewBar()) // ЕСЛИ ПОЯВИЛСЯ НОВЫЙ БАР
    {// ВЫПОЛНЯЕМ ВЕСЬ КОД В ОН ТИК
/*
МНОГО МНОГО СЕКРЕТНОГО ГРААЛЬНОГО КОДА😃😃😃
*/

    }
}// КОНЕЦ ОН ТИК

我有一个不同的问题。圣杯当然会在真实的情况下发挥作用。那么,这个检查应该在不在测试器中测试而在真实的tick 上执行的grail版本中删除,这样EA就会在每个tick 上操作,或者我们也应该为真实的tick保留这个检查?如果这个检查也包括在真实账户版本中,如果第一次没有打开订单,我们应该如何计划第二次尝试打开订单?

 
DanilaMactep:

大家下午好,正如我所承诺的那样,我又回来了,准备了更多的教程Ј;-)当然,我得到了圣杯机的运行,但它在测试中一直很慢,所以我一直在寻找方法来执行它内部的代码,只在新条形图到达时才打勾。找到了以下选项。在全局层面,一个变量被定义为

然后我写了一个函数,检查是否出现了新的条形图--这是一个杰作


当我发现这个变体时,他们说我应该用on-tick的所有逻辑创建一个函数。坦率地说,我不喜欢用函数的这种方法,所以我只是检查是否有一个新的条形,如果是真的,我将在on-tick中执行代码。在简化的形式下--没有任何实际工作,它看起来是这样的

我有一个不同的问题。圣杯当然会在真实的情况下发挥作用。那么,这个检查应该在不在测试器中测试而在真实的tick 上执行的grail版本中删除,这样EA就会在每个tick 上操作,或者我们也应该为真实的tick保留这个检查?如果这个检查也包括在真实账户版本中,如果第一次没有打开订单,我们应该如何计划第二次尝试打开订单?

如果对OPT、HI、LO、CLOSES的条形值进行计算,我们就不需要对每一个刻度进行计算。但在每一个刻度上监测价格是正确的。这应该是单独的计算或条件检查。

新栏也是由零栏开放时间来追踪的。

FlagNewBar=false;   // глобальная или статик булева переменная
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }
 
Artyom Trishkin:

在这个主题中,我想开始帮助那些真正想了解和学习新的MQL4的编程,并想轻松切换到MQL5的人--这些语言非常相似。

这个博客将是一个讨论问题的好地方,他们的解决方案的算法和任何其他有关MT编程的问题,以这种或那种方式。

我希望我们论坛的其他有经验的成员能加入讨论,支部会让大家感兴趣。

MQL4任务:确定一个字符串中大写字母的位置号。谢谢你。

 
Mikhail Nazarenko:

MQL4任务:确定一个字符串中大写字母的位置号。谢谢你。

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   pos=StringFind(uppercase,StringSubstr(str,i,1));
   if(pos>=0) break;
   }
printf(pos);
 
Aleksei Stepanenko:

谢谢你。

 
Mikhail Nazarenko:

谢谢你。

错了,我们要的不是StringFind的 结果,而是i。

对。

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   if(StringFind(uppercase,StringSubstr(str,i,1))>=0)
      {
      pos=i;
      break;
      }
   }
printf(pos);
 
Mikhail Nazarenko:

MQL4任务:确定一个字符串中大写字母的位置号。谢谢。

你可以使用StringGetCharacter() 字符 "A "是65,"a "是32多 - 97。所有的人物也是如此。因此,如果一个字符代码>90且<=122,它就是一个小写拉丁字符。西里尔字母也有32个不同的字

 
Alexey Viktorov:

你可以

没错,是个不错的选择。

 
你好,我如何在这里建立一个领导账户?