文章 "MQL5 简介:如何编写简单的EA 交易和自定义指标" - 页 4

 

该 ExpertAdvisor 无法在 MT5 712 版本上运行,至少我无法运行。

出现了 "无法复制指标缓冲区 "的错误信息。

此外,该指标在编译时也会出现警告、

第 53 行" 类型转换可能 导致数据丢失"、

第 54 行 "可能使用了未初始化的变量'day_n'"。

第 62 行的 "可能在未初始化的变量'h_day'上使用"。

第 63 行的 "可能使用未初始化的变量'l_day'"。


能否请您纠正这些问题?

对于我们这些除了 MT5 还有其他软件背景的人来说,这本来是一个很好的例子。

 
如果我想设置 5 个卖出止损和 5 个买入止损挂单,它们之间的差距为 10 个点。我该怎么做?
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

这是一篇非常好的文章,适合初学者和来自 mql4 的用户,其中有一个很好的交易策略示例。

虽然代码中存在一些小缺陷(错误检查并不总是能实现),但如果按照作者的建议在分钟时间框架 内使用,EA 的运行效果会非常好。编译指标时的警告只是警告,并不妨碍您使用它和 EA。

谢谢。

Documentation on MQL5: Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes
  • www.mql5.com
Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes - Documentation on MQL5
 

向人们解释 mql5 并不容易。(就像编程书籍一样,90% 的人都不知道如何开始。例如,他们打开这本关于 C 语言编程的书,第一个 "简单示例 "就用很小的字体写了整整一页。在我的一生中,我只读过一本好的编程书,它可以教任何人编程。究其原因,这些书的作者可能都是优秀的程序员,但不幸的是,他们都是非常糟糕的老师。编程其实可以很简单,当我有更多时间的时候,我就会为MQL4 编程语言编写一个简单的教程来证明这一点。它适合所有人,甚至是完全的初学者。最大的错误是教人们语言的细节,他们的大部分工作应该是ctrl+C和ctrl+v,使用谷歌搜索命令,最重要的是--保持一切都非常简单。我懂 10 多种编程语言(我从 7 岁开始编程),但我仍然被这个 11KB 的 "简易示例"(!!!)的解释方式吓坏了。我想知道有没有真正的编程初学者通过这个例子学会了 MQL5。我对此表示怀疑,如果有的话,用一只手的手指就能数过来。

Fast Dive into MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
You have decided to study MQL5 trading strategies' programming language, but you know nothing about it? We have tried to examine MQL5 and MetaTrader 5 terminal from the newcomers' point of view and have written this short introductory article. In this article, you can find a brief idea of the possibilities of the language, as well as some tips on working with MetaEditor 5 and the terminal.
 
angreeee:

向人们解释 mql5 并不容易。(就像编程书籍一样,90% 的人都不知道如何开始。例如,他们打开这本关于 C 语言编程的书,第一个 "简单示例 "就用很小的字体写了整整一页。在我的一生中,我只读过一本好的编程书,它可以教任何人编程。究其原因,这些书的作者可能都是优秀的程序员,但不幸的是,他们都是非常糟糕的老师。编程其实可以很简单,当我有更多时间的时候,我就会为MQL4 编程语言编写一个简单的教程来证明这一点。它适合所有人,甚至是完全的初学者。最大的错误是教给人们语言的细节,他们的大部分工作应该是ctrl+C 和 ctrl+v,使用谷歌搜索命令,最重要的是--保持一切都非常简单。我懂 10 多种编程语言(我从 7 岁开始编程),但我仍然被这个 11KB 的 "简易示例"(!!!)的解释方式吓到了。我想知道是否有真正的编程初学者通过这个例子学会了 MQL5。我对此表示怀疑,如果有的话,用一只手的手指就能数过来。

你说程序员一般都不是好老师是对的。

但我不同意您说 mql5 是如此难学,主要是对于一个尝试过 10 多种语言的程序员来说。

 
对于像我这样的mql5 编程 初学者来说,这确实是一篇好文章。
 

在实践中,就我的记忆而言,可以改变仓位的一个水平(SL 或 TP),而其他水平保持不变,甚至当保持不变的水平比SYMBOL_TRADE_STOPS_LEVEL 参数中指定的水平更接近当前价格 时也是如此。在创建程序时,我不建议改变头寸参数(水平),使新的头寸参数(水平)不符合检查头寸数据正确性的要求,因为这种情况没有记录,将来可能会得到不同的结果。

 
我复制粘贴了智能交易系统,并尝试用 Strategytester 进行测试。但它没有进行任何交易。我是 MQL5 和编程方面的新手,也许我只是犯了一个愚蠢的错误。它编译时没有任何错误。我真的很喜欢这个策略!有人知道为什么它不能在 Strategytester 上运行吗?
 

大家好!

只有当

request.type_filling=ORDER_FILLING_IOC;

request.type_time =ORDER_TIME_DAY

https://www.mql5.com/ru/forum/1156/page9#comment_2359257 也有类似情况

这是我的经纪商 FxPro 的特殊情况吗?

Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
  • www.mql5.com
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих". - Страница 9 - Категория: статьи и техническая библиотека по автоматическому трейдингу
 

我是mql5 编程 方面的新手。


我想通过这个示例来学习,但我对建立指标末尾的循环有点迷茫。他到底在哪里给 day_n 变量赋值?


因为循环会检查day_n<day_t。程序如何知道 day_n 的值?


for(i=prev_calculated;i<rates_total;i++)
     {
      day_t=time[i]/PeriodSeconds(ATRtimeframe);
      if(day_n<day_t)
        {
         day_n=day_t;
         h_day=high[i];
         l_day=low[i];
        }
        else
        {
         if(high[i]>h_day) h_day=high[i];
         if(low[i]<l_day) l_day=low[i];
        }
      bu[i]=l_day+atr[1];
      bd[i]=h_day-atr[1];
     }


它又是如何计算出来的?让我们假设 rate_total = 10,并且还没有计算过的条形图。因此 prev_calculated = 0


day_t=time[0] (今天!因为是倒数)/PeriodSeconds......因为是从 1970 年开始计算,所以假设是从 10 天前开始计算。

所以 day_t=10.现在检查 dayt 是否大于 dayn。我不知道 dayn,但我知道 dayt=10。因为没有值,所以我会假设 dayn 为零。

那么 dayn 也就变成了 10。好的。

prev_calculated + 1= 1。

DayT=time[1](昨天)/period......记住,是从 10 天前开始计算......但现在只计算到昨天,应该是 9,对吗?

但现在 dayN < dayT 是假的。然后开始执行 else 表达式。好吧,我明白了。我明白了。


然后计算所有的 bu[] 和 bd[]。好的。当 prev < 总比率为假时,循环结束。

但是,当新的条形图出现,并且它再次变为 true 时,我会再次从零开始计算吗?还是从 10 开始,直接进入 else 部分?


谢谢!!!!