初学者的问题 MQL5 MT5 MetaTrader 5 - 页 494 1...487488489490491492493494495496497498499500501...1503 新评论 Vitalii Ananev 2016.01.12 11:25 #4931 Nickolay72: 直到昨天,我的EA每次只开了一个订单,下一个订单在我下单前不会打开。 现在,如何使我的EA在前一个条形图在通道上方(下方)打开订单? if (CountTrades()==0) CheckForOpen(); else { if(CountTrades()<max_trades) CheckForOpen(); }如果你分析这个代码片段,那么,根据这段代码,如果CountTrades() 函数返回0,条件 if(CountTrades()==0) CheckForOpen()将被执行,函数CheckForOpen() 将被调用。在下一个交易日,如果订单已经打开,CountTrades()函数应该返回1,然后其他条件 得到满足。.... else { if(CountTrades()<max_trades) CheckForOpen(); }如果出现CountTrades()<max_trades,CheckForOpen() 函数将被再次执行。根据代码, max_trades变量的值 等于3。因此,你将有4个订单开放。 如果EA不能正确开单,那么请检查逻辑,在函数CheckForOpen()中,你定义了开仓 的条件。而且还要检查时间条件,如果(CurrTime < EaStartTime || CurrTime >= EaEndTime)。如果我是你,我会使用函数 if (TimeHour(TimeCurrent())= 开始时间 && TimeMinute(TimeCurrent())= 开始分钟)。小时和分钟被设置在int或uint类型的变量中。 Nickolay72 2016.01.12 11:56 #4932 Artyom Trishkin: 如果公开栏1号高于/低于通道。 该死的,我刚刚看到我在通道下限 附近有一笔交易,我只是复制了订单,没有将底部修正为顶部,我将尝试修正后的版本)。//-----Ставим ордер на покупку. if(PriceCurrentOpen<PriceLow&&PriceCurrentOpen<PriceCurrentClose&&SignalCurrent<MacdCurrent&&SignalMAPrevious<SignalMAThis) { ticket=OrderSend(NULL,OP_BUY,Lots,Ask,slippage,0,0,"5",magic,0,Blue); if(ticket>0) return; } //-----Ставим ордер на продажу. if(PriceCurrentOpen>PriceLow&&PriceCurrentOpen>PriceCurrentClose&&SignalCurrent>MacdCurrent&&SignalMAPrevious>SignalMAThis) { ticket=OrderSend(NULL,OP_SELL,Lots,Bid,slippage,0,0,"5",magic,0,Red); if(ticket>0) return; Nickolay72 2016.01.12 12:00 #4933 Vitalii Ananev:因此,你将有4个订单开放。如果EA不能正确打开订单,那么请检查逻辑,你在函数CheckForOpen()中指定必须打开头寸 的条件。而且还要检查时间条件,如果(CurrTime < EaStartTime || CurrTime >= EaEndTime)。如果我是你,我会使用函数 if (TimeHour(TimeCurrent())= 开始时间 && TimeMinute(TimeCurrent())= 开始分钟)。小时和分钟被设置在int或uint类型的变量中。我想开3个订单,但这不是我的初衷;我想最多开3个,但每一个新栏都有一个订单。时间上没有问题,它在严格规定的时间段内工作。 Artyom Trishkin 2016.01.12 12:48 #4934 Nickolay72:我希望最多有三个订单,但每个新的条形图都有一个订单。 有些时候,连续的几个条形图都会发出积极的信号。时间上没有问题,它在严格规定的时间段内工作。 条件是:如果最后一次开仓的条形图不等于零,并且开仓 的数量少于允许的最大数量,那么就可以开一个新的仓位。 Николай Никитюк 2016.01.13 03:24 #4935 2016.01.13_05:14am.你好,卡尔普托夫先生!我在MQL4中写道 .mq4文件,得到了.ex4文件。但它在策略测试器中不起作用。最后 是为MT4写一个EA。在MQL5中,我得到了.mq5和 .ex5文件。和.ex5文件打开的交易。第四个版本与 第四版与第五版有一些区别,我还不是一个好的MQL程序员,这就是为什么我得到的结果不好。 我现在还不明白是什么问题,测试器的日志文件已经保存了。Я 我将尝试翻译它。同时,我希望你能告诉我 程序代码有什么问题?在你回答的同时,我将尝试 来解决这个问题。 我很惊讶地发现,在我的第四个版本的编辑器中,有一个选项可以写入 我正准备写。但是我没有写。我在此附上 测试员的日志文件和一张截图。05:30 MSC。 附加的文件: 20160112.log 7 kb Alexey Volchanskiy 2016.01.13 04:41 #4936 Николай Никитюк:莫斯科时间2016.01.13_05:14am。你好,卡尔普托夫先生!我已经在MQL4中写了 .mq4文件,我得到一个.ex4文件。但它在策略测试器中不起作用。 为什么你把代码贴成了图片?))谁会理解他们? Vladimir Karputov 2016.01.13 07:39 #4937 Николай Никитюк: 请在帖子中正确插入你的代码:在论坛中正确插入代码 Aleksey Vyazmikin 2016.01.13 14:16 #4938 我在哪里可以找到错误描述?我不明白编译器不喜欢什么,为什么它警告我?检查运算符的优先级是否可能出错;使用括号来澄清优先级if(Low[X]>PriceBuy && High[X]>PriceBuy || Low[X]<PriceBuy && High[X]<PriceBuy) calcBarX++;和这里表达没有效果 for(calc_day;calc_day>0; calc_day--) { if(iLow(Symbol(),TF_3Day,calc_day)<iLow(Symbol(),TF_3Day,calc_day+1)) calc_day_OK++; else break; } Vladimir Karputov 2016.01.13 14:22 #4939 -Aleks-:我在哪里可以找到错误描述?我不明白编译器不喜欢什么,为什么它警告我? 实际上,除了错误文本,编译器还告诉你发生错误的代码行的编号和它在行中的位置。 Aleksey Vyazmikin 2016.01.13 14:27 #4940 Karputov Vladimir: 实际上,除了错误文本外,编译器还报告发现错误的代码行的编号以及它在该行中的位置。 这是这样的--在第一种情况下,在依次的比较符号上--显然在 "或 "之间你必须放一个括号,而在第二种情况下,它在写有逻辑表达式 的括号上发誓。 1...487488489490491492493494495496497498499500501...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
直到昨天,我的EA每次只开了一个订单,下一个订单在我下单前不会打开。 现在,如何使我的EA在前一个条形图在通道上方(下方)打开订单?
如果你分析这个代码片段,那么,根据这段代码,如果CountTrades() 函数返回0,条件 if(CountTrades()==0) CheckForOpen()将被执行,函数CheckForOpen() 将被调用。在下一个交易日,如果订单已经打开,CountTrades()函数应该返回1,然后其他条件 得到满足。
如果出现CountTrades()<max_trades,CheckForOpen() 函数将被再次执行。根据代码, max_trades变量的值 等于3。因此,你将有4个订单开放。
如果EA不能正确开单,那么请检查逻辑,在函数CheckForOpen()中,你定义了开仓 的条件。而且还要检查时间条件,如果(CurrTime < EaStartTime || CurrTime >= EaEndTime)。如果我是你,我会使用函数 if (TimeHour(TimeCurrent())= 开始时间 && TimeMinute(TimeCurrent())= 开始分钟)。小时和分钟被设置在int或uint类型的变量中。
如果公开栏1号高于/低于通道。
因此,你将有4个订单开放。
如果EA不能正确打开订单,那么请检查逻辑,你在函数CheckForOpen()中指定必须打开头寸 的条件。而且还要检查时间条件,如果(CurrTime < EaStartTime || CurrTime >= EaEndTime)。如果我是你,我会使用函数 if (TimeHour(TimeCurrent())= 开始时间 && TimeMinute(TimeCurrent())= 开始分钟)。小时和分钟被设置在int或uint类型的变量中。
我想开3个订单,但这不是我的初衷;我想最多开3个,但每一个新栏都有一个订单。
时间上没有问题,它在严格规定的时间段内工作。
我希望最多有三个订单,但每个新的条形图都有一个订单。 有些时候,连续的几个条形图都会发出积极的信号。
时间上没有问题,它在严格规定的时间段内工作。
.mq4文件,得到了.ex4文件。但它在策略测试器中不起作用。最后
是为MT4写一个EA。在MQL5中,我得到了.mq5和
.ex5文件。和.ex5文件打开的交易。第四个版本与
第四版与第五版有一些区别,我还不是一个好的MQL程序员,这就是为什么我得到的结果不好。
我现在还不明白是什么问题,测试器的日志文件已经保存了。Я
我将尝试翻译它。同时,我希望你能告诉我
程序代码有什么问题?在你回答的同时,我将尝试
来解决这个问题。
我很惊讶地发现,在我的第四个版本的编辑器中,有一个选项可以写入
我正准备写。但是我没有写。我在此附上
测试员的日志文件和一张截图。05:30 MSC。![测试员的日志 测试员的日志](https://c.mql5.com/3/86/20160112.log)
![卡尔普托夫 卡尔普托夫](https://c.mql5.com/3/86/2016.01.13_05_59_2tq16pbq6_165639q46_u23.png)
![卡尔普托夫 卡尔普托夫](https://c.mql5.com/3/86/2016.01.13_05_59_u4gpi8dpe_ibhw03kfe_b32.png)
莫斯科时间2016.01.13_05:14am。你好,卡尔普托夫先生!我已经在MQL4中写了
.mq4文件,我得到一个.ex4文件。但它在策略测试器中不起作用。
我在哪里可以找到错误描述?
我不明白编译器不喜欢什么,为什么它警告我?
检查运算符的优先级是否可能出错;使用括号来澄清优先级
if(Low[X]>PriceBuy && High[X]>PriceBuy ||
Low[X]<PriceBuy && High[X]<PriceBuy)
calcBarX++;
和这里
表达没有效果
for(calc_day;calc_day>0; calc_day--)
{
if(iLow(Symbol(),TF_3Day,calc_day)<iLow(Symbol(),TF_3Day,calc_day+1)) calc_day_OK++;
else break;
}
我在哪里可以找到错误描述?
我不明白编译器不喜欢什么,为什么它警告我?
实际上,除了错误文本外,编译器还报告发现错误的代码行的编号以及它在该行中的位置。