以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 请教成交量累计达到一定数值画线问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=172003) |
-- 作者:plmokn -- 发布时间:2019/9/10 19:56:02 -- 请教成交量累计达到一定数值画线问题 在一分钟K线图中,每天从开盘开始计算成交手数,在当成交手数达到大于20000手时,取当根K线之前20000手的加权平均价 画横线, 并从下一根K线开始从0开始重新计算成交手数,当成交手数再一次达到大于20000手时,取当根K线之前20000手的加权平均价 画横线, 以后以此类推,直到收盘,下一交易日重新开始计算。 |
-- 作者:FireScript -- 发布时间:2019/9/11 9:32:29 -- “在当成交手数达到大于20000手时,取当根K线之前20000手的加权平均价 画横线” 这个是指在成交量达到20000 K 位置统计上次成交量20000位置到现在 这段时间收盘价的加权平均价? |
-- 作者:plmokn -- 发布时间:2019/9/11 14:03:29 -- 是的 |
-- 作者:plmokn -- 发布时间:2019/9/11 14:03:54 -- 是的 |
-- 作者:FireScript -- 发布时间:2019/9/11 14:28:13 -- 按照成交量作为权重? |
-- 作者:plmokn -- 发布时间:2019/9/11 15:01:55 -- 是的 |
-- 作者:FireScript -- 发布时间:2019/9/11 17:12:46 -- VARIABLE:ct:=0,mark:=0,res:=0;//ct累加成交量,mark标识成交量达到20000时候的位置 if TODAYBAR=1 or BARPOS=1 then ct:=0;//初始K或者当日第一个K 重置ct的值 ct:=ct+vol; if ct<20000 then //不在满足条件的位置,mark都重置成0 方便进行区分 begin mark:=0; end if ct>20000 or time=CLOSETIME(0) then //满足20000量的情况下 或者是收盘K了 重置ct ,并设置mark为1 begin ct:=0; mark:=1; end len:BARSLAST(mark=1 or (not(mark) and BARPOS=1));//获取跨度位置,上次满足20000量位置或者第一个K的位置 p1:=vol*c; len0:=ref(len,1)+2;//获取需要统计的K线周期跨度 result:if(len=0,sum(p1,len0)/(sum(vol,len0)),0),NODRAW;//计算出来的加权价格, if result<>0 then res:=result; k:res;//输出的线条 1.由于没有符合需求直接算加权的函数,上面代码逻辑上有点绕,我尽量注释了。另外这里的逻辑无法直接使用绘制图形,绘图函数有一定限制。 2.只在满足20000量或者收盘K上的位置计算一次。画线以变量指标的输出线作为替代(变量K)。 仅供参考。
[此贴子已经被作者于2019/9/11 17:13:34编辑过]
|
-- 作者:plmokn -- 发布时间:2019/9/14 13:00:57 -- 谢谢FireScript老师 |