以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教布林线跨周期的编写?謝謝  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=173629)

--  作者:blaze
--  发布时间:2019/12/19 20:52:26
--  请教布林线跨周期的编写?謝謝
请教下面的情况怎么写?

条件1:价格上碰1小时布林上轨,并运行在中轨之上,有了开多单的条件,价格破中轨条件结束。(布林线:20,20,2)

开多条件:在满足条件1的前提下,价格上碰15分钟布林线上轨,开多单1手,持仓,中轨止损。


謝謝

--  作者:blaze
--  发布时间:2019/12/19 21:26:22
--  
在加多一个条件:价格在日线布林线中轨以上才可做多单,在中轨以下不做单
--  作者:zm71212302
--  发布时间:2019/12/20 2:39:15
--  
跨周期引用布林在论坛中以前有的,你可以查找一下,同时可以学习一下这个引用周期的函数


引用任意品种任意周期的任意指标输出

注意1:推荐使用V3.02版本推出的Stkindiex函数,能极大的提高运行效率。
注意2:若只是做模块化编程指标调用推荐使用#.#模式的用户函数编程模式,可以提高调用效率。
注意3:调用该函数将消耗大量资源和内存,不推荐大量调用,并请注意编程效率。
用法:
STKINDI(STKLABEL,INDINAME,CO,PERIOD[,Num])
STKLABEL 指定品种代码,如为空表示当前品种,指定品种时推荐使用市场+代码的格式,例如SH600000,ZJIF00等.
INDINAME 调用的指标、交易系统 (被引用变量必须是以:做变量的线输出类型)
CO 坐标轴类型 0交易日坐标 1自然日 2交易交易时间
PERIOD 周期类型,有效值范围为(0-24),依次表示:
0:分笔成交、1:1分钟、2:5分钟、3:15分钟、4:30分钟、5:60分钟、
6:日、7:周、8:月、9:年、10:多日、11:多分钟、12:多秒、
13:多小时、14:季度线、15:半年线、16:节气线、17:3分钟、18:10分钟、19:多笔线、20:自定义N日线、21:自定义N分钟线、22:自定义N秒线
23:自定义N笔线;24:自定义N小时线;25:等价K线;26:等量K线;
Num变量说明:
1、当PERIOD周期<=19,Num为左右偏移周期个数(可选),0表示引用当前数据,小于0为引用之前数据,大于0为引用之后数据;
2、当PERIOD周期>=20和<=24时,Num为自定义N周期的具体数字

警告:小周期引用大周期会带来信号闪烁的严重问题,推荐使用上周期已经确立的大周期信号(参数Num = -1)

例如:
STKINDI(\'1A0001\',\'MA.MA1(8,12,26,60)\',0,DATAPERIOD);
计算1A0001的当前周期MA指标的MA1指标线
STKINDI(\'\',\'RSI.RSI1\',0,6);
计算当前品种的日线周期RSI指标的RST1指标线
STKINDI(\'SH600000\',\'RSI\',0,6,-1);
引用昨日SH市场600000品种的日线周期RSI指标最后—行输出并且使用公式的默认参数
STKINDI(\'SH600000\',\'RSI\',0,21,8);表示引用RSI指标自定义8分钟周期的公式当前数据 
STKINDI(\'SH600000\',\'RSI\',0,11,0);表示引用RSI指标多分钟周期的公式数据(多分钟参数在工具菜单->选项->常规选项卡中设置),
若参数为数字变量,那么需要有个字符串转换的过程
s:=5;
m:=NUMTOSTR(s,0);//NUMTOSTR函数将数字转换到字符串,再带入变量中
vola:stkindi(\'if10\',\'ATR.ATR(\'&m&\')\',0,6,-1);//计算IF10合约的日线周期指标ATR的ATR指标线,传递参数m值为5。
//第2个参数\'\'里的是文本,由三部分组成:\'ATR.ATR(\'和m还有\')\',这三部分由两个连接符号&连接起来,实现对数值参数的文本传输。
引用数据时,需要实现确认被引用品种周期数据齐全,再首次使用或者在不确定时,请手工进行数据补充工作.
当周期参数为25或26时取设置中默认的等价等量设置,要注意使用不当(当等价等量数值过大)可能会造成未来数据引用!
所属函数组:引用函数

--  作者:blaze
--  发布时间:2019/12/20 9:09:47
--  
可以帮忙直接写下来吗?谢,主要是看不明白。
--  作者:FireScript
--  发布时间:2019/12/20 9:34:13
--  
 “
条件1:价格上碰1小时布林上轨,并运行在中轨之上,有了开多单的条件,价格破中轨条件结束。(布林线:20,20,2)

开多条件:在满足条件1的前提下,价格上碰15分钟布林线上轨,开多单1手,持仓,中轨止损。

条件1是指当前周期价格在小时线布林带上轨之上?

--  作者:blaze
--  发布时间:2019/12/20 9:39:18
--  
不是,是碰了上轨,视为可交易的条件。同时价格运行在1小时中轨之上,条件才成立。
--  作者:blaze
--  发布时间:2019/12/20 9:40:28
--  
日线就只要在布林线的中轨之上,就成立。
--  作者:FireScript
--  发布时间:2019/12/20 10:06:00
--  
 是当前周期的价格碰上了还是小时周期自己的价格碰上了。因为你跨周期调用的,这个地方必须理清了。
--  作者:FireScript
--  发布时间:2019/12/20 10:21:47
--  
Day_MID:STKINDI(\'\',\'BOLL.MID\',0,6,0);//日线中轨

h_UPPER:STKINDI(\'\',\'BOLL.UPPER\',0,5,0);//小时线上轨
h_MID:STKINDI(\'\',\'BOLL.MID\',0,5,0);

15min_UPPER:STKINDI(\'\',\'BOLL.UPPER\',0,3,0);
15min_MID:STKINDI(\'\',\'BOLL.MID\',0,3,0);


cd1:cross(c,h_UPPER) and c>h_MID and c>Day_MID;//上穿上轨且在中轨之上
cd2:cross(c,15min_UPPER);

cd:cd1 and cd2;//开仓条件

cd3:cross(15min_MID,c);//下穿15分钟中轨

if cd and holding=0 then buy(1,1,market);
if cd3 and holding>0 then sell(holding>0,holding,market);


--  作者:blaze
--  发布时间:2019/12/20 10:57:08
--