以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  当仓位有变化时,我把相关信息写入文件,为什么会有重复的数据呢?  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=183812)

--  作者:qq代人发帖
--  发布时间:2021/1/8 13:49:55
--  当仓位有变化时,我把相关信息写入文件,为什么会有重复的数据呢?

VARIABLE:num:=0;//记录持仓量
VARIABLE:sprice:=price;//基准价格

手数:=ss;
开多条件:=C>=sprice+jg;//jg为网格间隔
平多条件:=C<=sprice-jg;

K线日期:DATE;
K线时间:TIME;
当前持仓量:HOLDING,COLORGRAY,LINETHICK0;
//当前资产:ASSET,NOAXIS,COLORGRAY;

IF K线日期 >= DATE_SELF and K线时间>= TIME_SELF and 开多条件 THEN 
BEGIN
开多:BUY(开多条件,手数,MARKET);
sprice:=sprice+jg;
END

IF K线日期 >= DATE_SELF and K线时间>= TIME_SELF and 平多条件 and HOLDING >= 手数 THEN 
BEGIN
平多:SELL(平多条件,手数,THISCLOSE);
sprice:=sprice-jg;
END
//当仓位有变化时,写入文件
IF num != HOLDING THEN
BEGIN
DEBUGFILE(\'C:\\jzt\\ru2101,mn01,1M.txt\',NUMTOSTR(HOLDING,0)+\' %.2f\' ,close);
num:=HOLDING;
END

 

当仓位有变化时,我把相关信息写入文件,为什么会有重复的数据呢?


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

--  作者:FireScript
--  发布时间:2021/1/8 14:05:11
--  
 这个和运行机制有关系。每次盘口数据更新的时候,都会在上一个K的数据基础上重新进行一次运算。
本根K的所有数据 都会在重新计算时重置。所以无论你这里的判断结果如何,下一个分笔到来时候一切都重新开始。


num 这个全局变量也是一样的,它无法记住单次计算的结果,它记住的是这个K走完时候,也就是K线固定时候的一个最终值。

--  作者:zhuiyin
--  发布时间:2021/1/8 14:54:53
--  那请问一下,如何调整代码,解决这个问题呢
那请问一下,如何调整代码,解决这个问题呢
--  作者:zhuiyin
--  发布时间:2021/1/8 16:33:31
--  请问一下,那我这样子修改可以吗?
VARIABLE:num:=0;//记录持仓量
VARIABLE:sprice:=price;//基准价格

手数:=ss;
开多条件:=C>=sprice+jg;//jg为网格间隔
平多条件:=C<=sprice-jg;

K线日期:DATE;
K线时间:TIME;
当前持仓量:HOLDING,COLORGRAY,LINETHICK0;
//当前资产:ASSET,NOAXIS,COLORGRAY;

IF K线日期 >= DATE_SELF and K线时间>= TIME_SELF and 开多条件 THEN 
BEGIN
开多:BUY(开多条件,手数,MARKET);
DEBUGFILE(\'C:\\jzt\\ru2101,mn01,1M.txt\',NUMTOSTR(HOLDING,0)+\' %.2f\' ,close);
sprice:=sprice+jg;
END

IF K线日期 >= DATE_SELF and K线时间>= TIME_SELF and 平多条件 and HOLDING >= 手数 THEN 
BEGIN
平多:SELL(平多条件,手数,THISCLOSE);
DEBUGFILE(\'C:\\jzt\\ru2101,mn01,1M.txt\',NUMTOSTR(HOLDING,0)+\' %.2f\' ,close);
sprice:=sprice-jg;
END