以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 请教一个问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=94442) |
-- 作者:qq代人发帖 -- 发布时间:2016/3/7 15:59:15 -- 请教一个问题 假设我定义了5个波形。分别代表公式A,B,C,D,E。判断波形有没有发生的话就调用\'A.signal\'拿到结果。现在我想做的事情是,我定义了5个周期,1分钟,5分钟,15分钟,30分钟,60分钟。如果1分钟周期上最近20个周期内发生过某个波形且任何一个大周期20个周期内也发生过某个波形。就作为一个买入信号。5分钟,15分钟同理。请教应该如果实现。好像有点复杂。
|
-- 作者:panda1987 -- 发布时间:2016/3/7 16:00:49 -- 我希望公式能够尽量通用,以后改个周期,加个波形都不需要有太多修改 |
-- 作者:pyd -- 发布时间:2016/3/7 16:04:26 -- 用stkindi 函数跨周期跨品种调用指标,具体用法您可以看下函数说明 |
-- 作者:panda1987 -- 发布时间:2016/3/7 16:06:37 -- 这个我知道,但是我想知道大概的程序逻辑。我用传统的编程语言思维发现差距比较大。循环,数组,在逐K线模式下我没有彻底的理解。所以想请教一下大师,能不能给我大概写个框架,应该不需要太多代码。 |
-- 作者:panda1987 -- 发布时间:2016/3/7 16:08:32 -- 比如金字塔有没有二维数组的概念等等我还不是很清楚 |
-- 作者:yukizzc -- 发布时间:2016/3/7 16:08:32 -- count计算多少周期内符合条件的数量,这个A.sinnal是你自己的指标是吧 你在a公式里去统计count(sinnal,20),如果这大于1就是符合条件了 然后用3楼那个函数去跨周期调用就行了 |
-- 作者:panda1987 -- 发布时间:2016/3/7 16:09:45 -- 这个我知道。但是因为涉及到很多周期,很多波形。难道必须一个个写出来吗?这样以后修修改改就比较麻烦了,能不能用循环语句比如? |
-- 作者:jinzhe -- 发布时间:2016/3/7 16:11:20 -- 要一个个写出来,不要省略 |
-- 作者:panda1987 -- 发布时间:2016/3/7 16:17:53 -- 最笨的办法我知道,比如: signalA_1分钟:=STKINDI(\'\',\'A.signal\',0,1),NOAXIS,NODRAW; signalB_1分钟:=STKINDI(\'\',\'B.signal\',0,1),NOAXIS,NODRAW; signalC_1分钟:=STKINDI(\'\',\'C.signal\',0,1),NOAXIS,NODRAW; signalD_1分钟:=STKINDI(\'\',\'D.signal\',0,1),NOAXIS,NODRAW; signalE_1分钟:=STKINDI(\'\',\'E.signal\',0,1),NOAXIS,NODRAW; signalA_5分钟:=STKINDI(\'\',\'A.signal\',0,2),NOAXIS,NODRAW; signalB_5分钟:=STKINDI(\'\',\'B.signal\',0,2),NOAXIS,NODRAW; signalC_5分钟:=STKINDI(\'\',\'C.signal\',0,2),NOAXIS,NODRAW; signalD_5分钟:=STKINDI(\'\',\'D.signal\',0,2),NOAXIS,NODRAW; signalE_5分钟:=STKINDI(\'\',\'E.signal\',0,2),NOAXIS,NODRAW; ... signal_1分钟 = count(signalA_1分钟,20) > 0 || count(signalB_1分钟,20) > 0 || count(signalC_1分钟,20) > 0 || count(signalD_1分钟,20) > 0 || count(signalE_1分钟,20) > 0; signal_5分钟 = count(signalA_5分钟,20) > 0 || count(signalB_5分钟,20) > 0 || count(signalC_5分钟,20) > 0 || count(signalD_5分钟,20) > 0 || count(signalE_5分钟,20) > 0; signal_15分钟 = count(signalA_15分钟,20) > 0 || count(signalB_15分钟,20) > 0 || count(signalC_15分钟,20) > 0 || count(signalD_15分钟,20) > 0 || count(signalE_15分钟,20) > 0; signal_30分钟 = count(signalA_30分钟,20) > 0 || count(signalB_30分钟,20) > 0 || count(signalC_30分钟,20) > 0 || count(signalD_30分钟,20) > 0 || count(signalE_30分钟,20) > 0; signal_60分钟 = count(signalA_60分钟,20) > 0 || count(signalB_60分钟,20) > 0 || count(signalC_60分钟,20) > 0 || count(signalD_60分钟,20) > 0 || count(signalE_60分钟,20) > 0; if signal_1分钟 then begin if signal_5分钟 || signal_15分钟 || signal_30分钟 || signal_60分钟 then begin buy... end end 这样的代码我实在是受不了T_T,而且我的判断逻辑比这个还要复杂。这么写的话改起来就要崩溃了。
|
-- 作者:panda1987 -- 发布时间:2016/3/7 16:19:46 -- 那这个公式就不能用到5分钟上了,因为我希望5分钟也可以跑起来,15分钟也可以跑起来等等。 另外我的波形可能是有方向的,做多或者做空,只有同方向的话才去下单。这些条件再加上去,那么这样代码实在臃肿不堪。 有没有比较灵活的办法?比如能不能用个循环减少代码量?
[此贴子已经被作者于2016/3/7 16:21:28编辑过]
|