int i, k=OrdersTotal();
for (i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if ((OrderType()==OP_BUY)&&(OrderOpenPrice()>=Ask-350*Point)&&(OrderMagicNumber()==Magic)||(OrderType()==OP_BUY)&&(OrderOpenPrice()<=Ask+250*Point)&&(OrderMagicNumber()==Magic))
{
double o=OrderOpenPrice();
Print(o);
OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue);
}
}
}
日安,有一个指标,但在测试器中,从年初到3月的某一时期后工作,然后停止给出信号,而我需要测试一个长的时期(AuthorizedSSBODynamicBreakoutBoxFinalEdition),代码中哪里会有这种限制--请至少给一个提示,在哪里挖掘,哪些运算符决定它?
你有该指标的源代码吗?如果没有,请搜索作者))))
如何告诉我请一些成熟的专家顾问在MQL4和5,而且时间很短,有时你需要检查一个想法或帮助别人,最终创建一个机器人的基础,并完成自己的写作...
我将不胜感激,提前感谢!=)。
我正在写一个这样的函数
但为什么OrderOpenPrice()在五位数上返回四舍五入的价格?
试着这样做,看看OrderOpenPrice() 真正的返回值,也许原因是你用 Digits参数对函数进行了规范化处理 ,你在打印机中看到的不是 它的真实情况。
我正在写一个这样的函数
但为什么OrderOpenPrice()会返回四舍五入到小数点后四位的价格?
打印不返回四舍五入的价格,在这种情况下,它只是输出默认的小数位数。
实际上,外汇市场上不存在低于数字 的小数点。 一般来说,以欧元SD为例,它只有四位小数点,甚至第五位小数点也是经纪公司的想法。
但在你的情况下,最好这样做:Print(DoubleToStr(OrderOpenPrice(),Digits))。
试着这样做,看看OrderOpenPrice() 真正的返回值,也许原因是你用 Digits参数规范了该函数 ,你在打印机上看到的不是 它的真实情况。
没有规范化也是一样的,我需要从开盘价 中减去点数,如果这样的话,价格就是我所需要的,但这样我就会在IF()中得到一个类型不匹配。
我需要从开盘价中减去点数,如果是这样,价格就是我所需要的,但随后我在IF中得到一个类型不匹配(
用四位数做计算。 如果准确性对你很重要,那么就用最后一位数的值放回去,因为在计算过程中,由于计算的性质,它不会发生变化。
像对四位数一样进行计算,如果准确性对你很重要,那么就原地返回,用前面的最后一位数的值,因为在计算过程中,由于计算的特殊性,它不会改变。
如前所述,首先将双数转换为具有指定小数位数的字符串,然后使用Print.... 将其打印到日志中。