Dmitri Custurov: Здравствуйте. Не получается написать код, который открывал бы позицию через n-количество баров после открытия предыдущей позиции. Пробовал использовать Time[i], iBarShift, iTime. Все безуспешно. В программировании новичок. Поиск ничего не дал.
同时,IsStopped函数的帮助说,如果有终止mql-program的命令,程序操作会在3秒后强行终止。
而如果while(true)被替换为 while(!IsStopped()),那么当从图表中删除时,指标会成功完成。
一切都很清楚。我们对正常的删除做了宽容处理。
当终端关闭时,它将是硬的。不超过3秒。
而且我不确定我们是否会在文档中写上这一点,1.这样就不会沉迷于写这种鲁莽的指标(你写这个是为了检查吗)2。既然松开了,那就收紧了。
内部编译器错误的一个有趣原因(指标中使用的函数)。
...治疗方法很明显,但同意--非常有趣的故障。:)))
给你写了一条私人信息。
Dmitri Custurov:
Здравствуйте. Не получается написать код, который открывал бы позицию через n-количество баров после открытия предыдущей позиции. Пробовал использовать Time[i], iBarShift, iTime. Все безуспешно. В программировании новичок. Поиск ничего не дал.
以下是代码。
如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))Timer=Time[0];}
TimerNull=iBarShift(NULL,0,Timer,false)。
如果((TimerNull>=n)&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
我也试过这种方式。
Timer=Time[0];}
TimerNull=Time[0];
if ((TimerNull>=(Timer+2700))&&(z==1))//作为一个例子在这里我把2700秒而不是n,在测试中意味着3个15分钟的蜡烛){int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
而且还像这样。
Timer=Time[0];}
TimerNull=Time[0];
如果((CurrentTime()>=(Timer+2700))&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); //在这种情况下,当我删除2700时,第二笔交易紧接着第一笔交易在同一个柱子里打开,这很合理。甚至当我把任何价值提高到600而不是2700的时候,第二笔交易也在同一个酒吧里打开。在价值高于600的情况下,第二笔交易从未开启。我无法理解问题出在哪里。我将非常感谢您的帮助。
Timer和TimerNull参数是日期时间格式。
在你的例子中,并没有列举出例如位置
如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
因此它总是选择位置0。
这一切都很有意义。为正常的删除做了一个纵容。
当你关闭终端时,会很难。不超过3秒。
而且我不确定我们是否会在文档中写上这一点,1.这样就不会沉迷于写这种鲁莽的指标(你写这个是为了检查吗)2。既然我们已经松开了,那么就把它收紧。
因此,已经收紧了,或者修正了参考。纵容不纵容不是一个严肃的对话。程序员期望从你那里得到的不是 "溺爱",而是清晰的、有记录的软件。
当然,这段代码除了演示之外没有其他目的,这是你自己要求的。而且它是相当无害的,无害的将工作,如果睡眠被删除,评论被打印取代。在Quartet或Quartet 5中,没有任何保护措施可以防止将数千兆字节的打印内容加入日志。
以下是代码。
如果((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))Timer=Time[0];}
TimerNull=iBarShift(NULL,0,Timer,false)。
如果((TimerNull>=n)&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
我也试过这种方式。
Timer=Time[0];}
TimerNull=Time[0];
if ((TimerNull>=(Timer+2700))&&(z==1))//作为一个例子在这里我把2700秒而不是n,在测试中意味着3个15分钟的蜡烛){int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
而且还像这样。
Timer=Time[0];}
TimerNull=Time[0];
如果((CurrentTime()>=(Timer+2700))&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); //在这种情况下,当我删除2700时,第二笔交易紧接着第一笔交易在同一个柱子里打开,这很合理。甚至当我把任何价值提高到600而不是2700的时候,第二笔交易也在同一个酒吧里打开。在价值高于600的情况下,第二笔交易从未开启。我无法理解问题出在哪里。我将非常感谢您的帮助。
Timer和TimerNull参数是日期时间格式。
这是可能的实现方式之一。 该EA应该在指定的条数 后开出订单。并学习如何正确插入EA代码,信息栏上的SRC按钮。
111
这个问题可能是针对网站开发人员或自由职业者的。
---
曾经是:完成568项工作,75%为个人工作
增加了13项工作(都是个人的),成为:完成581项,75%是个人的。
---
因此,问题是:请解读一下,75%是什么意思?