对MQL5的祝愿 - 页 39

 
ds2:
// Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType.DataType = int; 
AvgType.Value    = 0;
AvgType.Comment  = "Тип скользящей средней";

这样做有意义吗?

class ExternParam
{
    <template typename T>
    property T Value ...;
    property String Comment ...;
}
 
SK. писал (а):
ds2
SK. 写道:(a)。

我也希望if() 中解脱出来

我还没有在流行的编程语言中看到过这样的东西...

О.就是这样,一语中的。

这句话中的积极说法是,如果不是其他语言,那就不好,这意味着它是外国的东西,没有必要。

在我看来,这根本就不是事实。

我同意。但你也必须从更高的权宜之计来看待这个问题。MQ的首要任务,也是我们的首要任务(!)是改进MQL作为自动交易的语言,并发展其交易分析 的可能性。而MQ在这个方向上仍有许多未解决的问题。


而实施与交易无关的非标准编程结构--这并不是MQL的创建目的。如果开发者想以某种方式扭曲并在其他语言中脱颖而出,他们会使用Prolog,例如,而不是C++。:)(虽然就我个人而言,作为一个Prolog的粉丝,看这个节目会很有趣)。:))


我认为无论这里的程序员如何要求突破,MQ都不可能在这方面浪费时间。而且,在我看来,他们会做正确的事情。我建议大家不要用请求来烦扰MQ,以免分散他们对改善MQL作为自动交易语言的更紧迫任务的注意力。

SK. 写道:(a)。

复杂的构造不仅是基于循环和列表而形成的。它们也是在ifs的 基础上形成的。因此,有控制地过渡到一个外部关闭的支架将是有用的。

我完全赞成:)


这种方案的逻辑将更加透明。毕竟,breakif 是对if结构 的提前退出。像任何早期退出一样,它应该由一些条件来执行,也就是在一个更多的if 里面。因此,我们谈论的breakif 不是一个而是两个(!)if的 退出操作符,这使得对程序逻辑的理解更加复杂,同时也打破了break(breakforbreakwhile 等)作为只为一个 结构体退出的操作符的一般概念。也许这就是为什么其他语言的开发者仍然没有引入这样一个可疑的操作符......

 
ds2 писал (а):
我建议大家不要用请求来烦扰MQ,因为这些请求会分散它对改善MQL作为一种自动交易语言的更紧迫任务的注意力。


我完全支持。:)这种方案的逻辑将更加透明。

亲爱的开发者们!请不要 "从改进MQL作为自动交易语言的更紧迫的任务中 "分心。

我们不会再打扰你了。

你唯一还需要做的是考虑Ds2的意见。

 

Skeptic Filozov的 文章启发--啊, ,在测试报告中也输入以点为单位的平均利润和损失以及最大和最小交易。

 

要求只读


输入功能或允许当前功能访问终端的所有子文件夹

有材料需要加工的地方:如原木

只读"模式。


Plan another folder (计划另一个文件夹) (experts\services

在那里,来自DM的各种信息将被集中写入。

例如,一个自动更新的格式化日历文件,"数字 "新闻等等。


如果你需要澄清请求的内容,没问题。;)

 

在图表中,如果有
1.发线就好了,因为粗细为1的线条看起来很粗糙。

2.如果能用Digits+2 的四舍五入方式显示线条就更好了。

现在,线条是圆的,到了工具的Digits,这导致了一个踏脚石。

-在现代图形产品的环境中,这是引人注目的,在实践中不再方便。

 
由于顾问可以为客户的日程安排服务,所以非常需要 "技术上的点拨"。
例如,以
int servis() 
{
return(0);
}

它也像Start一样接收/启动,但不是来自服务器,而是来自终端的一个本地定时器。
所需的技术蜱虫期不会伤害任何人:从1到3秒。
这一变化可以直接在MQL-4中引入,而无需等待第5个版本。所以说,为了测试,也为了商业。
 
Korey:

在METALANG出现的错误

extern double  Lot=0.2;
int start()
{ double   Lot; }

双重变量的启动在编译过程中没有错误或警告。


extern double  Lot=0.2;
double   Lot;   //а так ошибку - дает
int start()
{ }

一个局部变量 掩盖了一个全局变量。没有错误。

 

Korey,零正是因为外部变量被掩盖了。

double Lot;

- 它是在start()函数中对一个局部变量的 未初始化声明。默认情况下,它被初始化为零。所有在start()中被调用并有输入参数Lot的函数都会接收一个本地 变量的值,而不是外部变量。唯一的例外是init()中的函数在start()之前执行。在那里,Lot参数(如果它没有被类似地屏蔽)必须得到一个外部变量的值,即0.2。


你引用了错误或不完整的代码。你从哪里调用my_funck()?

 
Korey:

如果是屏蔽,那么为什么其他函数得到的是0,而不是外部规定的0.2?


你需要自己检查这些报表。这里有一个简单的脚本。

//+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
 
extern double Var = 0.0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   Print("Функция init():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc()
   {
   Var = -100;
   Print("Функция MyFunc(): Переменная Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
   {
   Print("Функция deinit():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   double Var = 15;
   Print("Локальная переменная на локальном уровне функции start() Var=",Var);
   MyFunc();
   Print("Локальная переменная на локальном уровне после выполнения функции MyFunc() Var=",Var);
 
   Print("Функция start() завершена");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+


脚本 的结果。