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

金魔方智能交易攻略(6)-自动趋势线交易策略

欢迎发表评论 2012-9-17 14:58   编辑:foxar
作者:仁心慧能

之前介绍过画水平线,金魔方还可以通过波峰、波谷点函数自动画出趋势线并据此交易,让我们看看这个公式:

  1. //-------金魔方智能交易公式--------------
  2. //例6_1 自动趋势线交易加分级锁定盈利策略
  3. //用于5分钟周期
  4. {策略:
  5. 1.在当天5分钟周期走势上自动画出下降趋势线
  6. 2.突破下降趋势线买入
  7. 3.当最大浮盈达到10点后,把盈利锁定在买入价之上1点
  8. 4.当最大浮盈达到20点后,把盈利锁定在买入价之上8点
  9. 5.当最大浮盈达到30点后,把盈利锁定在买入价之上10点
  10. 6.买入价之上50点为止盈位,买入价之下10点为止损位
  11. }
  12. input: 波峰强度(3);
  13. const: 点数量(5);
  14. array: 波峰点日期[点数量](0),波峰点时间[点数量](0),波峰点数值[点数量](0);
  15. variable: 下降线ID(-1), 起点下标(0);

  16. if Date <> Date[1] then begin //每个交易日内重新找趋势线
  17. //  print('=============', Date, '=============');
  18.   下降线ID := -1; 
  19.   for pos=0 to 点数量 do begin   //清空数组
  20.     波峰点日期[pos]:=0; 波峰点时间[pos]:=0; 波峰点数值[pos]:=0;
  21.   end
  22. end

  23. 位置 : SwingHighBar(1,High,波峰强度,波峰强度+1),linethick0;

  24. if 位置 = 波峰强度 then begin  //出现新的波峰点
  25. //该波峰点是当天的且没被记录过
  26. if Date[位置] = Date And Time[位置] <> 波峰点时间[0] then begin
  27. //  print('时间:', Time/100, '  波峰强度: ', 波峰强度);

  28.   for pos = 点数量-1 DownTo 0 do begin
  29.     波峰点日期[pos+1] := 波峰点日期[pos];
  30.     波峰点时间[pos+1] := 波峰点时间[pos];
  31.     波峰点数值[pos+1] := 波峰点数值[pos];
  32.   end  
  33.   //将新波峰点存入数组下标0的位置
  34.   波峰点日期[0] := Date[波峰强度];
  35.   波峰点时间[0] := Time[波峰强度];
  36.   波峰点数值[0] := High[波峰强度];
  37. //  print('时间:', 波峰点时间[0]/100,'  数值:', 波峰点数值[0]);

  38.   if MarketPosition < 1 then begin //如果未持多仓,更新趋势线
  39.     //找趋势线起点,起点应比最近的新波峰点高,才能形成下降趋势线
  40.     for pos = 1 to 点数量 do begin
  41.       if 波峰点数值[pos] > 波峰点数值[0] then  begin//有更高的
  42.         起点下标 := pos;
  43.         pos := 点数量+1;   //For语句中再加1,然后跳出循环
  44.    end
  45.     end  
  46.     if pos <> 点数量+1  then begin   //表示找到有更高的波峰点
  47. //      print('TL_SetBegin:', 波峰点时间[起点下标]/100,'  数值:', 波峰点数值[起点下标]);
  48. //      print('TL_SetEnd  :', 波峰点时间[0]/100,'  数值:', 波峰点数值[0]);
  49. //   if 下降线ID = -1 then
  50.         下降线ID := TL_New(Date,Time,High,Date,Time,High); 
  51.       TL_SetBegin(下降线ID, 波峰点日期[起点下标],波峰点时间[起点下标],波峰点数值[起点下标]);
  52.       TL_SetEnd(下降线ID, 波峰点日期[0],波峰点时间[0],波峰点数值[0]);
  53.     end
  54.   end
  55. end  
  56. end
  57. else begin
  58.   TL_SetEnd(下降线ID,Date,Time,TL_GetValue(下降线ID,Date,Time));
  59. end
  60. TLValue:=TL_GetValue(下降线ID,Date,Time);
  61. bEnterLong := CrossOver(C, TLValue);
  62. if Time < 143000 And 下降线ID > -1 And bEnterLong then Buy;

  63. if MarketPosition>0 then begin  //持有多头仓位
  64.   Sell('', DEFAULT, EntryPrice+50, 0, OT_LIMIT, OB_NEXTBAR, '止盈');
  65.   Sell('', DEFAULT, EntryPrice-10, -1, OT_STOP, OB_NEXTBAR, '止损');
  66.   if MaxContractProfit>10*BigPointValue then 
  67.     Sell('', DEFAULT, EntryPrice+1, -1, OT_STOP, OB_NEXTBAR, '锁盈1');
  68.   if MaxContractProfit>20*BigPointValue then 
  69.     Sell('', DEFAULT, EntryPrice+8, -1, OT_STOP, OB_NEXTBAR, '锁盈2');
  70.   if MaxContractProfit>30*BigPointValue then 
  71.     Sell('', DEFAULT, EntryPrice+10, -1, OT_STOP, OB_NEXTBAR, '锁盈3');
  72. end
  73. SetExitOnClose;
  74. {
  75. 注解:
  76. 1.const:点数量(5) 声明'点数量'为常量并赋值为5
  77. 2.array: 波峰点日期[点数量](0) 声明'波峰点日期'为一维数组并赋初值为0
  78. 3.找出最近5个波峰点,波峰点的H大于前后各N个周期的H,这个N即为波峰强度
  79. 4.新出现一个波峰点后,就向前找到一个比它更高的波峰点作为起点,连接这两个点形成下降趋势线
  80. 5.周期收盘价上叉下降趋势线时买入
  81. 6.MarketPosition函数返回当前持仓方向
  82. 7.MaxContractProfit为以单口计算的最大浮动盈利,BigPointValue为1整数点的单口价值。
  83. 8.print函数输出到[公式日志],可用于调试公式
  84. }

可以看到,95日做了2笔趋势线交易,第1笔“锁盈1”平仓,第2笔日内交易平仓。


    这个公式比较复杂,本ID在编写时用print函数在一些重要位置输出(到公式日志】,可在量化交易】主菜单下打开)、观察数据进行调试,调试通过后再把print语句注释掉。

    各位可以试着把本公式中的print语句前的注释去掉,运行公式,看看【公式日志】,有助于理解公式逐根执行的逻辑,提升调试技巧。

只要控制好风险,加上人工干预,网格交易也是一种不错的方法,特别是在外汇市场,金魔方公式如何实现呢?


且听下回分解!

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



我要评论

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



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

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

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

回顶部