初学者的问题 MQL5 MT5 MetaTrader 5 - 页 589 1...582583584585586587588589590591592593594595596...1503 新评论 Artyom Trishkin 2016.05.30 12:17 #5881 admoon: 当一步步检查指标时,我发现在if {}后面的子程序中有一个弹跳,而且其中没有W。下面是一个简化的代码,以澄清这一点。//----输入参数输入int w=10。//---{int i;//---int co=0。 for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}//---为下一次调用返回prev_calculated的值return(rate_total)。}结果(arlet)。2016.05.30 00:45:14.064 1 (EurusD,H1) 112016.05.30 01:10:35.972 1 (Eurusd,H1) 10........... 等至1。2016.05.30 00:45:14.064 1 (Eurusd,H1) 1规则:如果括号中的表达式为真,则执行运算符1。在代码中:operator1始终被执行。我认为if()应该只在括号内的条件为真时工作一次。但实际上它是在每次检查时发生的,所以{}中的所有表达式在每一步都被执行,并啃噬机器时间。 问题:为什么在循环过程中,CO变量从0增长到11?为什么每一步都会触发警报? 我得告诉你多少次?看:你有w等于10, 你检查w是否为10:"if(w==10){co++;Alert(co);}" 你认为这个表达式是真的吗? 那么你为什么会有这个问题呢? Andrey Barinov 2016.05.30 19:06 #5882 admoon: 当一步步检查指标时,我发现在if {}后面的子程序中有一个反弹的触发器,其中没有W。这里有一个简化的代码来澄清这个问题。 //----输入参数 输入int w=10。 //--- { int i; //--- int co=0。 for(i=0;i<=w;i++)if(w==10){co++; Alert(co);} //---为下一次调用返回prev_calculated的值 return(rate_total)。 } 结果(arlet)。 2016.05.30 00:45:14.064 1 (EurusD,H1) 11 2016.05.30 01:10:35.972 1 (Eurusd,H1) 10 ........... 等至1。 2016.05.30 00:45:14.064 1 (Eurusd,H1) 1 规则:如果括号中的表达式为真,则执行运算符1。 在代码中:operator1始终被执行。 我认为if()应该只在括号内的条件为真时工作一次。但实际上它是在每次检查时发生的,所以{}中的所有表达式在每一步都被执行,并啃噬机器时间。 问题:为什么在循环过程中,CO变量从0增长到11?为什么每一步都会触发警报? 关于交易、自动交易系统和交易策略测试的论坛 虫子,虫子,问题 Andrey Barinov, 2016.05.30 10:38 显然,你的代码中有一个错字,想这样写。int i; //--- int co=0; for(i=0;i<=w;i++) { if(i==10) { co++; Alert(co); } } //--- return value of prev_calculated for next call return(rates_total); Arseniy Barudkin 2016.05.31 01:42 #5883 先生们好!我在编写EA 时遇到了一个小问题((EA开立挂单基本没问题,但有时我需要开立非常接近当前价格的订单,那么如何规定挂单会开得尽可能接近? Arseniy Barudkin 2016.05.31 03:00 #5884 barudkinarseniy: 先生们好!我在编写EA时 遇到了一个小问题((EA开立挂单大多是正确的,但有时我需要开立非常接近当前价格的订单,那么如何规定将开立尽可能接近的挂单? 我想我得到了)如果有人感兴趣,这里是它的工作原理 double ilow = iLow(Symbol(),TimeFrames_3,1); double ihigh = iHigh(Symbol(),TimeFrames_3,1); double OpenPriceBuy = NormalizeDouble(MathMax(ihigh,Ask + Point*SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)),Digits); double OpenPriceSell = NormalizeDouble(MathMin(ilow,Bid - Point*SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)),Digits); int StepST = (int)MathMax(OpenPriceBuy - OpenPriceSell,SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)); double lots = LotsByRisk(StepST); admoon 2016.05.31 07:56 #5885 Artyom Trishkin:我得告诉你多少次?看:你有w等于10, 你检查w是否等于10:"if(w==10){co++; Alert(co);}" 你认为这个表达式是真的吗? 那么你为什么会有这个问题呢?我为这个愚蠢的问题道歉,感谢你的耐心和理解。我被机械地移动探头if(w==10){Alert(I,"/",F); 通过程序寻找错误的步骤,让我失望了。当你遇到自己无知的原因时,有时会发生这种情况,但一旦你站在问题之外一段时间,问题就会自己消失。你所认为的 "刺耳",实际上是节目的另一部分提出的一个未说明的要求。谢谢,弗拉基米尔。 mila.com 2016.05.31 19:13 #5886 你好,请问你能帮我解答一下数学问题吗? 如果你知道第一个位置的手数,而且每一个新位置的手数都是以算术级数增加的,那么如何知道第五个位置的手数是多少呢? 第二个选择是,地段随着几何级数 的增加而增加。 Alexey Volchanskiy 2016.05.31 19:20 #5887 mila.com:你好,请问你能帮我解答一下数学问题吗? 如果你知道第一个位置的手数,而且每一个新位置的手数都是以算术级数增加的,那么如何知道第五个位置的手数是多少呢? 第二个选择是,地段随着几何级数的增加而增加。 你被谷歌禁言了吗?对不起,你为什么这么残忍?))算术级数是由一个公式定义的。几何级数 是由公式给出的 mila.com 2016.05.31 19:40 #5888 我不明白,对于第一种变体来说,只要将第一批货物乘以5就可以了,如果增加了起始批次 对于第二个选项:第一个位置的地段*乘数*5 ...但 Alexey Volchanskiy 2016.05.31 20:13 #5889 mila.com:我不明白,从理论上讲,对于第一个选项,你只需要将第一个批次乘以5就可以了。 对于第二个选项,第一个位置的地段*系数*5...但没关系,我自己从学校开始就忘了数学了 ))我翻出一本关于数学的书,重新打出arith的定义。-------------一串数字,从第二个开始,每一个都是通过增加一个常数d从前一个得到的,称为算术级数的差。如果第一项是a1,那么长度为n的arith.prog.的形式是:。a1, a1+d, a1+2*d, ...., a1 + n*dMQL中的代码是这样的,我创建了一个简单的例子#define LEN 5 // задали длину последовательности int start() { int d = 4; // это разность, любое значение int a[LEN]; // тут храним ариф. посл. a[0] = 3; // любое стартовое значение, задаете сами Print(0, " ", a[0]); for (int n = 1; n < 4; n++) { a[n] = a[0] + (n*d); Print(n, " ", a[n]); } } 2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 3 15 2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 2 11 2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 1 7 2016.05.31 23:08:52.433 ChangeTimeFrame EURUSD.e,M1: 0 3 Alexey Volchanskiy 2016.05.31 20:15 #5890 Alexey Volchanskiy:没关系,我自己从学校开始就忘记了数学 )) 我先去散步,然后写几何 程序的代码。 1...582583584585586587588589590591592593594595596...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
当一步步检查指标时,我发现在if {}后面的子程序中有一个弹跳,而且其中没有W。下面是一个简化的代码,以澄清这一点。
//----输入参数
输入int w=10。
//---
{
int i;
//---
int co=0。
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//---为下一次调用返回prev_calculated的值
return(rate_total)。
}
结果(arlet)。
2016.05.30 00:45:14.064 1 (EurusD,H1) 11
2016.05.30 01:10:35.972 1 (Eurusd,H1) 10
........... 等至1。
2016.05.30 00:45:14.064 1 (Eurusd,H1) 1
规则:如果括号中的表达式为真,则执行运算符1。
在代码中:operator1始终被执行。
我认为if()应该只在括号内的条件为真时工作一次。但实际上它是在每次检查时发生的,所以{}中的所有表达式在每一步都被执行,并啃噬机器时间。
问题:为什么在循环过程中,CO变量从0增长到11?为什么每一步都会触发警报?
我得告诉你多少次?
看:你有w等于10,
你检查w是否为10:"if(w==10){co++;Alert(co);}" 你认为这个表达式是真的吗?
那么你为什么会有这个问题呢?
当一步步检查指标时,我发现在if {}后面的子程序中有一个反弹的触发器,其中没有W。这里有一个简化的代码来澄清这个问题。
//----输入参数
输入int w=10。
//---
{
int i;
//---
int co=0。
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//---为下一次调用返回prev_calculated的值
return(rate_total)。
}
结果(arlet)。
2016.05.30 00:45:14.064 1 (EurusD,H1) 11
2016.05.30 01:10:35.972 1 (Eurusd,H1) 10
........... 等至1。
2016.05.30 00:45:14.064 1 (Eurusd,H1) 1
规则:如果括号中的表达式为真,则执行运算符1。
在代码中:operator1始终被执行。
我认为if()应该只在括号内的条件为真时工作一次。但实际上它是在每次检查时发生的,所以{}中的所有表达式在每一步都被执行,并啃噬机器时间。
问题:为什么在循环过程中,CO变量从0增长到11?为什么每一步都会触发警报?
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
Andrey Barinov, 2016.05.30 10:38
显然,你的代码中有一个错字,想这样写。
先生们好!我在编写EA时 遇到了一个小问题((EA开立挂单大多是正确的,但有时我需要开立非常接近当前价格的订单,那么如何规定将开立尽可能接近的挂单?
我得告诉你多少次?
看:你有w等于10,
你检查w是否等于10:"if(w==10){co++; Alert(co);}" 你认为这个表达式是真的吗?
那么你为什么会有这个问题呢?
我为这个愚蠢的问题道歉,感谢你的耐心和理解。我被机械地移动探头if(w==10){Alert(I,"/",F); 通过程序寻找错误的步骤,让我失望了。当你遇到自己无知的原因时,有时会发生这种情况,但一旦你站在问题之外一段时间,问题就会自己消失。你所认为的 "刺耳",实际上是节目的另一部分提出的一个未说明的要求。谢谢,弗拉基米尔。
你好,请问你能帮我解答一下数学问题吗?
如果你知道第一个位置的手数,而且每一个新位置的手数都是以算术级数增加的,那么如何知道第五个位置的手数是多少呢?
第二个选择是,地段随着几何级数 的增加而增加。
你好,请问你能帮我解答一下数学问题吗?
如果你知道第一个位置的手数,而且每一个新位置的手数都是以算术级数增加的,那么如何知道第五个位置的手数是多少呢?
第二个选择是,地段随着几何级数的增加而增加。
你被谷歌禁言了吗?对不起,你为什么这么残忍?))
算术级数是由一个公式定义的。
几何级数 是由公式给出的
我不明白,对于第一种变体来说,只要将第一批货物乘以5就可以了,如果增加了起始批次
对于第二个选项:第一个位置的地段*乘数*5 ...但
我不明白,从理论上讲,对于第一个选项,你只需要将第一个批次乘以5就可以了。
对于第二个选项,第一个位置的地段*系数*5...但
没关系,我自己从学校开始就忘了数学了 ))我翻出一本关于数学的书,重新打出arith的定义。
-------------
一串数字,从第二个开始,每一个都是通过增加一个常数d从前一个得到的,称为算术级数的差。
如果第一项是a1,那么长度为n的arith.prog.的形式是:。
a1, a1+d, a1+2*d, ...., a1 + n*d
MQL中的代码是这样的,我创建了一个简单的例子
没关系,我自己从学校开始就忘记了数学 ))