if( bUseStartDate && aBar[ iTempStartBar].Time< dtStartingDate){// We need to cut out the oldest bars for(int iBar = iTempStartBar; iBar < iTempBars - MINIMUMBARS; iBar++) {
// Set the maximum nuber of bars
// if (iBars > iMaxBars && iMaxBars >= MINIMUMBARS)
// { // We need to cut out the oldest bars
// iTempBars = iMaxBars;
// iTempStartBar = iBars - iMaxBars;
// bChange = true;
// }
// Или оставить
// только если && bUseStartDate=False && bUseEndDate=False
// или && (bUseStartDate=False || bUseEndDate=False)
// сам не представляю, но весь блок "сбивает"
// Set the starting date
DateTime dtStartingDate =new DateTime( iStartYear, iStartMonth, iStartDay);if( bUseStartDate && aBar[ iTempStartBar].Time< dtStartingDate){// We need to cut out the oldest bars for(int iBar = iTempStartBar; iBar < iTempEndBar; iBar++) { if( aBar[ iBar].Time>= dtStartingDate) {
iTempStartBar = iBar;
iTempBars = iTempEndBar - iTempStartBar +1;
bChange =true; break; } }}
Как вариант, после
// Set the maximum nuber of barsif(iBars> iMaxBars && iMaxBars >= MINIMUMBARS){// We need to cut out the oldest bars
iTempBars = iMaxBars;
iTempStartBar =iBars- iMaxBars;
bChange =true;}
修复了发电机。用这个替换你的exe。
生成器有时会设置指标周期+Shift>条形计数;
我已经很困惑了。:)
新版本。
但在将条数减少到300条后,生成器可以工作,并可以用 "停止 "按钮停止。
'
旧版本(从网站快速下载)
但是,如果条数<1000,发电机就会挂掉。
'
IMHO,最好是习惯于测试仪的1000巴极限要求,但选择间隔的方便。
'
我已经很困惑了。:)
'
旧版本(从网站快速下载)
但是,如果条数<1000,发电机就会挂起。
'
关于'旧版本'的快乐想法原来是错误的。
也就是说,图片与新版本相同。(即条数比日期DO!!!!更优先)
'
'
咦?
循环到iTempBars- MINIMUMBARS,即从 历史的开始到最大条数iTempBars= iMaxBars; ,这样做对吗?
在我的历史文件中,有很多超过50000行,在这个区间内,从iTempStartBar= iBars - iMaxBars到iMaxBars-MINIMUMBARS,根本无法订购日期?
从逻辑上讲,结束日期和开始日期应该搜索到整个故事的结尾,即搜索到iBars ??
但是,结尾栏的发现是正确的。
关于你的屏幕截图。
1.忽略了 "删除2008年9月1日之前的数据",因为到2009年1月1日为止,只有不到300条数据。
2."删除2009年1月1日之前的数据"-- 看来没有1月1日的数据,FSB删除了08年1月1日以来的所有条形数据,包括...。这就是为什么FSB限制酒吧到2008年12月31日。
(即条数比日期更优先 BEFORE!!!!)
正是如此。
1."删除2008年9月1日之前的数据"被忽略了,因为到2009年1月1日为止,只有不到300条数据。
2."删除2009年1月1日之前的数据" - 看来没有1月1日的数据了。这就是为什么FSB限制酒吧到2008年12月31日。
现在不一样了。
我现在展示的是时钟。
在文件63291(iBars )中,从1999-01-04到2009-03-18的行数
日期2008-09-01是第59行973
2009-01-02的日期是第62 021行。
I.e.当程序搜索开始日期时,周期从63 291 - 50 000 =13 291(iTempStartBar= iBars - iMaxBars; )到50 000 - 300 =49 700(iTempBars- MINIMUMBARS),没有找到我的 "之前 "日期(bar59 973),留下(iTempStartBar= iBars - iMaxBars;)开始酒吧=63 290 - 50 000 = 13 290。
在我的文件中是2001-02-21 12:00(+/-300,与数字相对应)。
所附文件。
iBars<= 50,000
FSB从数据文件中导入最新的50,000条。
所以。
日期2008-09-01是第59行973
日期2009-01-02是第62行021
是在加载的数据之外。地平线数据没有考虑到这些问题。
行动。我错了。
iBars <= 50,000
FSB从数据文件中导入最新的50,000条。
所以。
日期2008-09-01是第59行973
2009-01-02是第62行021
是在加载的数据之外。Data Horizont不考虑这些因素。
最新的 !!!!,即从13,291 到 63 291!!!!!,现在搜索范围从0到50,000(四舍五入;) )
没有协议。:( 遗憾 :(
虽然在我看来,用iTempEndBar 代替 iTempBars- MINIMUMBARS 更 正确。 而整块"//设置最大条数"是多余的,如果和bUseStartDate=True 和bUseEndDate=True。
'
但同样,我并不坚持。:()(我将剪切文件,尽管为了细枝末节,它很可能想在以前的50 000条上优化策略,并在接下来的10 000条上检查它。
:(
SZY。代码中仍有一个错误,它不对应于方案!!!!!。(我的间隔是在右边,而不是在左边) :(
让我们想一想。
给我你想要的代码。我会把它放在程序中,我们会测试它。
让我们想一想。
给我你想要的代码。我会把它放在程序中,我们会测试它。
你在前几页的代码的一个片段。
添加
,但为了重置起始日期,iTempStartBar必须是!!!!。如果dtStartingDate早于iMaxBars,你应该忽略dtStartingDate并以iMaxBars为限。
而且我认为应该有从dtStartingDate "向右 "的iMaxBars,这样你可以在整个文件中移动iMaxBars的窗口大小
但如果右边的dtStartingDate条形图比iMaxBars小,那么应该是dtStartingDate有优先权,因为日期比条形图更直观。IMHO。
而在一般情况下,一个用户把一个'勾'故意,和酒吧 - 默认情况下,越是这样,它是嵌入在系统(iMaxBars)。
'
ZS.有趣的是,我可能不会使用这个程序 :)