问吧! - 页 176 1...169170171172173174175176177178179180181182 新评论 Mladen Rakic 2013.03.04 18:09 #1751 PS:只是提醒一下--iCustom()调用中的第三个参数 是指标名称。第一个参数是符号,第二个参数是所需的时间框架。 mladen: 像这样做。array[0]=iClose("EURUSD",0,0); [/PHP] and so on. That way array will be filled with close prices for symbols you select. If you are using a custom indicator then the form is the following : [PHP]array[0]=iCustom("EURUSD",0,"indicator name",0,0); [删除] 2013.03.04 20:16 #1752 辽宁沈阳 我正在使用icustom在一个循环中调用一个自定义指标,用于几个货币对。我可以在专家标签上看到,该指标被卸载,然后为下一个货币对重新加载。 这是否意味着iCustom调用在每次加载时都会重新计算图表中整个最大条数的值? 另外,如果你为N条和N+1条分别连续调用它,第二次调用是否需要完全重新计算? 最后,如果连续调用的是不同的缓冲区,是否每个都要重新计算。 我记得你说过,每个iCustom调用都会产生一个单独的实例,所以我的推测是,每个实例都会被重新计算。 谢谢你的回答。 Tzuman Mladen Rakic 2013.03.04 20:44 #1753 Tzuman, Metatrader为每一组新的参数值创建一个新的指标实例(缓冲区编号 和索引除外)。 一个例子 - 以下两个调用: iCustom(NULL,0, "name",1,0,0)。iCustom(NULL,0, "name",2,0,0)。 将创建一个指标的两个实例(即使你用 "n "代替1和2,并在新调用iCustom()之前给n分配不同的值,它也会创建单独的实例。这就是为什么有些自适应指标不能用iCustom()来写,而必须用函数的形式来写。) 现在这就是关于实例的问题。但如果指标被加载后又被卸载,这通常是参数的问题(卸载部分通常表明这一点)。如果参数类型不匹配,那么它将做 "加载-卸载 "的特技。检查是否意外地传递给iCustom的一些参数不是预期的类型(或者一些参数被意外地省略了,这可能导致参数类型的混淆)。 Tzuman: 冯小刚我正在使用icustom在一个循环中调用一个自定义指标,用于几个货币对。我可以在专家标签上看到,指标被卸载,然后为下一个交易对重新加载。 这是否意味着iCustom调用在每次加载时都会重新计算图表中整个最大条数的值? 另外,如果你为N条和N+1条分别连续调用它,第二次调用是否需要完全重新计算? 最后,如果连续调用的是不同的缓冲区,是否每个都要重新计算。 我记得你说过,每个iCustom调用都会产生一个单独的实例,所以我的推测是,每个实例都会被重新计算。 谢谢你的回答。 朱曼 MaaTini 2013.03.05 01:12 #1754 我不想打断你们最近的讨论 请看一下这个新的主题 https://www.mql5.com/en/forum/182212 Mladen Rakic 2013.03.05 05:41 #1755 我看到,mrtools已经解决了这个问题。 MaaTini: 我不想打断你们最近的讨论请看一下这个新的主题 https://www.mql5.com/en/forum/182212 [删除] 2013.03.05 22:51 #1756 mladen: Tzuman。Metatrader为每一组新的参数值创建一个新的指标实例(缓冲区编号和索引除外)。 举个例子 - 以下两个调用: iCustom(NULL,0, "name",1,0,0);iCustom(NULL,0, "name",2,0,0)。将创建一个指标的两个实例(即使你用 "n "而不是1和2,并且在新调用iCustom()之前给n分配不同的值,它也会创建单独的实例。这就是为什么有些自适应指标不能用iCustom()来写,而必须用函数的形式来写。) 现在这就是关于实例的。但如果指标被加载后又被卸载,这通常是参数的问题(卸载部分通常表明)。如果参数类型不匹配,那么它将做 "加载-卸载 "的特技。检查是否意外地有一些传递给iCustom的参数不是预期的类型(或者一些参数被意外地省略了,这可能导致参数类型的混淆)。 非常感谢你的解释。我以为加载/卸载是由于符号在循环的每次迭代中发生变化,所以它必须加载所有新的数据值。 例如:iCustom("EURUSD",0, "name" ,1,0,0); & iCustom("GBPUSD",0,name" ,1,0,0)。 我将仔细检查参数,但我已经着手写我自己的MA平均函数,有一些抄袭。 只是在任务管理器中看一下处理器的利用率,看起来我的cpu使用率下降了90-95%。 我很高兴 Rod Barias 2013.05.04 14:51 #1757 我是一个编码新手,你能帮助我在 "停止打开多个订单时,takeprofit击中 "我尝试这样的代码,但不工作,你能帮助我吗? static datetime closeT; for(int a=OrdersHistoryTotal()-1; a>=0; a--) {if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==true) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime();if((buy==true|| sell==true) && closeT==Time[0]) {buy=false; sell=false; } } } } Rod Barias 2013.05.04 18:27 #1758 谢谢mladen,我将尝试你的代码。 Mladen Rakic 2013.05.04 18:34 #1759 RBarias: 你好,大师,我是编码的新手,你能帮助我在 "当止盈被击中时停止打开多个订单",我尝试了这样的代码,但没有工作,请你帮助我。staticdatetime closeT;for(int a=OrdersHistoryTotal()-1; a>=0; a--){if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==true) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime();if((buy==true|| sell==true) && closeT==Time[0]) {buy=false; sell=false; }}}} 你可以试试这样的方法(它将检查最后一个平仓的订单是否在当前栏中平仓,以及是否击中了获利)。 datetime closeT= 0; int ticket=-1; for(int a=OrdersHistoryTotal()-1; a>=0; a--) { if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)) if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime(); ticket=OrderTicket(); } } if (ticket>-1) { OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY); if(iBarShift(symb,0,closeT)==0 && OrderClosePrice()==OrderTakeProfit()) { buy =false; sell=false; } } Ger 2014.05.19 03:51 #1760 嗨,mladen。 你的Symbols.mq4脚本在MT4 build 509中完美运行,但在build 636中出现了文件错误(当打开symbols.raw时)。 你能分享一下MT4 636版的更新版本吗? 非常感谢你。 谢谢。 Timo. 1...169170171172173174175176177178179180181182 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
PS:只是提醒一下--iCustom()调用中的第三个参数 是指标名称。第一个参数是符号,第二个参数是所需的时间框架。
像这样做。
and so on. That way array will be filled with close prices for symbols you select. If you are using a custom indicator then the form is the following :
[PHP]array[0]=iCustom("EURUSD",0,"indicator name",0,0);辽宁沈阳
我正在使用icustom在一个循环中调用一个自定义指标,用于几个货币对。我可以在专家标签上看到,该指标被卸载,然后为下一个货币对重新加载。 这是否意味着iCustom调用在每次加载时都会重新计算图表中整个最大条数的值? 另外,如果你为N条和N+1条分别连续调用它,第二次调用是否需要完全重新计算? 最后,如果连续调用的是不同的缓冲区,是否每个都要重新计算。
我记得你说过,每个iCustom调用都会产生一个单独的实例,所以我的推测是,每个实例都会被重新计算。
谢谢你的回答。
Tzuman
Tzuman,
Metatrader为每一组新的参数值创建一个新的指标实例(缓冲区编号 和索引除外)。
一个例子 - 以下两个调用:
将创建一个指标的两个实例(即使你用 "n "代替1和2,并在新调用iCustom()之前给n分配不同的值,它也会创建单独的实例。这就是为什么有些自适应指标不能用iCustom()来写,而必须用函数的形式来写。)
现在这就是关于实例的问题。但如果指标被加载后又被卸载,这通常是参数的问题(卸载部分通常表明这一点)。如果参数类型不匹配,那么它将做 "加载-卸载 "的特技。检查是否意外地传递给iCustom的一些参数不是预期的类型(或者一些参数被意外地省略了,这可能导致参数类型的混淆)。
冯小刚
我正在使用icustom在一个循环中调用一个自定义指标,用于几个货币对。我可以在专家标签上看到,指标被卸载,然后为下一个交易对重新加载。 这是否意味着iCustom调用在每次加载时都会重新计算图表中整个最大条数的值? 另外,如果你为N条和N+1条分别连续调用它,第二次调用是否需要完全重新计算? 最后,如果连续调用的是不同的缓冲区,是否每个都要重新计算。
我记得你说过,每个iCustom调用都会产生一个单独的实例,所以我的推测是,每个实例都会被重新计算。
谢谢你的回答。
朱曼我不想打断你们最近的讨论
请看一下这个新的主题
https://www.mql5.com/en/forum/182212
我看到,mrtools已经解决了这个问题。![](https://c.mql5.com/forextsd/smiles/smile.png)
我不想打断你们最近的讨论
请看一下这个新的主题
https://www.mql5.com/en/forum/182212Tzuman。
Metatrader为每一组新的参数值创建一个新的指标实例(缓冲区编号和索引除外)。
举个例子 - 以下两个调用:
将创建一个指标的两个实例(即使你用 "n "而不是1和2,并且在新调用iCustom()之前给n分配不同的值,它也会创建单独的实例。这就是为什么有些自适应指标不能用iCustom()来写,而必须用函数的形式来写。)
现在这就是关于实例的。但如果指标被加载后又被卸载,这通常是参数的问题(卸载部分通常表明)。如果参数类型不匹配,那么它将做 "加载-卸载 "的特技。检查是否意外地有一些传递给iCustom的参数不是预期的类型(或者一些参数被意外地省略了,这可能导致参数类型的混淆)。非常感谢你的解释。我以为加载/卸载是由于符号在循环的每次迭代中发生变化,所以它必须加载所有新的数据值。
例如:iCustom("EURUSD",0, "name" ,1,0,0); & iCustom("GBPUSD",0,name" ,1,0,0)。
我将仔细检查参数,但我已经着手写我自己的MA平均函数,有一些抄袭。 只是在任务管理器中看一下处理器的利用率,看起来我的cpu使用率下降了90-95%。 我很高兴![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
我是一个编码新手,你能帮助我在 "停止打开多个订单时,takeprofit击中 "我尝试这样的代码,但不工作,你能帮助我吗?
static datetime closeT;
for(int a=OrdersHistoryTotal()-1; a>=0; a--) {if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==true) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime();if((buy==true|| sell==true) && closeT==Time[0]) {buy=false; sell=false; } } } }
谢谢mladen,我将尝试你的代码。
你好,大师,我是编码的新手,你能帮助我在 "当止盈被击中时停止打开多个订单",我尝试了这样的代码,但没有工作,请你帮助我。
staticdatetime closeT;
for(int a=OrdersHistoryTotal()-1; a>=0; a--){if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY)==true) {if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime()) { closeT=OrderCloseTime();if((buy==true|| sell==true) && closeT==Time[0]) {buy=false; sell=false; }}}}你可以试试这样的方法(它将检查最后一个平仓的订单是否在当前栏中平仓,以及是否击中了获利)。
int ticket=-1;
for(int a=OrdersHistoryTotal()-1; a>=0; a--)
{
if(OrderSelect(a,SELECT_BY_POS,MODE_HISTORY))
if(OrderMagicNumber()==magic && OrderSymbol()==symb && closeT<OrderCloseTime())
{
closeT=OrderCloseTime();
ticket=OrderTicket();
}
}
if (ticket>-1)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_HISTORY);
if(iBarShift(symb,0,closeT)==0 && OrderClosePrice()==OrderTakeProfit())
{
buy =false;
sell=false;
}
}嗨,mladen。
你的Symbols.mq4脚本在MT4 build 509中完美运行,但在build 636中出现了文件错误(当打开symbols.raw时)。
你能分享一下MT4 636版的更新版本吗?
非常感谢你。
谢谢。
Timo.