新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 549 1...542543544545546547548549550551552553554555556...1953 新评论 HeAic 2018.05.13 11:22 #5481 代码中的以下缩写结构是否正确:a < b && ( c > d1 || c > d2 || c > d3) ? 这是为了避免写作。(a < b && c > d1) || (a < b & c > d2) 等多次。 Ihor Herasko 2018.05.13 11:35 #5482 HeAic:代码中的以下缩写结构是否正确:a < b && ( c > d1 || c > d2 || c > d3) ? 这是为了避免写作。(a < b && c > d1) || (a < b & c > d2),如此反复多次。当然会这样做。在写这种大型结构时,我唯一要做的是明确指出优先级括号。 (a < b) && ( c > d1 || c >d2 || c > d3) 对于MT4/5编译器,我们可以不用指定括号,因为现有的优先级不允许我们以不同的方式计算表达式的结果。但这些括号有两个好处。 这种表达方式更容易直观地理解,没有任何关于优先级的问题(不要记住每个编译器的优先级)。如果代码被移到另一个编译器中,而这个编译器可能有不同的优先级,那么代码的工作原理将与在当前编译器中一样。 lil_lil 2018.05.14 07:54 #5483 Alexey Viktorov:谢谢你,如果 S_sk= SymbolInfoInteger("EURUSD",SYMBOL_SELECT); 返回的故障,市场观察中没有符号,我如何在那里添加它? Artyom Trishkin 2018.05.14 08:09 #5484 lil_lil:谢谢你,如果返回的故障,市场观察中没有符号,我如何在那里添加它?符号选择() 一切都在帮助中。光标指向函数名称和F1 lil_lil 2018.05.14 08:19 #5485 Artyom Trishkin:符号选择() 这一切都在帮助中。光标指向函数名称和F1谢谢你。 iv1986 2018.05.14 09:56 #5486 这其中的原因是什么?我写了一个脚本,在MT5中设置限价订单。当我将其发送到终端的图表中时,订单没有被设置,尽管result.retcode返回10009(订单已执行)。 Ihor Herasko 2018.05.14 10:17 #5487 iv1986:这其中的原因是什么?我写了一个脚本,在MT5中设置限价订单。当我将其发送到终端的图表中时,订单没有被设置,尽管result.retcode返回10009(订单已执行)。代码。日志。陈述内容。它都在哪里? iv1986 2018.05.14 10:31 #5488 Ihor Herasko: 代码。记录本。声明。它都在哪里?{MqlTradeRequest request={0};MqlTradeResult result={0};double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID)。double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK)。int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)。double p=NormalizeDouble(ChartPriceOnDropped(),digits)。如果( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10){p=MathRound(ChartPriceOnDropped()*0.1)/0.1;}int V=75。如果(p<Ask){request.action =TRADE_ACTION_PENDING; // 交易操作的类型request.symbol =Symbol(); // symbolrequest.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((Ask-p)/)SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE))。如果(request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL){ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)) 。}request.type =ORDER_TYPE_BUY_LIMIT; // 订单类型request.price =NormalizeDouble(Ask-SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // price to openrequest.deviation=50; // 允许的价格偏差request.sl =p; // 止损位置request.tp =NormalizeDouble(Ask+(Ask-p)*3,digits); // Take Profit位置request.type_filling=ORDER_FILLING_IOC。request.type_time=ORDER_TIME_DAY。request.stoplimit=Ask。OrderSend(request,result)。}如果(p>Bid){request.action =TRADE_ACTION_PENDING; // 交易操作的类型request.symbol =Symbol(); // symbolrequest.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/( (p-Bid)/)SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE))。如果(request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL){ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)) 。}// 数量request.type =ORDER_TYPE_SELL_LIMIT; // 订单类型request.price =NormalizeDouble(Bid+SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // price to openrequest.deviation=50; // 允许的价格偏差request.sl =p; // 止损位置request.tp =NormalizeDouble(Bid-(p-Bid)*3,digits); // Take Profit positionrequest.type_time=ORDER_TIME_DAY。request.type_filling=ORDER_FILLING_IOC。request.stoplimit=Bid。OrderSend(request,result)。} 日志说: 2018.05.14 10:12:38.187 交易 '992940': 卖出限额3.00 Si-6.18 at 62066 (62065) sl: 62331 tp: 61267 放置执行。 Any questions from newcomers 错误、漏洞、问题 MetaEditor build 1490 Ihor Herasko 2018.05.14 10:41 #5489 iv1986: 日志说: 2018.05.14 10:12:38.187 交易 '992940': 卖出限额3.00 Si-6.18 at 62066 (62065) sl: 62331 tp: 61267 放置执行。 这写在一般日志中。那么 "专家 "日志里有什么呢?而且不仅仅是一行,而是整个日志。透过钥匙孔没有什么可看的。 此外,在引用的代码中没有对返回代码的检查。所以不清楚关于错误代码的结论是根据什么作出的。 要建议什么,你需要有明确的可重复的步骤(看到你看到的东西),而这里没有。切除代码中的问题部分,自己运行它,然后准确地显示失败的原因。 P.S.要粘贴代码,请使用"</>"图标或Alt+S。 iv1986 2018.05.14 11:12 #5490 在代码的末尾也有Alert(result.retcode)。 在一般日志中。 2018.05.14 12:08:16.984 脚本 脚本LIMIT(Si-6.18,M15)加载成功 2018.05.14 12:08:17.187 交易 '992940': buy limit 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 629052018.05.14 12:08:17.484 交易 '992940': 接受买入限制 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 629052018.05.14 12:08:17.500 交易 '992940': buy limit 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905 placed for execution2018.05.14 12:08:17.546 交易 '992940': 订单#13235300买入限价3.00 / 3.00 Si-6.18 at 62091 在337.532 ms内完成。2018.05.14 12:08:17.578 脚本 脚本LIMIT(Si-6.18,M15)被删除。 在专家栏中:2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) 警报:10009,无其他内容。 Any questions from newcomers 开放器中的服务器版本 堡垒。执法问题 1...542543544545546547548549550551552553554555556...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
代码中的以下缩写结构是否正确:a < b && ( c > d1 || c > d2 || c > d3) ?
这是为了避免写作。(a < b && c > d1) || (a < b & c > d2) 等多次。
代码中的以下缩写结构是否正确:a < b && ( c > d1 || c > d2 || c > d3) ?
这是为了避免写作。(a < b && c > d1) || (a < b & c > d2),如此反复多次。
当然会这样做。在写这种大型结构时,我唯一要做的是明确指出优先级括号。
对于MT4/5编译器,我们可以不用指定括号,因为现有的优先级不允许我们以不同的方式计算表达式的结果。但这些括号有两个好处。
谢谢你,如果
返回的故障,市场观察中没有符号,我如何在那里添加它?
谢谢你,如果
返回的故障,市场观察中没有符号,我如何在那里添加它?
符号选择()
一切都在帮助中。光标指向函数名称和F1
符号选择()
这一切都在帮助中。光标指向函数名称和F1
谢谢你。
这其中的原因是什么?我写了一个脚本,在MT5中设置限价订单。当我将其发送到终端的图表中时,订单没有被设置,尽管result.retcode返回10009(订单已执行)。
这其中的原因是什么?我写了一个脚本,在MT5中设置限价订单。当我将其发送到终端的图表中时,订单没有被设置,尽管result.retcode返回10009(订单已执行)。
}
日志说: 2018.05.14 10:12:38.187 交易 '992940': 卖出限额3.00 Si-6.18 at 62066 (62065) sl: 62331 tp: 61267 放置执行。
日志说: 2018.05.14 10:12:38.187 交易 '992940': 卖出限额3.00 Si-6.18 at 62066 (62065) sl: 62331 tp: 61267 放置执行。
这写在一般日志中。那么 "专家 "日志里有什么呢?而且不仅仅是一行,而是整个日志。透过钥匙孔没有什么可看的。
此外,在引用的代码中没有对返回代码的检查。所以不清楚关于错误代码的结论是根据什么作出的。
要建议什么,你需要有明确的可重复的步骤(看到你看到的东西),而这里没有。切除代码中的问题部分,自己运行它,然后准确地显示失败的原因。
P.S.要粘贴代码,请使用"</>"图标或Alt+S。
在代码的末尾也有Alert(result.retcode)。
在一般日志中。
2018.05.14 12:08:16.984 脚本 脚本LIMIT(Si-6.18,M15)加载成功
2018.05.14 12:08:17.187 交易 '992940': buy limit 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905
2018.05.14 12:08:17.484 交易 '992940': 接受买入限制 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905
2018.05.14 12:08:17.500 交易 '992940': buy limit 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905 placed for execution
2018.05.14 12:08:17.546 交易 '992940': 订单#13235300买入限价3.00 / 3.00 Si-6.18 at 62091 在337.532 ms内完成。
2018.05.14 12:08:17.578 脚本 脚本LIMIT(Si-6.18,M15)被删除。
在专家栏中:2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) 警报:10009,无其他内容。