2.在工作中,与当地时间(离线即)没有带来的想法。在"while(time==TimeLocal()){//until one second has passed"循环中,我怀疑在 FileWriteDouble中 一定有MarketInfo(对我来说听起来像一个白痴的顶部)。如果你告诉我在那里什么看起来更合理,我将非常感激。
#include <stdlib.mqh>bool once=false;
int start()
{
if (once==false)
{
double DTM; // дата и время в формате 0,20130429164459int YY=TimeYear( TimeCurrent()); // Yearint MN=TimeMonth( TimeCurrent()); // Month int DD=TimeDay( TimeCurrent()); // Dayint HH=TimeHour( TimeCurrent()); // Hour int MM=TimeMinute( TimeCurrent()); // Minuteint SS=TimeSeconds(TimeCurrent()); // Second
DTM = YY*0.0001+MN*0.000001+DD*0.00000001+HH*0.0000000001+MM*0.000000000001+SS;
Alert ("Значение переменной DTM с 06 знаками равно ", DoubleToStrMorePrecision(DTM,6));Alert ("Значение переменной DTM с 07 знаками равно ", DoubleToStrMorePrecision(DTM,7));Alert ("Значение переменной DTM с 08 знаками равно ", DoubleToStrMorePrecision(DTM,8));Alert ("Значение переменной DTM с 09 знаками равно ", DoubleToStrMorePrecision(DTM,9));Alert ("Значение переменной DTM с 10 знаками равно ", DoubleToStrMorePrecision(DTM,10));Alert ("Значение переменной DTM с 11 знаками равно ", DoubleToStrMorePrecision(DTM,11));Alert ("Значение переменной DTM с 12 знаками равно ", DoubleToStrMorePrecision(DTM,12));Alert ("Значение переменной DTM с 13 знаками равно ", DoubleToStrMorePrecision(DTM,13));Alert ("Значение переменной DTM с 14 знаками равно ", DoubleToStrMorePrecision(DTM,14));Alert ("Значение переменной DTM с 15 знаками равно ", DoubleToStrMorePrecision(DTM,15)); once=true;
}
return(0);
}
对。我想我已经完成了。这是重新制作的蜱虫收集器,其将它们打包成第二个蜡烛。
它是。
成为了。
对代码的评论。
1.为了节省CPU时间,没有在虚拟烛台选择中使用开关码,而是注释了有选择的部分(因为选择是在编译前根据具体需要进行的)。
2.在工作中,与当地时间(离线即)没有带来的想法。在"while(time==TimeLocal()){//until one second has passed"循环中,我怀疑在 FileWriteDouble中 一定有MarketInfo(对我来说听起来像一个白痴的顶部)。如果你告诉我在那里什么看起来更合理,我将非常感激。
3.一个作者的构造
我已经在init()的最后声明了它。
4.在init()动态数组的开始部分
而不是使用的变量。
5.为了优化,理论上你可以使用WinAPI文件函数,以44字节的块(MarketInfo结构的长度或.hst中的任何东西)一次性写入历史。
6.完全删除了作者对写入Time[]单元格的时间的建模。出于同样的原因,在头部的while循环中,没有检查TimeLocal(),只有检查TimeCurrent()。
7.你还有什么建议来优化代码?
从第4点来看,必须理解为你在做一个指标,那么这种行为就不清楚了。
ArrayInitialize() 很可能适合?
而最有可能的是,你应该拒绝使用指标数组。
ArrayInitialize()可能起作用?
ArrayInitialize(ask,EMPTY_VALUE); 你是说?我没有。我到底为什么要把它砍掉,我是怕出现这样的情况。
(a, b, c)//问中的数值,每秒3次(很奇妙,但让我们假设一下)。
ArrayInitialize(ask, 0);//是(0, 0, 0)。
FileWriteDouble(hand1e, ask[ArraySize(ask)-1], DOUBLE_VALUE);//Close[]。
- 关闭单元格将得到0。这就是为什么我重新定义了尺寸,以防止这种情况发生。检查 ArrayInitialize(ask, EMPTY_VALUE); 。
TarasBY:
你必须停止使用指标数组。他们很有活力,这就是我所喜欢的。更少的命令,更少的处理器周期数。你必须在任何理论上可能的时间内做500毫秒的处理。......来完成。
ArrayInitialize(ask, EMPTY_VALUE); 你是说?我没有。我害怕出现这样的情况,所以我开始削减它。
(a, b, c)//问中的数值在每秒3次点击后(很奇妙,但假设)。
ArrayInitialize(ask, 0);//是(0, 0, 0)。
FileWriteDouble(hand1e, ask[ArraySize(ask)-1], DOUBLE_VALUE);//Close[]。
- 关闭单元格将得到0。这就是为什么我重新定义了尺寸,以防止这种情况发生。ArrayInitialize(ask, EMPTY_VALUE); ; ; 检查它们。
他们是有活力的,这就是我所爱的。更少的命令,更少的时钟周期。你必须在任何理论上可能的瓶颈处管理500毫秒的处理.........来完成。
我不是这个意思:有些东西告诉我,你不会设法缩小指标阵列。此外,如果在这样的数组中有未填充的单元格,那里总是有一些值:0或EMPTY_VALUE,在这些计算中你会得到什么。
按照一般的逻辑:我将在一个循环中运行整个tick集合,并分别控制时间,一旦 "新条 "时间过去,就将其写入文件,在此过程中对工作数组进行清零和剪裁。如果我知道,是否有可能改变顾问中的发送和关闭订单,以手动调用交易窗口并通过该窗口进入市场,这对那些不允许使用顾问的经纪商来说是必要的。
根据一般的逻辑:我将在一个循环中运行整个tick集合,并分别控制时间,一旦 "新条 "的时间过去,就将其写入文件,在此过程中对工作数组进行清零和剪裁。
很奇怪...我有这种方法...唯一的一点是,时间是在tick收集周期本身中控制的,工作数组不会被剪掉,直到tick的副本被画出的次数达到没有tick的次数减去1秒。一秒钟过去了--画出一个新的刻度线,二秒钟--前一个刻度线的副本和一个新的刻度线,三秒钟--前一个刻度线的两个副本和一个新的刻度线,等等。可以在收盘价边上画一个破折号,而不是复制前一个勾,这个变体在代码中做了注释。
很奇怪...我是这样安排的...唯一的一点是,时间是在循环本身中控制的,工作数组不会被剪掉,直到画出一个刻度的副本,其次数与没有刻度的次数减去1。一秒钟过去了--画出一个新的刻度线,二秒钟--前一个刻度线的副本和一个新的刻度线,三秒钟--前一个刻度线的两个副本和一个新的刻度线,等等。可以在收盘价边上画一个破折号,而不是复制前一个勾,这个变体在代码中做了注释。
你和我谈论的是不同的周期。我说的是这个。
谁能告诉我如何去除小数点后的零?由于某种原因,我的代码中有4位小数。以下是代码。string l_dbl2str_12 = DoubleToStr(g_ibuf_140[0] - g_ibuf_144[0],3)。
你能告诉我我做错了什么吗...
我需要一个双倍类型 的变量来包含日期为0,20130429164459(指2013.04.29 16:44:59)。
EA代码的一部分。
精度12、13和14的事件日志给出了错误的结果,见图