关于MQL4编程的在线书籍的测试版 - 由Sergey Kovalev (SK.)撰写。 - 页 9

 
Climber:
通过SK"大型程序中的订单记账 " 找到了这篇关于复杂订单记账的好文章。
说实话,我在想这整个事情是否是一个骗局。
这不是一个噱头,但你必须保持开放的心态。 阅读Korey 一页开始的帖子可以得到更多的信息。请看文章《我的第一个 "圣杯"》。
 
我以前读过关于圣杯的 文章 :)
但与关于圣杯的文章中描述的人物不同,我不像他那样思考。"只有我!"。我认为这里有问题,或者说现在只是运气。虽然,看看冠军的结果,你可以看到三个月后的结果要好得多,这基本上意味着没有什么是不可能的。然而,人们不禁要问,谁会在现实世界中给予这样一个 "快速 "的发展?
 
Climber:
然而,人们不禁要问,在现实世界中谁会允许这样的 "快速 "发展?

这是一个简单的问题。而答案很明显:诚实工作的人(这里不讨论经纪人)。

更困难的问题是,专家顾问是否产生了稳定、高的结果?还是说这只是一个合适的故事或侥幸?

 
SK. писал (а):
更困难的问题是顾问是否真的给出了一致的意见。
高的结果?还是说这只是与故事的契合,或者说是一种侥幸?
嗯,我还没有,但如果我有,我想它会帮助我理解很多。 我也倾向于机会。这就是我目前手动操作的演示。

我以前只是有更温和的结果。总的来说,在学习你的书(近一个月)和整个语言的过程中,我学到了很多交易知识,这些知识是我在学习外汇的两年中不知道和不怀疑的。我现在甚至在想,在不知道那么多的情况下,我怎么能赚到钱呢))。我想即使现在我什么都不知道也能赚这么多。 只是当我第一次尝试用模拟交易时,我感觉我每月能赚的钱不超过300美元。这也不错,特别是考虑到我对各种老板的过敏:)我曾经在我的博客中写过我的第一个专家顾问,我从未听说过它。

我在第一次读这本书的一周内就写了我的第一个顾问。但这不是我写的,我复制了它,只替换了有交易标准的部分,其余部分来自使用MA的EA实例。但是当我写的时候,我只想知道如果我这样做会怎么样。我的意思是简单地使用测试器的能力,而不必长时间手动检查。 我没有任何像文章中关于圣杯 的想法。在这方面,我比较踏实:)我对这个结果很满意,因为我已经完全失去了我的存款(少了一个变体)。这个想法简单得要命,所以不检查它是一种罪过。但最后一个策略在使用MQL4工具描述方面比较困难(对我来说),因此我必须用自己的双手来工作。但它在手动模式下的结果需要专家顾问的进一步发展。因此,我正在努力,慢慢地,但也很慢地,把它写出来。
 
Climber:
我只是以前的结果要温和得多。而总的来说,在学习你的书(近一个月)和整个语言的过程中,我学到了很多交易方面的知识,这些知识是我在认识外汇的2年中不知道的,也没有怀疑过。我现在甚至在想,在不太了解的情况下,我怎么能赚到钱呢......)。
但最后一个策略在通过MQL4描述方面更复杂(对我来说),所以我必须手动工作。但它在手动模式下的结果只是需要专家顾问的进一步发展。所以我在努力,慢慢地,但在写。
在我看来,创建一个强大的盈利战略的劳动投入比学习语言的劳动投入要高两个数量级(100倍)。从本质上讲,编程只是一种技术工具,在很大程度上是可以预测的,因此要服从于策略创造者的意志。但公平地说,也必须说,深入研究编程的细节,交易者开始以更清晰的眼光看待整个市场交易策略的现象。从这个意义上说,很难高估编程实践。 因此,决定依靠自动交易的开发者是一百个正确。
 

到SK

变量, .

你有以下写法。

" 所有的数组都是静态的,即有一个静态的形式,即使在初始化过程中没有明确说明这一点" 。

然而

假设一个指标,调用的子程序有一个数组。

1)

double summ[]; //标准函数 .................................... .......... 被调用。

i=ArrayMinimum(summ,iter,0); // 第二次调用时出错。<为ArrayMinimum函数设定的起始位置0>。

2)错误的变体

static double summ[];

//..............................................

i=ArrayMinimum(summ,iter,0); // 第二次调用时有同样的错误。<为ArrayMinimum函数设定的起始位置0>。

3) 无错误的变体

double summ[1000];

..............................................

i=ArrayMinimum(summ,iter,0); // 正常执行

4) 无错误的变体

static double summ[1000];

..............................................

i=ArrayMinimum(summ,iter,0); // 正常执行



从例子1和2可以看出,数组是动态分配的。

例2表明,没有维度的数组没有被初始化为静态数组(这是显而易见的),但这并没有在编译器错误中显示出来((

例3 4意味着只有预定义数组有静态分配。

有趣的是,执行系统捕捉到了错误,并确定了例1和例2,这表明一个经过深思熟虑的实时终端系统。也就是说,数组的行为像一个对象。为开发者点赞。

然而,在简单的变量方面,并非一切都进展得如此顺利

double instik(int &t) // 这个函数改变了调用程序中的变量。

{

t++;

}

这个调用在每一个刻度上计数,如果

//...........................................

静态 int tik;


instik(tik)。

打印(" tick=",tik)。

//...............................

而这并不算数,因为内存分配是动态的,第二次调用的链接地址并不匹配。

................

int tik;


instik(tik)。

打印(" tick=",tik)。

// instik子程序给未知字节增量,但终端没有崩溃!!!!。再次对开发者表示赞赏。

 
SK. писал (а):

但为了公平起见
也应该说,通过深入了解编程的细节
交易员开始审视整个市场-交易-策略的现象
有了更清晰的视野。随着他们经验的积累,他们筛选出了
随着经验的积累,错误的思想路线被消除,有前途的思想路线被确定。
我100%同意。起初我甚至感到惊讶,我认为我是在努力学习编程,我学到的交易知识比我以前知道的要多。所以我暂时要积累经验:)
 
Korey:

到SK

变量,静态变量。

...


我认为你忽略了这样一个事实,即特殊函数在每一次勾选时 都会重新运行。静态变量保留其值,不被初始化,而非静态变量则根据代码进行初始化。在你的代码中,整数变量tik默认被初始化为零。

//----------------------------------------------------------------------------------
int start()
   {
   int tik;                // Инициализация нолём на каждом тике
   instik(tik);            // Вызов функции, передача параметра по ссылке
   Alert (" tick=",tik);   // Всё время выводит 1, как и ожидается
   return;
   }
//----------------------------------------------------------------------------------
double instik(int &t)      // Функция изменяет переменную в вызывающей программе
   {                       // При каждом обращении заходит 0
   t++;                    // Увеличение значения на 1, как и заказано, т.е.
   }                       // ..при каждом исполнении уходит 1
//----------------------------------------------------------------------------------

在instik()中,一切都按计划发生。在start()中,到Alert()的时刻,tik变量的值是1,这就是Alert()的输出。

但这并不是全部的真相。由于tik变量没有被声明为静态变量,它的值没有被保存。也就是说,在下一次调用执行特殊函数start()时,tik变量将再次被初始化为0。而一切又重新开始。因此,警报器安全地一个接一个地输出。

 
祝贺谢尔盖-科瓦列夫!

MQL4语言 教程的发布定于2月1日,它已经被整合到MQL4.community网站中。翻译成英文的工作正在顺利进行中。
 
谢尔盖!
如何在专家顾问中实现关闭订单的可能性 - 通过反订单? 我在教程中没有找到...
原因: