[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 61 1...545556575859606162636465666768...1145 新评论 Leo59 2009.04.10 10:28 #601 亲爱的专家,请回答这个问题。 MetaEditor有方案创建模板的文本文件。它们在创建程序时被向导使用。在模板文本中,指定了创建的程序文件类型的参数。它们之间的参数有标签,在代码文本中没有显示。但终端机以某种方式识别了它们。如果创建了专家顾问,启动功能将在下一个tick之后启动。 如果创建了一个指标,启动功能将在没有tick的情况下启动。标签和其中的所有东西都去哪儿了? Yug 2009.04.10 10:52 #602 我又做了两个测试,看看这一切从何而来。 1.我从ini中读取的不是字符串数组,而是单独的变量。结果如预期,即复制的不是一个值,而是一个引用。 int numCross=0; string Cross_1="-", Cross_2="-", Cross_3="-"; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { string sectionName = "common"; numCross = ReadIniInteger( config_path, sectionName, "numCross", 0); ArrayResize( CrossName, numCross); for (int i=0; i<numCross; i++) CrossName[i] = "-"; sectionName = "cross1"; Cross_1 = ReadIniString( config_path, sectionName, "name", "-"); Print("init.1: Cross_1=", Cross_1); sectionName = "cross2"; Cross_2 = ReadIniString( config_path, sectionName, "name", "-"); Print("init.1: Cross_2=", Cross_2); sectionName = "cross3"; Cross_3 = ReadIniString( config_path, sectionName, "name", "-"); Print("init.1: Cross_3=", Cross_3); Print("init.1: read complete"); Print("init.2: Cross_1=", Cross_1); Print("init.2: Cross_2=", Cross_2); Print("init.2: Cross_3=", Cross_3); Print("-------------------------------"); sectionName = "cross1"; Cross_1 = StringSubstr( ReadIniString( config_path, sectionName, "name", "-"), 0, 0); Print("init.3: Cross_1=", Cross_1); sectionName = "cross2"; Cross_2 = StringSubstr( ReadIniString( config_path, sectionName, "name", "-"), 0, 0); Print("init.3: Cross_2=", Cross_2); sectionName = "cross3"; Cross_3 = StringSubstr( ReadIniString( config_path, sectionName, "name", "-"), 0, 0); Print("init.3: Cross_3=", Cross_3); Print("init.3: read complete"); Print("init.4: Cross_1=", Cross_1); Print("init.4: Cross_2=", Cross_2); Print("init.4: Cross_3=", Cross_3); return(0); } 得到的结果。 2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_2=GBPUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_1=EURUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.3: read complete 2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_2=GBPUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_1=EURUSD 2009.04.10 14:31:42 example AUDUSD,H4: ------------------------------- 2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_2=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_1=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.1: read complete 2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_3=USDJPY 2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_2=GBPUSD 2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_1=EURUSD 2.返回字符串数组,但不是从ini中读取字符串值的函数 string ReadIniString(string FileName, string SectionName, string KeyName, string Default = "") { string ReturnedString = ""; int nValue = GetPrivateProfileStringA( SectionName, KeyName, Default, ReturnedString, 255, FileName); if( nValue > 0) return( ReturnedString); else return( Default); } 用了一个测试函数,它没有调用win api的任何东西 string CrossName[]; int numCross=0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { string sectionName = "common"; numCross = ReadIniInteger( config_path, sectionName, "numCross", 0); ArrayResize( CrossName, numCross); for (int i=0; i<numCross; i++) CrossName[i] = "-"; for (int i=0; i< numCross; i++) { sectionName = StringConcatenate("cross", i+1); CrossName[ i] = someFunc( i+1); Print("init.1: CrossName[", ( i+1), "]=", CrossName[ i]); } Print("init.1: read complete"); for ( i=0; i< numCross; i++) { Print("init.2: CrossName[", ( i+1), "]=", CrossName[ i]); } Print("-------------------------------"); for ( i=0; i< numCross; i++) { sectionName = StringConcatenate("cross", i+1); CrossName[ i] = StringSubstr( someFunc( i+1), 0, 0); Print("init.3: CrossName[", ( i+1), "]=", CrossName[ i]); } Print("init.3: read complete"); for ( i=0; i< numCross; i++) { Print("init.4: CrossName[", ( i+1), "]=", CrossName[ i]); } return(0); } //+------------------------------------------------------------------+ string someFunc(int val) { string ReturnedString = "CROSS_"+ val; return( ReturnedString); } //+------------------------------------------------------------------+ 结果 2009.04.10 14:41:12 例子 AUDUSD,H4: init.4: CrossName[3]=CROSS_3 2009.04.10 14:41:12 例子 AUDUSD,H4: init.4: CrossName[2]=CROSS_2 2009.04.10 14:41:12 例子 AUDUSD,H4: init.4: CrossName[1]=CROSS_1: 阅读完毕 2009.04.10 14:41:12 示例 AUDUSD,H4: init.3: CrossName[3]=CROSS_3 2009.04.10 14:41:12 示例 AUDUSD,H4: init.3: CrossName[2]=CROSS_2 2009.04.10 14:41:12 示例 AUDUSD,H4: init.3: CrossName[1]=CROSS_1 2009.04.10 14:41:12 示例AUDUSD,H4: ------------------------------- 2009.04.10 14:41:12 示例AUDUSD,H4: init.2: CrossName[3]=CROSS_3 2009.04.10 14:41:12 示例AUDUSD,H4: init.2: CrossName[2]=CROSS_2 2009.04.10 14:41:12 示例AUDUSD,H4: init.2: CrossName[1]=CROSS_1 2009.04.10 14:41:12 示例 AUDUSD,H4: init.1: 读取完毕 2009.04.10 14:41:12 示例 AUDUSD,H4: init.1: CrossName[3]=CROSS_3 2009.04.10 14:41:12 示例 AUDUSD,H4: initi.1: CrossName[2]=CROSS_2 2009.04.10 14:41:12 示例 AUDUSD,H4: init.1: CrossName[1]=CROSS_1 已经表明,问题似乎是在转换的 LPTSTR lpReturnedString [out] 一个指向缓冲区的指针,接收 GetPrivateProfileString fi tomql4 string 的检索字符串win api 。 Everlost 2009.04.10 11:17 #603 xruss >> : 从逻辑上讲,我认为应该在信号形成之前定义一个ORD类型,否则如何在交易标准中加以考虑,还有一个问题--即使历史记录为空,也不能开仓() 在私下里回答你--我认为这样做会更有成效。 Дмитрий 2009.04.11 06:57 #604 Reshetov >> : 这要容易得多,不要重新发明轮子,采取一个现成的专家顾问,在马丁格尔上交易,看看它是如何已经实现的。 例如,Universum 3.0。 谢谢你,我完全同意--所有的东西都是很久以前发明的。 Дмитрий 2009.04.11 06:57 #605 xrust >> : '任何新手问题,为了不使论坛变得杂乱无章。不要让专业人士与你擦肩而过。'没有你,哪里都不行。 谢谢你 Eugene 2009.04.12 20:47 #606 在测试器中测试EA 时执行init()函数。 我想把EA的init()函数中的一些外部变量规范化。并使用这些规范化的值从start()调用指标。 我不想在start()中包含这种规范化。 在策略测试器中优化EA的过程中,每次改变外部变量都会执行init()函数吗? Alexander 2009.04.12 21:18 #607 begemot61 писал(а)>> 在测试器中测试EA时执行init()函数。 我想把EA的init()函数中的一些外部变量规范化。 并使用这些归一化的(新)值从start()调用指标。 我不想在start()中包含这种规范化。 在策略测试器中优化EA的过程中,每次改变外部变量都会执行init()函数吗? 是的,这将是 Дмитрий 2009.04.13 04:55 #608 int start() { if (OrdersTotal() == 0 && TimeDayOfWeek(TimeCurrent()) == 5 && TimeHour(TimeCurrent()) == 12 && TimeMinute(TimeCurrent()) == 30 && TimeSeconds(TimeCurrent()) >= 00) { Alert("Тра ляля"); OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red); } 谁能告诉我为什么这里的订单打不开?我做错了什么? Alexander 2009.04.13 05:04 #609 Dimoncheg писал(а)>> 有谁知道为什么这里的订单打不开?我做错了什么? 好吧,这个人...必须等到星期五,如果在那一分钟内有一个勾股,就应该打开。 Дмитрий 2009.04.13 06:53 #610 Roger >> : 好吧,这个人...必须等到星期五,如果在那一分钟内有一个勾股,它应该会打开。 >>这就是问题所在,我在周五或一周中的任何一天做,警报有效,而订单根本就没有打开。 1...545556575859606162636465666768...1145 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
亲爱的专家,请回答这个问题。
MetaEditor有方案创建模板的文本文件。它们在创建程序时被向导使用。在模板文本中,指定了创建的程序文件类型的参数。它们之间的参数有标签,在代码文本中没有显示。但终端机以某种方式识别了它们。如果创建了专家顾问,启动功能将在下一个tick之后启动。 如果创建了一个指标,启动功能将在没有tick的情况下启动。标签和其中的所有东西都去哪儿了?
我又做了两个测试,看看这一切从何而来。
1.我从ini中读取的不是字符串数组,而是单独的变量。结果如预期,即复制的不是一个值,而是一个引用。
得到的结果。
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.4: Cross_1=EURUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.3: read complete
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.3: Cross_1=EURUSD
2009.04.10 14:31:42 example AUDUSD,H4: -------------------------------
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_2=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.2: Cross_1=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.1: read complete
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_3=USDJPY
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_2=GBPUSD
2009.04.10 14:31:42 example AUDUSD,H4: init.1: Cross_1=EURUSD
2.返回字符串数组,但不是从ini中读取字符串值的函数
用了一个测试函数,它没有调用win api的任何东西
结果
2009.04.10 14:41:12 例子 AUDUSD,H4: init.4: CrossName[3]=CROSS_3
2009.04.10 14:41:12 例子 AUDUSD,H4: init.4: CrossName[2]=CROSS_2
2009.04.10 14:41:12 例子 AUDUSD,H4: init.4: CrossName[1]=CROSS_1
: 阅读完毕
2009.04.10 14:41:12 示例 AUDUSD,H4: init.3: CrossName[3]=CROSS_3
2009.04.10 14:41:12 示例 AUDUSD,H4: init.3: CrossName[2]=CROSS_2
2009.04.10 14:41:12 示例 AUDUSD,H4: init.3: CrossName[1]=CROSS_1
2009.04.10 14:41:12 示例AUDUSD,H4: -------------------------------
2009.04.10 14:41:12 示例AUDUSD,H4: init.2: CrossName[3]=CROSS_3
2009.04.10 14:41:12 示例AUDUSD,H4: init.2: CrossName[2]=CROSS_2
2009.04.10 14:41:12 示例AUDUSD,H4: init.2: CrossName[1]=CROSS_1
2009.04.10 14:41:12 示例 AUDUSD,H4: init.1: 读取完毕
2009.04.10 14:41:12 示例 AUDUSD,H4: init.1: CrossName[3]=CROSS_3
2009.04.10 14:41:12 示例 AUDUSD,H4: initi.1: CrossName[2]=CROSS_2
2009.04.10 14:41:12 示例 AUDUSD,H4: init.1: CrossName[1]=CROSS_1
已经表明,问题似乎是在转换的
从逻辑上讲,我认为应该在信号形成之前定义一个ORD类型,否则如何在交易标准中加以考虑,还有一个问题--即使历史记录为空,也不能开仓()
在私下里回答你--我认为这样做会更有成效。
这要容易得多,不要重新发明轮子,采取一个现成的专家顾问,在马丁格尔上交易,看看它是如何已经实现的。
例如,Universum 3.0。
谢谢你,我完全同意--所有的东西都是很久以前发明的。
'任何新手问题,为了不使论坛变得杂乱无章。不要让专业人士与你擦肩而过。'没有你,哪里都不行。
谢谢你
在测试器中测试EA 时执行init()函数。
我想把EA的init()函数中的一些外部变量规范化。
并使用这些规范化的值从start()调用指标。
我不想在start()中包含这种规范化。
在策略测试器中优化EA的过程中,每次改变外部变量都会执行init()函数吗?在测试器中测试EA时执行init()函数。
我想把EA的init()函数中的一些外部变量规范化。
并使用这些归一化的(新)值从start()调用指标。
我不想在start()中包含这种规范化。
在策略测试器中优化EA的过程中,每次改变外部变量都会执行init()函数吗?是的,这将是
int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}
有谁知道为什么这里的订单打不开?我做错了什么?
好吧,这个人...必须等到星期五,如果在那一分钟内有一个勾股,就应该打开。
好吧,这个人...必须等到星期五,如果在那一分钟内有一个勾股,它应该会打开。
>>这就是问题所在,我在周五或一周中的任何一天做,警报有效,而订单根本就没有打开。