标签:对比 17. 开始 固定 xxxxx 交易 情况 插入 简练
1. Multicharts的图表中有砖型图的解释,参考官方论坛解释:https://forum.multicharts.cn/forum/cat/1/thread/2821?k=%E7%A0%96
2. 砖型图在交易中会非常棒的提升交易绩效,因为砖型图起到了降噪和二分的作用,降噪不用多解释,因为事先设定砖型图的波动单位,不符合这个单位的小波动就被过滤掉了;所谓二分就是在砖型图的世界中只有两种状态:涨和跌,因此对于绩效的提升非常棒。
3. 但是在Multicharts砖型图不能直接用于交易,这就使得砖型图的回测和实际交易存在一定的冲突(不是全部),我总结了一下主要原因时Multicharts砖型图(尤其是非传统砖型图)的砖的时间产生了偏移所导致的,因此在砖型图用于多图标插入和直接交易上会存在这方面的问题。究竟Multicharts软件中关于砖型图这块儿的代码具体出现了什么问题,希望后面能够改正过来。这里根据Multicharts的官方解释,对于砖型图进行提取解释和提取编程的方式,固定时间,不使砖型图进行偏移,方便进行回测和实盘交易。(可能后面写的比较繁杂,我尽可能简练和清晰的表示处理,因此分为几大类问题,要想研究Multicharts砖型图的朋友,耐住性子看完,这里的条例应该是非常清晰的)
4. 第一大类的问题:
传统砖图和非传统砖图:(借用官方说明里面的分类方式)
我们知道砖图是满足于多少个单位大小变动然后形成一块儿砖,这里我们拿K线图进行对比来看。
K线:K线是时齐的数据表示方式(也就是说,规定好时间大小:比如30分钟,15分钟... ...,所有的K线四价(开高低手)都是在规定的这一个周期内去变化,只有当前周期结束了,下一个周期开始,然后在进行变化)。就好比我规定一个常规动作必须多长时间完成,不管你完成的“质量”如何。
砖型图:砖型图是价齐的数据表示方式。时间不重要,你必须满足我设定的价格范围才能形成数据的表示,不满足不形成。就好比,我拿500ml的杯子,满足500ml我倒一次,不满足我继续等待。
但是我们可以看到在Multicharts当中表示砖图属性当中有一个周期选项。这里的意思时新砖型图里面加入了时齐的因素,把传统砖图就行改进形成新砖图(也就是官网当中指的非传统砖图),后面还有价格选择:组合方式(收盘价/开高低收),收盘中端(就是每天开盘重新计算),显示幽灵bar,烛芯,真实开盘价,这些都很好理解,具体可以看官网。
定义一下:
传统砖图:设定方式周期1tick,单位大小(对应品种最小变动/设置变动)。
非传统砖图:设定方式周期>1tick,单位大小(对应品种最小变动/设置变动)。
区别:
区别1:最重要的一个区别就是加入一个“刷新频率”的概念,传统砖图很好理解,baidu很多自己看吧,非常简单。就是满足就形成。
区别2:非传统砖图,也就是说为什么要有一个周期选择,就是把时间的变量加入进来,是在一个对应的K线周期范围内去完成,也就是时齐+价齐的一种形成方式。
区别3:要理解非传统砖图,一定要对应着K线图来看。当前的砖型图价格的形成对应K线图来形成和观察。
重点:
为什么Muticharts要有这么一个非传统砖图,因为非传统砖图比传统砖图表示数据更好呗!存在就是合理的。
5. 第二大类问题:
以非传统砖图最简单的方式为例解释非传统砖型图的形成方式,添加流程图解释,这样会更加明白。
去除设定:幽灵bar,烛芯,真实开盘价(这三个不勾选,很简单理解自己看一下就明白了)
保留设定:收盘时中断(就是每天开盘最为砖型图计算的一个起点,不勾选就是从图表开始的第一个K线位置继续宁计算),周期(设定1分钟,因为>1tick之上的刷新频率用1分钟比较看的清晰一些,其他一次类推)固定单位:5个点,以当前官网例子。
我们观察组合方式有两种:
开高低收方式/收盘价方式,因此我们分两种情况分别解释一下。解释了这两种情况也就对非传统砖图的概念。
设定概念和注意:
A:K线的时间序列:也就是K线的价格序列包含时间,包含开高低收。
B:砖型图的时间序列:也就是目标形成的砖型图的时间序列,包含砖型图的开高低收,时间。
C:触发价格:跟砖型图有关,这个概念需要保留。
D:一定要拿砖型图的周期和K线图的周期对比进行观察,1分钟砖型图 对应 1分钟K线图。
第一部分:以组合方式=收盘价,周期 = 1分钟,单位大小 = 5,收盘时中断。
Ø 1.1 以收盘价作为组合方式来说,如何都满足的话肯定要少一个块儿砖。
解释:
K线序列:A B C D E F G.... ....
砖型序列: A‘ B’ C‘ D’ E‘ F’ G‘... ....
这也就是可以看出,K线图开盘时第一根K线的Close价格只是作为一个起始的价格进行计算。
Ø 1.2 第零步:K线1分钟序列:
time: 916.00 917.00 918.00 919.00 920.00 921.00 922.00 923.00
close: 28685.00 28708.00 28715.00 28699.00 28691.00 28702.00 28697.00 28687.00
Ø 1.3 第一步:确定第一块砖的开盘价
time: 未确定
BricOpen: 28685.00
if time=开盘 then begin
BricOpen = Close; //第一块砖的开盘价等于第一个bar的收盘价
BricClose = Close; //第一块转的收盘价等于一个bar的收盘价,因为这里时按照时间序列写的默认等于close,暂时按照K线时间序列进行时齐。
BricTime = 0; //第一块砖的时间初始化为0,表示未完成
TriggerPrice = Close; //触发价 = 第一个bar的收盘价
BricOne = 0; //单独处理第一块砖
BricCondition = 0; //第一块砖的涨跌状态初始化为0,1为上涨,-1为下跌
end;
Ø 1.4 第二步:确定第一块砖的收盘价和时间
time: 917.00
BrickClose: 28690.00
if time>开盘 and time <= 收盘 then begin
if BricOne = 0 then begin //如果第一块砖还没处理完毕
if Close - TriggerPrice[1] > SetPoint then begin //如果当前的收盘价大于触发价格设定点位,那么认定为上涨砖
BricOpen = BricOpen; //上涨砖的开盘价等于第一个K线的开盘价
BricClose = BricOpen + SetPoint; //上涨砖的收盘价等于开盘价+设定点位
BricTime = Time; //上涨砖的时间等于当前K线触发时间
TriggerPrice = Close; //保留第一块砖的触发价 = 真实K线收盘价
BricOne = 1; //第一块砖处理完毕,状态设置为1,不再处理第一块砖状态。
BricCondition = 1; //第一块砖处理完毕,标记为上涨状态
end;
if Close - TriggerPrice[1] < -1*SetPoint then begin //如果当前的收盘价价格小于触发价格设定点位,那么认定为下跌砖
BricOpen = BricOpen; //下跌砖的开盘价等于第一个K线的开盘价
BricClose = BricOpen - SetPoint; //下跌砖的收盘价等于开盘价-设定点位
BricTime = Time; //下跌砖的时间等于当前K线触发时间
TriggerPrice = Close; //保留第一块砖的触发价 = 真实K线收盘价
BricOne = 1; //第一块砖处理完毕,状态设置为1,不再处理第一块砖状态。
BricCondition = -1; //第一块砖处理完毕,标记为下跌状态
end;
end;
if BricOne = 1 then begin //开始处理第二块砖
XXXXXXXXXXXXXX
end;
end;
Ø 1.5 第三步:开始处理第二块及其后面的砖
继续第二步红色代码
if BricOne = 1 then begin //开始处理第二块砖,和第一块砖/后面的砖比较涨跌状态共有四种
if BricCondition[1] = 1 and Close - TriggerPrice[1] > 0 then begin //上一块砖为上涨,当根砖为上涨
BricOpen = BricClose[1] + IntPart((TriggerPrice[1] - BricClose[1])/SetPoint) * SetPoint;
//当根砖的开盘价为 IntPart (上一根的触发价 - 上一根的收盘价)/设定点位,然后取整,根据得到的倍数*设定点位 + 上一根收盘价。
//如果为0表示价齐(当根开盘价=上根收盘价)
if Close > (BricOpen + SetPoint) then begin
BricClose = BricOpen + SetPoint; //当根上涨砖的收盘价等于开盘价+设定点位
BricTime = Time; //当根上涨砖的时间等于触发价时间
BricPrice = Close; //当根上涨砖的触发价 = 真实K线收盘价
BricCondition = 1; //标记当根为上涨砖 = 1
end;
end;
if BricCondition[1] = 1 and Close - TriggerPrice[1] < 0 then begin //上一块砖为上涨,当根砖为下跌
if Close < BricOpen[1] then begin //当根下跌砖的收盘价小于上一块儿上涨砖的开盘价,证明已够下跌幅度
BricOpen = BricClose[1]; //当根下跌砖的开盘价 = 上一根涨砖的收盘价
BricClose = BricOpen - SetPoint; //当根下跌砖的收盘价 = 当根下跌砖的开盘价 - 设定幅度
BricTime = Time; //当根下跌砖的时间为当根触发砖的时间
BricCondition = -1 //标记当根为下跌砖 = -1
end;
end;
if BricCondition[1] = -1 and Close - TriggerPrice[1] < 0 then begin //上一砖为下跌,当根砖为下跌
BricOpen = BricClose[1] - IntPart((BricClose[1] - TriggerPrice[1])/SetPoint) * SetPoint;
//当根砖的开盘价为 IntPart (上一根的收盘价 - 上一根的触发价)/设定点位,然后取整,根据得到的倍数*设定点位 , 上一根收盘价 - 这个倍数。
//如果为0表示价齐(当根开盘价=上根收盘价)
if Close < (BricOpen - SetPoint) then begin
BricClose = BricOpen - SetPoint; //当根下跌砖的收盘价等于开盘价-设定点位
BricTime = Time; //当根下跌砖的时间等于触发价时间
BricPrice = Close; //当根下跌砖的触发价 = 真实K线收盘价
BricCondition = -1; //标记当根为下跌砖 = -1
end;
end;
if BricCondition[1] = -1 and Close - TriggerPrice[1] > 0 then begin //上一块砖为下跌,当根砖为上涨
if Close > BricOpen[1] then begin //当根上涨砖的收盘价大于上一块儿上涨砖的开盘价,证明已够上涨幅度
BricOpen = BricClose[1]; //当根上涨砖的开盘价 = 上一根涨砖的收盘价
BricClose = BricOpen + SetPoint; //当根上涨砖的收盘价 = 当根下跌砖的开盘价 + 设定幅度
BricTime = Time; //当根下跌砖的时间为当根触发砖的时间
BricCondition = 1 //标记当根为上涨砖 = 1
end;
end;
end;
第一部分:以组合方式=开高低收,周期 = 1分钟,单位大小 = 5,收盘时中断。
(未完持续编辑)
量化投资_关于Multicharts砖型图(传统砖型图和非传统砖型图)最详细的解释
标签:对比 17. 开始 固定 xxxxx 交易 情况 插入 简练
原文地址:https://www.cnblogs.com/noah0532/p/10702877.html