int i;//аналогично i=0while((TimeCurrent()-time)>1){//то заносим старые значения столько раз, сколько было пропущено секунд минус одинif(FileSeek(hand1e, fpos, SEEK_SET) == false){//перемещаем указатель на новую позицию, которую мы запомнили в FileTell
error = GetLastError();//если ошибкаPrint("out: error(",error,"): ",ErrorDescription(error));//записываем её в лог
flag = false;
return;//и выходим
}else{//выдумываем несуществующую свечу (т.к. тика в эту секунду не было)
time++;
FileWriteInteger(hand1e, time, LONG_VALUE);//TimeCurrent()//выбор выдуманной свечи (секунда, при которой тика не было)://прочерк на Close[]/*
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Open[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//High[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Low[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]
FileWriteDouble (hand1e, 0, DOUBLE_VALUE);//Volume[]
*///свеча без теней/*
FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//Open[]
FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//High[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Low[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]
FileWriteDouble (hand1e, last.index+1, DOUBLE_VALUE);//Volume[]
*///такая же свеча, как и была (не прочерк и не без теней)FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//Open[]FileWriteDouble (hand1e, bid[ArrayMaximum(bid)], DOUBLE_VALUE);//High[]FileWriteDouble (hand1e, ask[ArrayMinimum(ask)], DOUBLE_VALUE);//Low[]FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]FileWriteDouble (hand1e, last.index+1, DOUBLE_VALUE);//Volume[]//конец выбораFileFlush (hand1e);
fpos = FileTell (hand1e);//запоминаем позицию записи в файле
}
}
ArrayResize(bid, 1);//урезаем и обнуляем использованные нмассивыArrayResize(ask, 1);
if(flag==true){
if(tick.time.local==true){//если флаг работы с историей поднят
time = TimeLocal();//работаем с локальным временемwhile(time==TimeLocal()){//пока секунда не прошла
bid[i]=MarketInfo(symbol, MODE_BID);//заносим в индикаторный массив данные тиков
ask[i]=MarketInfo(symbol, MODE_ASK);
i++;
}
}else{//иначе
time = TimeCurrent();//работаем с временем сервераwhile(time==TimeCurrent()){//пока секунда не прошла
bid[i]=MarketInfo(symbol, MODE_BID);//заносим в индикаторный массив данные тиков
ask[i]=MarketInfo(symbol, MODE_ASK);
i++;
}
}
}
//Вышли из цикла, т.к. время изменилось. Заносим в файл:if(FileSeek(hand1e, fpos, SEEK_SET) == false){//перемещаем указатель на новую позицию, которую мы запомнили в FileTell
error = GetLastError();//если ошибкаPrint("out: error(",error,"): ",ErrorDescription(error));//записываем её в лог
flag = false;
return;//и выходим
}else{
int last.index=ArraySize(ask)-1;
FileWriteInteger(hand1e, time, LONG_VALUE);//TimeCurrent()FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//Open[]FileWriteDouble (hand1e, bid[ArrayMaximum(bid)], DOUBLE_VALUE);//High[]FileWriteDouble (hand1e, ask[ArrayMinimum(ask)], DOUBLE_VALUE);//Low[]FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]FileWriteDouble (hand1e, last.index+1, DOUBLE_VALUE);//Volume[]FileFlush (hand1e);
fpos = FileTell (hand1e);//запоминаем позицию записи в файле
}
2.在工作中,与当地时间(离线即)没有带来的想法。在"while(time==TimeLocal()){//until one second has passed"循环中,我怀疑在 FileWriteDouble中 一定有MarketInfo(对我来说听起来像一个白痴的顶部)。如果你告诉我在那里什么看起来更合理,我将非常感激。
3.一个作者的构造
if(flag == true)
{
if(tick.time.local == true)
{
time = TimeLocal();
}
else{
time = TimeCurrent();
}
这并不重要。我正在返回一个绝对值,通过MathAbs的modulo...
如果你要找一个输入点,MathAbs() 会引入一个污点。对我来说,应该指定从和到,这样就可以清楚地知道什么时候,用什么样的宽容度!
如果你在寻找输入点,MathAbs()会使它变得模糊。对我来说,应该从头到尾都有明确的规定,这样就可以清楚地知道什么时候,用什么样的宽容度!
纠正了...反正所有的条件都没有得到满足。
到returnSign[i]= true;因此对VrPr函数(也就是输出我监控的数据的函数)没有使用。虽然,跨越式下跌已经开始。这是一张截图,你可以看到,当每台快机越过慢机时,数组crossDir[]被填充......
注意,2个轮子已经越过了最厚的那个,数组中的2个元素已经赋值为1。 这意味着它们的值是CROSS_DN
这意味着,条件
if (crossDir[i] == CROSS_DN)
然后...
如果你在寻找一个入口点,MathAbs()就会引入模糊性。对我来说,应该从头到尾都有明确的规定,这样就可以清楚地知道什么时候,用什么样的宽容度来对待!
还有和谁在一起,为什么?
还有谁,为什么。
除了从视觉上看,没有MathAbc()更容易从习惯上感知,但是......没有任何区别。但我们偏离了主题。对我的代码有什么意见吗?毕竟,这个问题仍然是开放的...
没有。
大家下午好!
我在Alpari的MT-4中测试美元/日元。
我已经下载了美元/日元的1分钟历史记录
注意:在加载分钟历史报价档案后,双击 "1分钟"。
由于某种原因,一分钟的报价列表没有显示在数据库的报价档案窗口中。
1小时 TF。
所有蜱虫
时间为2000年1月1日。- 01.01.2013.
在测试结束时,REPORT标签显示一个红条,并说建模质量为25%。
我在同一时期用同样的参数测试了......,但每个月都分别 进行了测试
每个月都显示绿条和90%的 模拟质量
然后我测试了同一时期,但将其分为2000-2006年和2006-2013年两个相等的部分。
对于每个部分,条形图是绿色的,模拟质量是90%。
问题
我应该怎么做才能使13年来的检测质量总体上也达到90%?
谢谢你
对。我想我已经完成了。这是重新制作的蜱虫收集器,其将它们打包成第二个蜡烛。
它是。
成为了。
对代码的评论。
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.你还有什么建议来优化代码?