ktdev 发表于 2013-5-26 10:36:17

金魔方公式运行模式

有论坛朋友反映有时候金魔方翻页的时候画面可能会闪烁,这确实是存在的,尤其在比较慢的机器上可能会更明显。这是因为默认情况下,金魔方运行公式的模式和飞狐或者其他大部分软件不一样。金魔方画面上有两种运行公式的模式,见下图
1.异步运行公式,也就是默认方式,默认是不打勾的方式,也就是说,默认情况下金魔方异步运行公式,所谓异步,是指公式运行和画面显示是分开进行的(可以认为在背景运行),是由不同的线程执行,因此可能存在时间差,画面变动的时候有可能会导致闪烁感。
2.同步运行公式,也就是上图红色位置如果打勾,就会用同步运行方式,同步模式下,公式运行和画面显示都在主线程运行,这种模式下,不容易闪烁。


异步模式的优点:
1.公式运行不影响画面的操作,也不影响其他窗口中其他公式的运行,这对自动交易很重要,想象一下有些交易的公式需要追单,可能需要等待下单结果等,需要等待,·这时候你不想这个公式阻碍其他交易公式的运行,也不想画面无响应。
2.另外,对于那些需要较长时间运行的公式,例如VBscript,调用.net dll的公式等,这些公式运行时间可能比较长,尤其VBscript比较慢, .net dll本身是很快的,但是可能会用来抓取网络上的各种数据,也需要较长时间,运行这些公式时,异步模式也是有好处的,画面不会出现无响应的情况。

异步模式的缺点:就是可能有时候会导致画面闪烁了。

另外一个可能导致闪烁的原因是,历史数据是由多种数据源聚合而成,这些数据是分别从服务器返回,在本地没数据时,翻页的时候这些数据分别返回会导致公式重算了多次,这也可能导致闪烁,这个问题我们会持续改进。必须强调的是:虽然翻页的时候可能会多次重算公式,但这并不影响交易的逻辑,只有在数据完整的时候,金魔方才会发出下单的指令。

综上所述,在 选项 里, 把 同步运行 公式 打勾,可以有效避免画面闪烁,但同时也会可能导致画面无响应。
如果你确实对闪烁感觉不爽,并且也从来不需要运行VBS,也不想运行现在论坛上的 .net dll扩展公式,可以采用同步模式。

附上 飞狐帮助 里的一个VBS脚本,可以试试分别在同步好异步模式下运行这个公式,就会知道有什么区别。
也可以在飞狐里运行这个公式比较一下,在飞狐要 注释 ShowTips('公式正在运行') 这一行
foxbd:=high-low;
foxbfb:=0;
time1 := CURRENTTIME ;
//在飞狐要注释这一行
ShowTips('公式正在运行');
<%
vbsbd=ffl.vardata("foxbd")
i=ffl.vardata("foxbfb")
'n可用于确定最大值出现的比率,等等
n=ubound(vbsbd)
'以下为比较法排序,降序排序后,最后一个数据vbsbd(n)为最大值
for k = 0 to n - 1
        for j = k + 1 to n
        if vbsbd(k)>vbsbd(j) then
                x=vbsbd(k)
                vbsbd(k)=vbsbd(j)
                vbsbd(j)=x
                i=j
        end if
        next
next
'ffl.MsgBox("最大波值发生在离最后时间的周期数为:" & cstr(i))
ffl.vardata("foxbd")=vbsbd
ffl.vardata("foxbfb")=i
%>
time2 := CURRENTTIME ;
s := numtostr(time2 - time1, 0);
DrawTextex(1, 0, 0, 0,  s + '秒');
最大波动值:foxbd;
离本周期:foxbfb;飞狐下画面如下,金魔方同步模式下也是一样的,界面无响应。

寒松 发表于 2013-5-26 11:00:48

谢谢楼主!

寒松 发表于 2013-5-26 11:36:42

能否帮忙来段代码http://www.hs633.com/forum.php?mod=viewthread&tid=8431&extra=page%3D1

xiongwei 发表于 2013-5-26 19:26:42

知道原因,这样有选择,非常好

nttz 发表于 2013-5-26 20:06:38

本帖最后由 nttz 于 2013-5-26 20:45 编辑

有几个问题请教下
1。历史数据是由多种数据源聚合而成,这些数据是分别从服务器返回,在本地没数据时,翻页的时候这些数据分别返回会导致公式重算了多次 你说的数据源是什么?分别返回为什么会重算?
2. 请教下 run by 四种模式的区别
3.恳求逐根下如何计算波段高低?因为只有过了后才知道是高还是低,怎么实现在逐根模式下?

benyip 发表于 2013-5-29 10:08:54

进来学习了,我觉得闪烁的问题,跟公式重算多次有关。
如何处理好这个问题,闪烁的问题就能解决好了。

fushr 发表于 2013-6-2 12:39:47

RE: 金魔方公式运行模式

学习学习。

9898 发表于 2013-6-21 13:34:39

学习学习。{:4_87:}

股神心法 发表于 2013-7-5 15:23:42

学习学习

hongxing1110 发表于 2013-7-5 15:37:05

RE: 金魔方公式运行模式




学习学习!
页: [1] 2 3 4 5
查看完整版本: 金魔方公式运行模式