//----------------------------------------------------------------------------------intstart(){inttik; // Инициализация нолём на каждом тикеinstik(tik); // Вызов функции, передача параметра по ссылкеAlert(" tick=",tik); // Всё время выводит 1, как и ожидаетсяreturn;
}//----------------------------------------------------------------------------------doubleinstik(int &t)// Функция изменяет переменную в вызывающей программе{// При каждом обращении заходит 0t++; // Увеличение значения на 1, как и заказано, т.е.}// ..при каждом исполнении уходит 1//----------------------------------------------------------------------------------
通过SK"大型程序中的订单记账 " 找到了这篇关于复杂订单记账的好文章。
说实话,我在想这整个事情是否是一个骗局。
但与关于圣杯的文章中描述的人物不同,我不像他那样思考。"只有我!"。我认为这里有问题,或者说现在只是运气。虽然,看看冠军的结果,你可以看到三个月后的结果要好得多,这基本上意味着没有什么是不可能的。然而,人们不禁要问,谁会在现实世界中给予这样一个 "快速 "的发展?
然而,人们不禁要问,在现实世界中谁会允许这样的 "快速 "发展?
这是一个简单的问题。而答案很明显:诚实工作的人(这里不讨论经纪人)。
更困难的问题是,专家顾问是否产生了稳定、高的结果?还是说这只是一个合适的故事或侥幸?
更困难的问题是顾问是否真的给出了一致的意见。
高的结果?还是说这只是与故事的契合,或者说是一种侥幸?
我以前只是有更温和的结果。总的来说,在学习你的书(近一个月)和整个语言的过程中,我学到了很多交易知识,这些知识是我在学习外汇的两年中不知道和不怀疑的。我现在甚至在想,在不知道那么多的情况下,我怎么能赚到钱呢))。我想即使现在我什么都不知道也能赚这么多。 只是当我第一次尝试用模拟交易时,我感觉我每月能赚的钱不超过300美元。这也不错,特别是考虑到我对各种老板的过敏:)我曾经在我的博客中写过我的第一个专家顾问,我从未听说过它。
我在第一次读这本书的一周内就写了我的第一个顾问。但这不是我写的,我复制了它,只替换了有交易标准的部分,其余部分来自使用MA的EA实例。但是当我写的时候,我只想知道如果我这样做会怎么样。我的意思是简单地使用测试器的能力,而不必长时间手动检查。 我没有任何像文章中关于圣杯 的想法。在这方面,我比较踏实:)我对这个结果很满意,因为我已经完全失去了我的存款(少了一个变体)。这个想法简单得要命,所以不检查它是一种罪过。但最后一个策略在使用MQL4工具描述方面比较困难(对我来说),因此我必须用自己的双手来工作。但它在手动模式下的结果需要专家顾问的进一步发展。因此,我正在努力,慢慢地,但也很慢地,把它写出来。
我只是以前的结果要温和得多。而总的来说,在学习你的书(近一个月)和整个语言的过程中,我学到了很多交易方面的知识,这些知识是我在认识外汇的2年中不知道的,也没有怀疑过。我现在甚至在想,在不太了解的情况下,我怎么能赚到钱呢......)。
但最后一个策略在通过MQL4描述方面更复杂(对我来说),所以我必须手动工作。但它在手动模式下的结果只是需要专家顾问的进一步发展。所以我在努力,慢慢地,但在写。
到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
变量,静态变量。
...我认为你忽略了这样一个事实,即特殊函数在每一次勾选时 都会重新运行。静态变量保留其值,不被初始化,而非静态变量则根据代码进行初始化。在你的代码中,整数变量tik默认被初始化为零。
在instik()中,一切都按计划发生。在start()中,到Alert()的时刻,tik变量的值是1,这就是Alert()的输出。
但这并不是全部的真相。由于tik变量没有被声明为静态变量,它的值没有被保存。也就是说,在下一次调用执行特殊函数start()时,tik变量将再次被初始化为0。而一切又重新开始。因此,警报器安全地一个接一个地输出。
MQL4语言 教程的发布定于2月1日,它已经被整合到MQL4.community网站中。翻译成英文的工作正在顺利进行中。
如何在专家顾问中实现关闭订单的可能性 - 通过反订单? 我在教程中没有找到...