您好,欢迎光临花生网![请登录] [免费注册] 我的花生地|帮助|服务中心|网站导航|繁体中文
  • 打印
  • 字号

金魔方智能交易攻略(8)-点数图突破交易策略

欢迎发表评论 2012-9-24 11:12   编辑:foxar
作者:仁心慧能

  1. //-------金魔方智能交易公式--------------
  2. //例8_1 点数图突破交易策略 
  3. {策略:
  4. 1.价格升破点数图最近几列的最高点时平空开多
  5. 2.价格跌破点数图最近几列的最低点时平多开空
  6. ***点数图的算法和画法请问度娘***
  7. }
  8. input: 
  9.   格值(30),转向格(5),突破列数(3),偏移量(1); 
  10. const: 最大列数(10); //突破列数应小于此数
  11. array: 极点值[最大列数](0); //上涨列为最高格值,下跌列为最低格值
  12. variable: 转向价(0),涨跌方向(0),
  13.   突破买价(99999),突破卖价(0);//初始化 
  14.   
  15. if BarPos <= 1 then begin 
  16.   转向价 := Round(Close); 
  17.   涨跌方向 := 0;  //初始化为无方向
  18.   突破买价 := High + 偏移量; 
  19.   突破卖价 := Low - 偏移量; 
  20. end

  21. else begin 
  22.   if 涨跌方向 = 0 then begin   //尚未确定方向
  23.     if High >= 转向价 + 格值 * 转向格 then begin 
  24.       极点值[0] := 转向价 + 格值 * 转向格; 
  25.       涨跌方向 := 1;  //上涨
  26.     end 
  27.     else if Low <= 转向价 - 格值 * 转向格 then begin 
  28.       极点值[0] := 转向价 - 格值 * 转向格; 
  29.       涨跌方向 := -1;  //下跌
  30.     end; 
  31.   end

  32.   else if 涨跌方向 = 1 then begin  //当前列为上涨
  33.     if High >= 极点值[0] + 格值 then begin //增加向上的X格子
  34.       while High >= 极点值[0] + 格值 do begin 
  35.         极点值[0] := 极点值[0] + 格值; 
  36.         转向价 := 极点值[0] - 格值 * 转向格;  //抬高转向价
  37.       end; 
  38.     end 
  39.     else if Low <= 转向价 then begin  //上涨转为下跌
  40.       for n = 0 to 最大列数-1 do begin  //数组移位
  41.         极点值[最大列数-n] := 极点值[最大列数-n-1]; 
  42.       end; 
  43.    //以下使点数图新增下跌列
  44.       极点值[0] := 转向价; 
  45.       涨跌方向 := -1;  //转为下跌
  46.       转向价 := 极点值[0] + 格值 * 转向格; 
  47.       while Low <= 极点值[0] - 格值 do begin 
  48.         极点值[0] := 极点值[0] - 格值; 
  49.         转向价 := 极点值[0] + 格值 * 转向格; 
  50.       end; 
  51.     end; 
  52.   end  //当前列为上涨

  53.   else begin //当前列为下跌
  54.     if Low <= 极点值[0] - 格值 then begin //增加向下的O格子
  55.       while Low <= 极点值[0] - 格值 do begin 
  56.         极点值[0] := 极点值[0] - 格值; 
  57.         转向价 := 极点值[0] + 格值 * 转向格; 
  58.       end; 
  59.     end 
  60.     else if High >= 转向价 then begin  //下跌转为上涨 
  61.       for n = 0 to 最大列数-1 do begin 
  62.         极点值[最大列数-n] := 极点值[最大列数-n-1];
  63.       end; 
  64.       极点值[0] := 转向价; 
  65.       涨跌方向 := 1; 
  66.       转向价 := 极点值[0] - 格值 * 转向格; 
  67.       while High >= 极点值[0] + 格值 do begin 
  68.         极点值[0] := 极点值[0] + 格值; 
  69.         转向价 := 极点值[0] - 格值 * 转向格; 
  70.       end; 
  71.     end; 
  72.   end; //当前列为下跌   //根据最近若干列的极点值计算突破价位
  73.   value1:= 0; 
  74.   value2:= 99999; 
  75.   for n = 1 to 突破列数 do begin 
  76.     if 极点值[n] > value1 then value1 := 极点值[n]; 
  77.     if 极点值[n] < value2 then value2 := 极点值[n]; 
  78.   end; 
  79.   突破买价 := value1 + 偏移量; 
  80.   突破卖价 := value2 - 偏移量; 
  81. end;  
  82.   
  83. Buy('', DEFAULT, 突破买价, -1, OT_STOP); 
  84. SellShort('', DEFAULT, 突破卖价, -1, OT_STOP);  
  85.    
  86. 买线: 突破买价, Precision0;   
  87. 卖线: 突破卖价, Precision0;
  88. 盈利因子: -GrossProfit/GrossLoss, Precision2, LineThick0;
  89. 盈亏比: -(GrossProfit/NumWinTrades)/(GrossLoss/NumLosTrades), Precision2, LineThick0;
  90. 胜率%: PercentProfit, Precision2, LineThick0;
  91. 净利: NetProfit, Precision2,LineThick0;
  92. 当前连亏次数: NumConsecLosers, Precision0, LineThick0;
  93. {注解:
  94. 1.用variable定义变量可增加可读性,在本例其实可以省略
  95. 2.Precision指定输出数值的小数位数
  96. 3.盈亏比=平均盈利/平均亏损,GrossLoss返回值为负数
  97. }

如图所示:

      点数图算法的代码比较复杂,如果每个涉及到点数图的公式都包含那么多代码会比较难看,我们是否可以把它做成公共代码供其它公式调用呢?用传统的调用指标公式的方法不太好使,而且一次调用只能返回一个结果,本例的点数图就需要返回“突破买价”和“突破卖价”两个结果,用户能否自编函数,并且让这个函数能同时返回多个结果呢?

敬请关注本攻略!


(花生网版权所有,转载请注明出处)






我要评论

验证问答 换一个 验证码 换一个



Copyright©广州新博庭网络信息科技股份有限公司 粤ICP备11107430号 All Rights Reserved 版权所有 复制必究

合作联系邮箱: sueiyou@126.com

地址:广州市天河区花城大道667号美林基业大厦1201

回顶部