Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]如何编写以下策略

1楼
saintlucifer 发表于:2019/4/22 11:02:42

有如下变量:

v2 为最近一段t时间内,当前k收盘价-t时间段内的k开盘价;例如当t=1,就是当前k,为close-open;当t=2,则为close-ref(open,1);当t=3,则为close-ref(open,2);

v1 为最近一段t市价内,昨k收盘价-t时间段内的昨k开盘价;例如当t=1,则为ref(close,1) - ref(open,1);当t=2,则为ref(close,2) - ref(open,3);当t=3,则为ref(close,3)-ref(open,5);

每条k都计算t=1到50时,a[t]=(v2-v1)/t 的数值,并记录其中的最大值a[max]及此时的t数值;

最后,再记录最近500条k中,每条k的a[max]里面最大那个,最好能分别记录a的正负极值,就是正的最大a[max],以及负的最小a[-max].

 

请教如何写出以上策略。

 

 

 

 

[此贴子已经被作者于2019/4/22 11:03:21编辑过]
2楼
FireScript 发表于:2019/4/22 13:15:32
 “v1 为最近一段t市价内,昨k收盘价-t时间段内的昨k开盘价;例如当t=1,则为ref(close,1) - ref(open,1);当t=2,则为ref(close,2) - ref(open,3);当t=3,则为ref(close,3)-ref(open,5);”

后面这里的规律是ref(c,t)-ref(o,2*t-1)?
3楼
FireScript 发表于:2019/4/22 13:52:28
t:=10;//自行定义td的值。
temp:=-100000;//初始定义一个比较小的值
j:=0;
for i=1 to t  do
begin
v1:ref(c,i)-ref(o,2*i-1);
v2:c-ref(o,i-1);
a:=(c-ref(o,i-1)-ref(c,i)+ref(o,2*i-1))/i;
if a>temp then //保存最大值以及对应的t值
begin
temp:=a;
j:=i;
end
end

max_v:temp;//最大值
max_t:j;//最大值对应的t

算法上大致这样处理就行了。需要注意:
1.t值较大以及K线比较多的情况下,计算量非常大。本地测试还是比较卡的。
2.这个计算涉及到的历史数据比较多。K线排序靠前的若干K的值是不完整的。比如第40个K的位置,t=50情况下 压根就ref不到指定的数据。你这个至少要2倍t的数据量才行。

“再记录最近500条k中,每条k的a[max]里面最大那个,最好能分别记录a的正负极值,就是正的最大a[max],以及负的最小a[-max].”
这个直接用hhv 对max_v进行一下处理就行了。

最小值的记录,模仿最大值的方式处理下就行了。
4楼
saintlucifer 发表于:2019/4/23 9:17:12

编译的时候出现这个提示,看了下解决方案,似乎这种情况下不理也可以?

 

第 7 行,REF 函数在循环语句中可能会带来风险。
第 8 行,REF 函数在循环语句中可能会带来风险。
第 8 行,REF 函数在循环语句中可能会带来风险。

请参阅帮助公式部分的解决方案。
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130

5楼
yukizzc 发表于:2019/4/23 9:58:45
不用理会,直接运行于图上就行了
6楼
out-u 发表于:2019/4/24 15:58:05
直接用ZIG了事。你那计算费工费时
共6 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01367 s, 3 queries.