inputstring Symbol_Main="GBPUSDrfd"; //Валютная пара, на которую ставим советник//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
/* Определим график валютной пары, на который будем устанавливать советник*/string currency_chart=SymbolInfoString(Symbol(),SYMBOL_DESCRIPTION);
if(currency_chart==Symbol_Main) //если график валютной пары совпадает со входным параметром
{
/* выводим окно сообщений на торговом терминале и продолжаем работу советника */MessageBox("Работа советника на данной валютной паре разрешена!");
return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
}
else//в противном случае, если график валютной пары не совпадает со входным параметром
{
/* выводим окно сообщений на торговом терминале и закрываем советник */MessageBox("Работа советника на данной валютной паре запрещена! Выходим!");
return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
}
}
大家今天好,心情好
我继续学习MQL5编程语言。我对Vasiliy Sokolov的代码 做了一个小改动,按照专家顾问算法的原意,每天只开一个仓。变化以黄色显示。
最好的问候,弗拉基米尔。
OnInit块也是想多了,还是写得不太正确。首先,你应该尽量写标识符,而不是数字。返回INIT_SUCCEEDED,而不是-1。第二,这里的开关是过度的。应该使用'如果'或'开关'。首先你必须写一个,然后写另一个--只是油。
第三,我们需要监控所有的账户类型。我们有Demo,然后我们有Real。然后是竞赛。但是,即使没有第三个账户,也应该有一个存根,可以抓住所有其他的变体。
可能解释一下例外情况的工作原理会更合理,否则就无法理解为什么对你不知道的东西要有任何控制。
在最夸张的意义上,它应该是这样的。
1.启动一个程序来运行
2.通过算法工作,从两个方向退出来。
a) 是的--算法正确。
b) 错--该算法没有发挥作用
同时,在a)方面的工作意味着这里满足了程序员想要实现的所有选项,而在b)方面则是其他所有的选项,而这并不重要,如果需要或不需要。也就是说,程序员只实现他/她想要的功能,其他的都应该被排除在外。
解释例外情况的工作原理可能更有意义,否则就无法理解为什么你甚至要控制你不知道的东西。
在最夸张的情况下,它应该是这样的。
1.启动一个程序来运行
2.通过算法工作,从两个方向退出来。
a) 是的--算法正确。
b) 错--该算法没有发挥作用
同时,在a)方面的工作意味着这里满足了程序员想要实现的所有选项,而在b)方面则是其他所有的选项,而这并不重要,如果需要或不需要。也就是说,程序员只实现他或她插入的功能,而其他的东西都应该作为异常抛出。
你好,康斯坦丁!谢谢你的澄清。
亲爱的参与者我 想再次感谢你们所有的建设性建议和意见,这些建议和意见对我学习MQL5编程语言 很有帮助。
现在我暂停了,因为我的主要工作不允许我把很多时间和注意力放在自学上,但现在主要的结果已经达到了--我理解了编程的基本原理,阅读了第三方代码并编写了自己的功能。
我将公布 Trailing_Stop (v.1).mq5 专家顾问的版本,并对每行代码进行详细的评论,以编程学校一年级学生可以接受的形式公布,正如我之前承诺的那样,但要晚一点。
问候,弗拉基米尔。
大家今天好,心情好
我继续学习MQL5编程语言。最后,我有足够的时间来写一个版本的专家顾问,在每一行代码上都有详细的评论,其形式可供编程学校的一年级学生使用。由于专家顾问的代码相当庞大,我将其作为一个文件发布,名为Trailing_Stop_gv.22.mq5。
在发布代码之前,我们在策略测试器中检查了专家顾问。没有发现问题。专家顾问中使用的是净值化的头寸核算系统。这种会计制度意味着在账户的一个时间点上,只能有一个相同符号(证券)的未平仓头寸。
在这个时间点上,专家顾问已经实现了以下能力。
这个版本的专家顾问实现了瓦西里-索科洛夫之前建议的大部分提示。
警告!!!
这个专家顾问是根据模拟账户的自学计划开发的,它只用于培训目的!它不是用来在真实账户上进行交易和盈利的!
真诚的,弗拉基米尔。
大家今天好,心情好
我继续学习MQL5编程语言。最后,我有足够的时间来写一个版本的专家顾问,在每一行代码上都有详细的评论,其形式可供编程学校的一年级学生使用。由于专家顾问的代码相当繁琐,我将其作为一个名为Trailing_Stop(v.2).mq5 的文件发布。
在发布代码之前,我们在策略测试器中检查了专家顾问。没有发现问题。专家顾问中使用的是净值化的头寸核算系统。这种会计制度意味着在账户的一个时间点上,同一符号(金融工具)只能有一个未结头寸。
在这个时间点上,专家顾问已经实现了以下能力。
这个版本的专家顾问实现了瓦西里-索科洛夫之前建议的大部分提示。
警告!!!
这个专家顾问是根据模拟账户的自学计划开发的,它只用于培训目的!它不是用来在真实账户上进行交易和盈利的!
真诚的,弗拉基米尔。
你好! - 它不能编译。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
想通了--不含括号的名称创建Trailing_Stop(v.2) 专家顾问
你好!--它不能编译。
你好!刚刚从网站上下载了文件,并在我的MetaEditor中进行了检查,一切编译正常。
问候,弗拉基米尔。
你好!刚刚从网站上下载了文件,并在我的MetaEditor中进行了检查,一切编译正常。
问候,弗拉基米尔。
谢谢你的工作。我在创建专家顾问时没有正确输入名称。
谢谢你的工作。我在创建专家时没有正确地输入名字,一切都正常。
我的荣幸!
问候,弗拉基米尔。
亲爱的参与者
我想再次感谢你们所有的建设性建议、提示和意见,这有助于我学习MQL5编程语言的 基础知识。特别感谢Vasily Sokolov!上帝保佑你们所有人!
向大家致以崇高的敬意,弗拉基米尔。
大家今天好,心情好
我继续学习MQL5编程语言。我目前正在为一个新的EA编写代码。我面临着一个问题,我不完全了解如何解决。任务似乎很简单--我想让我的专家顾问在货币对的图表上工作,这是在EA的输入参数中设置的。如果我们试图(例如,错误地)将其安装在另一个货币对的图表上,专家顾问应该发出无法继续工作的警告。
以下是程序代码的概要。
编译器没有显示任何错误。不起作用的代码用黄色标出。也许这是因为我不太理解 SYMBOL_DESCRIPTION 标识符的含义 -- 字符的字符串描述。我试图使用其他标识符,但结果是一样的。也许, 这里根本就不需要SymbolInfoString() 函数 ?我写了货币对GBPUSDrfd 的名字,只是因为我打算使用Alpha-Forex的专家顾问,而这个经纪商的所有符号都以rfd 结尾。
尊敬的专家顾问,请告诉我应该朝什么方向思考!?
问候,弗拉基米尔。