[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 60 1...535455565758596061626364656667...631 新评论 Igor Makanu 2012.04.08 07:21 #591 7777877: 参数转移是指通过参照物进行的参数转移?这里是通过参考的参数 转移,做一个这样的脚本。 int start(){ int res = 999; Print("func = ",func(res)," , res = ",res); return(0); } //__________________________ int func(int &a){ a = 10; return(a*10); } 专家标签将显示以下记录:2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10 并试图回答为什么我们分配给res =999;而日志得到res = 10的问题。 Sergey Dymov 2012.04.08 08:06 #592 你能告诉我如何连接这些图书馆吗?它们存在于mqh文件中,但在复制时,它们给出了 'strlib.mqh' - 无法打开程序文件 [Deleted] 2012.04.08 08:12 #593 IgorM:这里是链接中的参数 转移,做一个这样的脚本。专家标签将显示以下条目:2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10并尝试回答为什么我们指定res =999;但在日志中得到res = 10的问题。 以下是我的解释。 打印函数调用用户函数func。参数res=999被传递给func函数。当func函数本身被评估时,参数a=10被使用。值a*10=100被传回调用func函数的地方。由于我们最终得到的是res=10,我由此推断,通过引用传递参数 意味着:你可以将相关类型的任何值(在本例中,res=999)传递给被调用的函数(在本例中,传递给func),但函数本身将以该值进行评估(即(即在我们的例子中,a=10),它将在函数本身中被初始化(在特定情况下,它也可以与传递到被调用函数中的值相一致,即在本例中,传递到func中)。而在将函数中计算出的值(在本例中为func)转移回函数调用字符串时,变量(在本例中为res)将已经有一个与之前不同的值,即它在函数func计算时得到的值(即在本例中为res=10)。所以:当通过引用将一个参数传入一个函数时,在一个被评估的函数中,参数值可能会改变,而且,在函数调用字符串中返回计算值后,这个参数将有一个改变的(在特定情况下,相同的)值,它是在评估被调用函数时收到的。 我说对了吗? Igor Makanu 2012.04.08 08:18 #594 7777877: 当一个参数通过引用 传递给一个函数时,参数的值可以 在被评估的函数中改变 是的,它是 [Deleted] 2012.04.08 08:24 #595 IgorM: 这就对了。 衷心感谢您!!!"。 [Deleted] 2012.04.08 09:23 #596 请告诉我,我想对订单进行修改,这样EA就会在我指定的时间改变止损值,但它开始变得愚蠢。 以下是我的代码 extern int tp = 350; // profit value takeprofit extern int sl = 400; // loss value stoploss int ticket; int start() { //---- if (OrdersTotal()==0 && Hour() ==2 && Minute( )==0) //订单在终端时间2:00打开 ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",123,0,Red); //---- if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) //这里我设置了一个条件,即选定票据的订单必须在终端时间3h00修改。时间。 { OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); //这里我指定了订单选择,交易 OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); //用选定的票据修改订单,从开仓价 开始,改变SL值的点数,TP保持不变 } //--。 } 在测试过程中出现了一个问题:专家顾问开始在时间上做很多无用的修改,从3点00分到3点59分。EA正在胡闹,每一秒都在进行修改!为什么,代码有什么问题? [ARCHIVE!] Any rookie question, Need Help with Error MQL4 Learning Alekseu Fedotov 2012.04.08 10:09 #597 oleg_felix: 请告诉我,我想对订单进行修改,使EA在我指定的时间改变止损值,但它开始胡闹了。 以下是我的代码 外来的int tp = 350; // 获利值 外部int sl = 400; // 止损值 int票。 int start() { //---- 如果(OrdersTotal()==0 && Hour()==2 && Minute()==0) //订单在终端时间2:00打开 ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"" 123,0,Red); //---- if (OrdersTotal()==1 && Hour()==3 && Minute()==0) //这里我指定了一个条件,根据终端时间,所选票据的订单必须在下午3点被修改。 { OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); //在这里我指定了订单选择,贸易 OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); //用选定的票据修改订单,从开仓价格开始,改变SL值(点数),保持TP不变。 } //-- } 在测试时,出现了一个问题:专家顾问开始在时间内做很多无用的修改,从3点钟00分到3点钟59分。专家顾问正在蠢蠢欲动,每一秒都在进行修改!为什么,代码有什么问题? 为什么在时间上.....,在利润上!!! [Deleted] 2012.04.08 10:42 #598 如何编写正确的函数来修改ECN账户中的未平仓订单,在这个账户中,你不能一次性放置止损和盈利,但你必须通过修改来完成。 。 问题是,有些地方出了问题,请帮助我找到错误。 extern int tp = 350; // profit value takeprofit extern int sl = 400; // loss value stoploss int ticket; int start() { //---- if (OrdersTotal()==0 &&) Close[1]<Open[1] && High[1]<Bid) )==0) //订单在条件下打开 ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0t," ,123,0,Red); //---- if (OrdersTotal()==1 ) // 在这里我设置了一个条件,用一个选定的订单修改一个订单。 { OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); //这里我指定了订单选择,交易 OrderModify(ticket, OrderOpenPrice(), Ask+sl*Point,Ask-tp*Point,0,Blue); //用选定的票据修改订单,从开仓 价格开始,改变SL值的点数,保持TP不变 } } [ARCHIVE!] Any rookie question, Need Help with Error MQL4 Learning [删除] 2012.04.08 11:58 #599 oDin48: 伙计们,我怎样才能连接图书馆?当我试图编译EA时,它给出的结果是 'strlib.mqh' - 无法打开程序文件 A找到线。 #include <strlib.mgh> 并替换为。 #include <stdlib.mgh> Vadim Zhunko 2012.04.08 12:13 #600 7777877:各位,请用简单的形式解释一下什么是参数的引用转移。我读过文件,但只了解到这是可能的,而且在变量标识后面必须加上修饰词&。如果在解释的同时有一个带有解释的小程序,那就更好了...通常的参数传递和通过引用传递参数之间有什么区别?通过 引用传递参数 的一般意义是,不是传递变量本身,而是将其地址传递到参数中。在相反的情况下,变量的副本被传递到参数中。 1...535455565758596061626364656667...631 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这里是通过参考的参数 转移,做一个这样的脚本。
专家标签将显示以下记录:2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10
并试图回答为什么我们分配给res =999;而日志得到res = 10的问题。
你能告诉我如何连接这些图书馆吗?它们存在于mqh文件中,但在复制时,它们给出了
'strlib.mqh' - 无法打开程序文件
这里是链接中的参数 转移,做一个这样的脚本。
专家标签将显示以下条目:2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10
并尝试回答为什么我们指定res =999;但在日志中得到res = 10的问题。
以下是我的解释。
打印函数调用用户函数func。参数res=999被传递给func函数。当func函数本身被评估时,参数a=10被使用。值a*10=100被传回调用func函数的地方。由于我们最终得到的是res=10,我由此推断,通过引用传递参数 意味着:你可以将相关类型的任何值(在本例中,res=999)传递给被调用的函数(在本例中,传递给func),但函数本身将以该值进行评估(即(即在我们的例子中,a=10),它将在函数本身中被初始化(在特定情况下,它也可以与传递到被调用函数中的值相一致,即在本例中,传递到func中)。而在将函数中计算出的值(在本例中为func)转移回函数调用字符串时,变量(在本例中为res)将已经有一个与之前不同的值,即它在函数func计算时得到的值(即在本例中为res=10)。所以:当通过引用将一个参数传入一个函数时,在一个被评估的函数中,参数值可能会改变,而且,在函数调用字符串中返回计算值后,这个参数将有一个改变的(在特定情况下,相同的)值,它是在评估被调用函数时收到的。
我说对了吗?
这就对了。
衷心感谢您!!!"。
请告诉我,我想对订单进行修改,这样EA就会在我指定的时间改变止损值,但它开始变得愚蠢。
以下是我的代码
extern int tp = 350; // profit value takeprofit
extern int sl = 400; // loss value stoploss
int ticket;
int start()
{
//----
if (OrdersTotal()==0 && Hour() ==2 && Minute( )==0) //订单在终端时间2:00打开
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",123,0,Red);
//----
if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) //这里我设置了一个条件,即选定票据的订单必须在终端时间3h00修改。时间。
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); //这里我指定了订单选择,交易
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); //用选定的票据修改订单,从开仓价 开始,改变SL值的点数,TP保持不变
}
//--。
}
在测试过程中出现了一个问题:专家顾问开始在时间上做很多无用的修改,从3点00分到3点59分。EA正在胡闹,每一秒都在进行修改!为什么,代码有什么问题?
请告诉我,我想对订单进行修改,使EA在我指定的时间改变止损值,但它开始胡闹了。
以下是我的代码
外来的int tp = 350; // 获利值
外部int sl = 400; // 止损值
int票。
int start()
{
//----
如果(OrdersTotal()==0 && Hour()==2 && Minute()==0) //订单在终端时间2:00打开
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"" 123,0,Red);
//----
if (OrdersTotal()==1 && Hour()==3 && Minute()==0) //这里我指定了一个条件,根据终端时间,所选票据的订单必须在下午3点被修改。
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); //在这里我指定了订单选择,贸易
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); //用选定的票据修改订单,从开仓价格开始,改变SL值(点数),保持TP不变。
}
//--
}
在测试时,出现了一个问题:专家顾问开始在时间内做很多无用的修改,从3点钟00分到3点钟59分。专家顾问正在蠢蠢欲动,每一秒都在进行修改!为什么,代码有什么问题?
为什么在时间上.....,在利润上!!!
如何编写正确的函数来修改ECN账户中的未平仓订单,在这个账户中,你不能一次性放置止损和盈利,但你必须通过修改来完成。
。
问题是,有些地方出了问题,请帮助我找到错误。
extern int tp = 350; // profit value takeprofit
extern int sl = 400; // loss value stoploss
int ticket;
int start()
{
//----
if (OrdersTotal()==0 &&) Close[1]<Open[1] && High[1]<Bid) )==0) //订单在条件下打开
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0t," ,123,0,Red);
//----
if (OrdersTotal()==1 ) // 在这里我设置了一个条件,用一个选定的订单修改一个订单。
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); //这里我指定了订单选择,交易
OrderModify(ticket, OrderOpenPrice(), Ask+sl*Point,Ask-tp*Point,0,Blue); //用选定的票据修改订单,从开仓 价格开始,改变SL值的点数,保持TP不变
}
}
#include <strlib.mgh>
并替换为。
#include <stdlib.mgh>
各位,请用简单的形式解释一下什么是参数的引用转移。我读过文件,但只了解到这是可能的,而且在变量标识后面必须加上修饰词&。如果在解释的同时有一个带有解释的小程序,那就更好了...通常的参数传递和通过引用传递参数之间有什么区别?