//对全局变量重置和保存
if barpos>extgbdata('barp') then
begin
extgbdataset('num',0) ; //记录当根K线的交易次数
extgbdataset('lossnum',0) ; //记录亏损次数,在新一根K线开始时,初始化为0
extgbdataset('barp',barpos) ; //控制新的一根K线重新计算
end
//输出
Tbarp: barpos, linethick0 ;
Tnum: extgbdata('num'), linethick0 ;
Tlossnum: extgbdata('lossnum'), linethick0 ;
模拟账户运行是发现(使用免费专业版),到下一根K线时候,金字塔无法更新全局变量保存。(先手动令以上三个变量都不为0)
继续运行发现,可累加但不能在运行至下根K线处重置为0。
累加如下:
if Tholding<0 and
平空条件 then //平空
begin
Tsellshort(1,0,mkt), ALLOWREPEAT,ORDERQUEUE ;
extgbdataset('num',extgbdata('num')+1) ;//平仓一次算一次交易
if C>Tenterprice then extgbdataset('lossnum',extgbdata('lossnum')+1) ; // 平仓时判断,是否亏损,并记录亏损次数
end
if Tholding>0 and
平多条件 then //平多
begin
Tsell(1,0,mkt), ALLOWREPEAT,ORDERQUEUE ;
extgbdataset('num',extgbdata('num')+1) ;//平仓一次算一次交易
if C<Tenterprice then extgbdataset('lossnum',extgbdata('lossnum')+1) ; // 平仓时判断,是否亏损,并记录亏损次数
end
另:以上方式的平仓的ORDERQUEUE ,和开仓的ORDERQUEUE 能匹配吗?
orderqueue是在反手程序里面才是顺序下单
if .....then begin
tsell,orderqueue;
tbuyshort,orderqueue;
end
你那样单独的写是在下单条件触发后等两秒的时间,之后就下单,不管前面的开平仓
其他的问题在测试
//对全局变量重置和保存
if barpos>extgbdata('barp') then
begin
extgbdataset('num',0) ; //记录当根K线的交易次数
extgbdataset('lossnum',0) ; //记录亏损次数,在新一根K线开始时,初始化为0
extgbdataset('barp',barpos) ; //控制新的一根K线重新计算
end
//输出
Tbarp: barpos, linethick0 ;
Tnum: extgbdata('num'), linethick0 ;
Tlossnum: extgbdata('lossnum'), linethick0 ;
这段代码的结果和你想象的不一样在哪里?
运行的结果哪里不对?
发现全局变量无法更新。
模拟账户运行是发现(使用免费专业版),到下一根K线时候,金字塔无法更新全局变量保存。(先手动令以上三个变量都不为0,下根K线处未见金字塔重置全局变量为0)
以下是引用fff在2014/3/26 15:07:43的发言:
发现全局变量无法更新。
模拟账户运行是发现(使用免费专业版),到下一根K线时候,金字塔无法更新全局变量保存。(先手动令以上三个变量都不为0,下根K线处未见金字塔重置全局变量为0)
这个是没问题的,你把有问题的现象截图下

此主题相关图片如下:全局变量数据管理.jpg

后台轮询方式:
在当根K线先手动令num和lossnum为0,然后交易操作亏损平仓后,到下根K线后再查会发现num和lossnum未重置为0。(BARP第一次被金字塔保存,但下一根K线不见更新!)
或者,在当根K线先手动令num和lossnum不为为0,到下根K线后再查会发现num和lossnum未重置为0。(BARP第一次被金字塔保存,但下一根K线不见更新!)