要关闭一个订单,你根本不需要定义订单类型 和该类型对应的价格。只要写上OrderClosePrice()就可以了。
void OnStart()
{
int i, total = OrdersTotal()-1;
for(i = total; i >= 0; i--)
{
if(OrderType() < OP_SELLSTOP)
{
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100))
printf("***********");
}
}
}/********************************************************************/
帮助中还有许多不准确的地方。以SetIndexBuffer()为例。帮助中的问题是什么?
"参数
指数
[in]指示器缓冲区 编号。编号从0开始。这个数字必须小于#property indicator_buffers中声明的值。"(这种说法不正确)
#属性indicator_buffers指定了要显示的缓冲区数量。也许帮助的意思是,虽然我没有检查过,但用于计算的缓冲区不需要由SetIndexBuffer()给出一个数字。但我所检查的是,如果用于计算的缓冲区用SetIndexBuffer() 给出一个数字,它的值可以通过iCustom()检索。
由于开发人员正在访问这个主题 - 有一个关于 "微妙和技巧 "的问题。
格式化打印的例子:PrintFormat("Bid=%.5f", Bid)
问题:有没有办法,而不是一个固定的精度(这里是5),在格式描述中指定一个条件,使精度取决于_Digits?要做到没有 "预处理",如PrintFormat("Bid=%s",DoubleToString(Bid, _Digits))
在MQL4中,同样的代码可以得到不同的结果,这取决于#property strict的状态。而这时编译在这两种情况下都是成功的。因此,如果执行是 "漫无边际 "的,你可以在错误的地方(严格)寻找原因很长时间。
问题:不采用 固定精度(这里是5),是否可以在格式描述中指定一个条件,使精度取决于_Digits?
![Документация по MQL5: Общие функции / PrintFormat Документация по MQL5: Общие функции / PrintFormat](/i/community/logo_mql5_small.png)
- www.mql5.com
Описание проблемы
我在MQL4中编写一个指标。我面临着DRAW_HISTOGRAM样式的一个未记录的特征。
为了在图表上显示这些值,我需要两个缓冲区:用于直方图的上部数值和下部数值。在映射指示器阵列缓冲区时,如果样式的缓冲区将有0和1、2和3、4和5等值,则一切显示正常。然而,如果样式缓冲区被分配了以OTHER开始的值,即1和2,3和4,5和6,直方图线将不能正确地显示在图表中,尽管数据窗口中的值是正确的。
请在文档中加入对这一特殊性的提及,或对其进行修正,因为DRAW_HISTOGRAM样式描述并不总是以偶数缓冲区开始的!这是不可能的。
-Aleks-, 2017.02.07 18:21
请您告诉我,在MT4专家顾问中,如果持续调用带有多个图形缓冲区的用户指标,那么每次调用都会重新计算,还是所有缓冲区都会一次性计算,您可以多次引用代码中的指标,而不会出现资源浪费的情况。我还想知道,如果代码没有完成(运行时间超过一个tick),但指标值发生了变化,会发生什么?
这是一个耻辱...
---
这样,帖子就不会是无用的。
代替StringGetCharacter("a", 0), 你可以只写'a'--当用StringSplit将字符串解析成几个部分时经常需要这样做。