飞狐金魔方大交易师智能交易使用教程(8)-点数图突破交易策略 [飞狐金魔方]
//-------金魔方智能交易公式--------------
//例8_1 点数图突破交易策略
{策略:
1.价格升破点数图最近几列的最高点时平空开多
2.价格跌破点数图最近几列的最低点时平多开空
***点数图的算法和画法请问度娘***
}
input:
格值(30),转向格(5),突破列数(3),偏移量(1);
const: 最大列数(10); //突破列数应小于此数
array: 极点值[最大列数](0); //上涨列为最高格值,下跌列为最低格值
variable: 转向价(0),涨跌方向(0),
突破买价(99999),突破卖价(0);//初始化
if BarPos <= 1 then begin
转向价 := Round(Close);
涨跌方向 := 0; //初始化为无方向
突破买价 := High + 偏移量;
突破卖价 := Low - 偏移量;
end
else begin
if 涨跌方向 = 0 then begin //尚未确定方向
if High >= 转向价 + 格值 * 转向格 then begin
极点值[0] := 转向价 + 格值 * 转向格;
涨跌方向 := 1; //上涨
end
else if Low <= 转向价 - 格值 * 转向格 then begin
极点值[0] := 转向价 - 格值 * 转向格;
涨跌方向 := -1; //下跌
end;
end
else if 涨跌方向 = 1 then begin //当前列为上涨
if High >= 极点值[0] + 格值 then begin //增加向上的X格子
while High >= 极点值[0] + 格值 do begin
极点值[0] := 极点值[0] + 格值;
转向价 := 极点值[0] - 格值 * 转向格; //抬高转向价
end;
end
else if Low <= 转向价 then begin //上涨转为下跌
for n = 0 to 最大列数-1 do begin //数组移位
极点值[最大列数-n] := 极点值[最大列数-n-1];
end;
//以下使点数图新增下跌列
极点值[0] := 转向价;
涨跌方向 := -1; //转为下跌
转向价 := 极点值[0] + 格值 * 转向格;
while Low <= 极点值[0] - 格值 do begin
极点值[0] := 极点值[0] - 格值;
转向价 := 极点值[0] + 格值 * 转向格;
end;
end;
end //当前列为上涨
else begin //当前列为下跌
if Low <= 极点值[0] - 格值 then begin //增加向下的O格子
while Low <= 极点值[0] - 格值 do begin
极点值[0] := 极点值[0] - 格值;
转向价 := 极点值[0] + 格值 * 转向格;
end;
end
else if High >= 转向价 then begin //下跌转为上涨
for n = 0 to 最大列数-1 do begin
极点值[最大列数-n] := 极点值[最大列数-n-1];
end;
极点值[0] := 转向价;
涨跌方向 := 1;
转向价 := 极点值[0] - 格值 * 转向格;
while High >= 极点值[0] + 格值 do begin
极点值[0] := 极点值[0] + 格值;
转向价 := 极点值[0] - 格值 * 转向格;
end;
end;
end; //当前列为下跌 //根据最近若干列的极点值计算突破价位
value1:= 0;
value2:= 99999;
for n = 1 to 突破列数 do begin
if 极点值[n] > value1 then value1 := 极点值[n];
if 极点值[n] < value2 then value2 := 极点值[n];
end;
突破买价 := value1 + 偏移量;
突破卖价 := value2 - 偏移量;
end;
Buy('', DEFAULT, 突破买价, -1, OT_STOP);
SellShort('', DEFAULT, 突破卖价, -1, OT_STOP);
买线: 突破买价, Precision0;
卖线: 突破卖价, Precision0;
盈利因子: -GrossProfit/GrossLoss, Precision2, LineThick0;
盈亏比: -(GrossProfit/NumWinTrades)/(GrossLoss/NumLosTrades), Precision2, LineThick0;
胜率%: PercentProfit, Precision2, LineThick0;
净利: NetProfit, Precision2,LineThick0;
当前连亏次数: NumConsecLosers, Precision0, LineThick0;
{注解:
1.用variable定义变量可增加可读性,在本例其实可以省略
2.Precision指定输出数值的小数位数
3.盈亏比=平均盈利/平均亏损,GrossLoss返回值为负数
}
点数图算法的代码比较复杂,如果每个涉及到点数图的公式都包含那么多代码会比较难看,我们是否可以把它做成公共代码供其它公式调用呢?用传统的调用指标公式的方法不太好使,而且一次调用只能返回一个结果,本例的点数图就需要返回“突破买价”和“突破卖价”两个结果,用户能否自编函数,并且让这个函数能同时返回多个结果呢?
敬请关注本攻略!
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容