以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=169498) |
-- 作者: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编辑过]
|
-- 作者: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)?
|
-- 作者: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进行一下处理就行了。 |
-- 作者:saintlucifer -- 发布时间:2019/4/23 9:17:12 -- 编译的时候出现这个提示,看了下解决方案,似乎这种情况下不理也可以?
第 7 行,REF 函数在循环语句中可能会带来风险。 请参阅帮助公式部分的解决方案。 |
-- 作者:yukizzc -- 发布时间:2019/4/23 9:58:45 -- 不用理会,直接运行于图上就行了 |
-- 作者:out-u -- 发布时间:2019/4/24 15:58:05 -- 直接用ZIG了事。你那计算费工费时 |