我大概知道是怎么回事了。是历史信号限制到了这里的交易逻辑。
我看了下之前位置前 有个 开多信号。
![dvubb 图片点击可在新窗口打开查看](skins/default/filetype/png.gif)
此主题相关图片如下:temp.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2021-5/202151915463188604.png)
这样的话,今天日线上 一开始出现平多开空信号,这样逻辑原本是没问题的。但是这个信号消失了之后,那么现在虚拟持仓就是一个多仓了已经,这样导致图表上无法再发出开多信号了。 因为图表上最新K位置信号都是依靠最新的数据生成的,因此中间过程 是不记录的。所以你这个复核的需求 就没用成功实现了。
目前的话,可能只能用持仓同步功能操作下了。
![dvubb 图片点击可在新窗口打开查看](skins/default/filetype/png.gif)
此主题相关图片如下:temp.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2021-5/20215191558960848.png)
那么我是应该选择走完一根K线同步吗?这样的话同步是在什么时间实现呢?收盘前几秒?还是次日开盘?
你这个恐怕的用固定时间间隔的。否则没办法在收盘前 给你持仓矫正过来。
固定时间间隔计算的是自然时间?那我要让所有加载品种都在收盘前同步的话应该怎么设置这个时间呢
设86400秒?问题是怎么控制这个间隔时点正好在一天收盘前呢
引用过多有办法解决吗,假如像开始那样全部写在一套代码里,会不会就不会发生这个问题?另外如果改写麻烦把收盘前复核的内容也删掉,因为实现不了
1.发现了之前没发现的一个BUG 。有2个地方的引用没传参数。我改了之后挂了很久 反正没再出现那个报错了。因为这个参数不同,是作为不同的引用的。你试试呢。
INPUT:N(21,1,100,1),ss(1,1,100,1);
kd:c>ema(c,N) and "A.kd#MIN1"(N);
pd:"A.pd#MIN1"(N);
kk:c<ema(c,N) and "A.kK#MIN1"(N);
pk:"A.pk#MIN1"(N);
if kd or pk then
begin
sellshort(1,holding,market);
buy(holding=0,ss,market);
END
if kk or pd then
begin
sell(1,holding,market);
buyshort(holding=0,ss,market);
END
2.去除复核的部分。可以把被调用指标改下就行了。去除那个时间的判断了。但是这样平仓就变了单纯的c>maN或者c<maN.
INPUT:N(21,1,100,1);
emaN:(2*C+(N-1)*"EXPMA.M1##DAY"(N))/(N+1);
t:=timetot0(CLOSETIME(0))-time0;//距离收盘K的跨度(秒)
kd:all(c>emaN,15);//是否连续60周期满足
pd:c<emaN;//c<emaN
kk:all(c<emaN,15);//是否连续60周期满足
pk:c>emaN;//c>emaN