以下是文华财经中瀑布线的指标代码:
PB1:(EMA(CLOSE,M1)+MA(CLOSE,M1*2)+MA(CLOSE,M1*4))/3;
PB2:(EMA(CLOSE,M2)+MA(CLOSE,M2*2)+MA(CLOSE,M2*4))/3;
PB3:(EMA(CLOSE,M3)+MA(CLOSE,M3*2)+MA(CLOSE,M3*4))/3;
PB4:(EMA(CLOSE,M4)+MA(CLOSE,M4*2)+MA(CLOSE,M4*4))/3;
PB5:(EMA(CLOSE,M5)+MA(CLOSE,M5*2)+MA(CLOSE,M5*4))/3;
PB6:(EMA(CLOSE,M6)+MA(CLOSE,M6*2)+MA(CLOSE,M6*4))/3; //定义6条瀑布线
在TB中如何编写并且能够在K线图中显示出来?
一般就是找到TB对应的函数
学会翻阅帮助文档
上面这位同学就给你了例子
管理员你好,楼下的同学已经帮我写了代码。
我把这段代码复制以后,打开公式管理器,然后新建公式,粘贴这段代码。然后编译公式,显示没有错误。
但是我在主图选择插入这个指标,主图却没有变化,也就是不能显示这个指标。
请问这是怎么回事呢?能否帮忙解决一下?谢谢了!
Params
Integer Length1(5);
Integer Length2(10);
Integer Length3(20);
Integer Length4(30);
Integer Length5(60);
Integer Length6(120);
Vars
Numeric PB1;
Numeric PB2;
Numeric PB3;
Numeric PB4;
Numeric PB5;
Numeric PB6;
Plot PBPlt;
Events
OnBar(ArrayRef<Integer> indexs){
PB1 = (XAverage(Close, Length1) + AverageFC(Close, Length1 * 2) + AverageFC(Close, Length1 * 4)) / 3;
PB2 = (XAverage(Close, Length2) + AverageFC(Close, Length2 * 2) + AverageFC(Close, Length2 * 4)) / 3;
PB3 = (XAverage(Close, Length3) + AverageFC(Close, Length3 * 2) + AverageFC(Close, Length3 * 4)) / 3;
PB4 = (XAverage(Close, Length4) + AverageFC(Close, Length4 * 2) + AverageFC(Close, Length4 * 4)) / 3;
PB5 = (XAverage(Close, Length5) + AverageFC(Close, Length5 * 2) + AverageFC(Close, Length5 * 4)) / 3;
PB6 = (XAverage(Close, Length6) + AverageFC(Close, Length6 * 2) + AverageFC(Close, Length6 * 4)) / 3;
PBPlt.line("PB1", PB1);
PBPlt.line("PB2", PB2);
PBPlt.line("PB3", PB3);
PBPlt.line("PB4", PB4);
PBPlt.line("PB5", PB5);
PBPlt.line("PB6", PB6);
}
👍
友友你好,十分感谢你的帮助。
我把你的这段代码复制以后,打开公式管理器,然后新建公式,粘贴这段代码。然后编译公式,显示没有错误。
但是我在主图选择插入这个指标,主图却没有变化,也就是不能显示这个指标。
友友你知道是怎么回事吗?
截个图看看,要全屏的那种。
上面是公式界面。然后在下面的行情界面中,右键-插入公式
然后选择瀑布线指标,如下图
但是主图上仍然不能显示出瀑布线
给你一个新版本代码,跑一下试试
Params
Integer Length1(5);
Integer Length2(10);
Integer Length3(20);
Integer Length4(30);
Integer Length5(60);
Integer Length6(70);
Vars
Numeric PB1;
Numeric PB2;
Numeric PB3;
Numeric PB4;
Numeric PB5;
Numeric PB6;
Plot PbPltss;
Events
OnInit(){
SetBackBarMaxCount(Length6 * 4);
}
OnReady(){
If(BarCount < Length6 * 4) Alert("数据源样本数不够最大周期要加载:" + Text(Length6 * 4) + "根Bar,现在只加载了"+ Text(BarCount)+"根");
}
OnBar(ArrayRef<Integer> indexs){
PB1 = (XAverage(Close, Length1) + Average(Close, Length1 * 2) + Average(Close, Length1 * 4)) / 3;
PB2 = (XAverage(Close, Length2) + Average(Close, Length2 * 2) + Average(Close, Length2 * 4)) / 3;
PB3 = (XAverage(Close, Length3) + Average(Close, Length3 * 2) + Average(Close, Length3 * 4)) / 3;
PB4 = (XAverage(Close, Length4) + Average(Close, Length4 * 2) + Average(Close, Length4 * 4)) / 3;
PB5 = (XAverage(Close, Length5) + Average(Close, Length5 * 2) + Average(Close, Length5 * 4)) / 3;
PB6 = (XAverage(Close, Length6) + Average(Close, Length6 * 2) + Average(Close, Length6 * 4)) / 3;
PbPltss.line("PB1", PB1);
PbPltss.line("PB2", PB2);
PbPltss.line("PB3", PB3);
PbPltss.line("PB4", PB4);
PbPltss.line("PB5", PB5);
PbPltss.line("PB6", PB6);
}
这个可以了,已经能在K线图中显示了。
非常感谢友友的热心帮助。
接下来,我想利用这个指标做程序化交易,规则是这样的:
多头策略:如果价格从下方往上穿越PB6达到2跳,则以对手价开仓做多。开仓后,如果价格一直大于pb6,则一直持有多单;如果价格从上方往下穿越PB6达到1跳,则多单平仓。
空头策略:如果价格从上方往下穿越PB6达到2跳,则以对手价开仓做空。开仓后,如果价格一直小于pb6,则一直持有空单;如果价格从下方往上穿越PB6达到1跳,则空单平仓。
能否劳烦友友帮忙编写一下?我一定不会让友友白白付出的。