欢迎您光临博庭社区!

 找回密码
 立即注册
查看: 20520|回复: 70

公式转换器   [复制链接]

Rank: 8Rank: 8

发表于 2013-8-16 19:01:45 |显示全部楼层
本帖最后由 ptLibert 于 2013-9-23 22:32 编辑

附件是一个转换工具。用这个工具可以直接把其他多种语言翻译成金魔方语言。
用法:
1.先把其他语言的源码存成文本文件。

2.运行fmlConverter.exe,也就是公式转换器。(需要 .net 4.0,windows8应该自带,windows7和xp需要安装 http://www.microsoft.com/zh-cn/download/details.aspx?id=17718

3.在下拉菜单选择原来的公式类型。(目前仅支持开拓者和Mc两种,以后会增加文华和金字塔,大智慧,通达信等)
4.如果原来的公式类型,是开拓者或mc的function,也就是函数,那么勾选左上角的“转换函数”。
5.点击转换器左上角的打开按钮,打开原文本文件。
6.转换后的源码显示在右侧,复制到金魔方使用。
7.如果之前没有安装过.net4.0,并且是win8之前的系统,那么需要下载安装.net4.0
http://www.microsoft.com/zh-cn/download/details.aspx?id=17718


必须指出的是,本转换器并非100%智能,而且有些其他语言的函数与金魔方暂时无法找到替代。所以它能节省工作时间,但并非转完就一定能直接用。还是需要人工仔细检查和核对的。
2013-08-18更新
1.支持飞狐转换,注意金魔方几乎完全兼容飞狐公式语言,除了序列下标,因此只有在使用了数组下标访问序列数据才需要转换。如果公式根本没有使用数组下标访问序列数据,直接复制到金魔方即可,无需转换。
2.修正MC cross above 等语句在某些情况下转换不正确bug
3.增加一些TB的函数对照表




附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2013-8-16 21:18:46 |显示全部楼层
转几个例子看看
原TB策略
  1. // 简称:
  2. // 名称:
  3. // 类别: 公式应用
  4. // 类型: 用户应用
  5. // 输出: 穿堂风
  6. //------------------------------------------------------------------------

  7. Params
  8. Numeric maLen1(10);
  9. Numeric maLen2(50);
  10. Numeric lots(1);
  11. Numeric offset(0);
  12. Vars
  13. Numeric ma1;
  14. Numeric ma2;
  15. Numeric i_offset;

  16. Begin

  17. ma1 = Average(Open,maLen1);
  18. ma2 = Average(Open,maLen2);

  19. PlotNumeric("ma1",ma1);
  20. PlotNumeric("ma2",ma2);

  21. i_offset = offset*MinMove*PriceScale;
  22. If(CurrentBar > maLen2)
  23. {
  24.         If(MarketPosition == 0)
  25.         {
  26.                 If(Open>ma1 and ma1>ma2)
  27.                 {
  28.                         Buy(lots,Open+i_offset);
  29.                         Return;
  30.                 }

  31.                 If(Open < ma1 and ma1<ma2)
  32.                 {
  33.                         SellShort(lots,Open-i_offset);
  34.                         Return;
  35.                 }
  36.         }

  37.         If(MarketPosition == 1)
  38.         {
  39.                 If(Open < ma1)
  40.                 {
  41.                         Sell(lots,Open-i_offset);
  42.                         Return;
  43.                 }
  44.         }

  45.         If(MarketPosition == -1)
  46.         {
  47.                 If(Open > ma1)
  48.                 {
  49.                         BuyToCover(lots,Open+i_offset);
  50.                         Return;
  51.                 }
  52.         }
  53. }
  54. End
复制代码
用转换器转换后直接复制到金魔方就可以编译成功并运行了,不用做任何修改
以下是转换后的公式
  1. // 简称
  2. // 名称:
  3. // 类别: 公式应用
  4. // 类型: 用户应用
  5. // 输出: 穿堂风
  6. //------------------------------------------------------------------------

  7. INPUT:
  8. maLen1(10),
  9. maLen2(50),
  10. lots(1),
  11. offset(0);
  12. VARIABLE:
  13. ma1,
  14. ma2,
  15. i_offset;

  16. Begin

  17. ma1 :=  MA (Open,maLen1);
  18. ma2 :=  MA (Open,maLen2);

  19. Plot(ma1,'ma1');
  20. Plot(ma2,'ma2');

  21. i_offset := offset* MinMove * PriceScale ;
  22. If( BarPos  > maLen2) then
  23. begin
  24.         If( MarketPosition  == 0) then
  25.          begin
  26.                 If(Open>ma1 and ma1>ma2) then
  27.                  begin
  28.                         Buy('',lots,Open+i_offset,0,OT_Market, OB_ThisBar);
  29.                         Return;
  30.                  end

  31.                 If(Open < ma1 and ma1<ma2) then
  32.                  begin
  33.                         SellShort('',lots,Open-i_offset,0,OT_Market, OB_ThisBar);
  34.                         Return;
  35.                  end
  36.          end

  37.         If( MarketPosition  == 1) then
  38.          begin
  39.                 If(Open < ma1) then
  40.                  begin
  41.                         Sell('',lots,Open-i_offset,0,OT_Market, OB_ThisBar);
  42.                         Return;
  43.                  end
  44.          end

  45.         If( MarketPosition  == -1) then
  46.          begin
  47.                 If(Open > ma1) then
  48.                  begin
  49.                         BuyToCover('',lots,Open+i_offset,0,OT_Market, OB_ThisBar);
  50.                         Return;
  51.                  end
  52.          end
  53. end
  54. End
复制代码
以下是金魔方运行结果

附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2013-8-16 21:34:45 |显示全部楼层
你还可以通过编辑转换对照文件来提高转换的结果。TB的转换对应文件位于 Language\KL.csv比如如下策略,转换过来复制到金魔方编译通不过,提示 Min1没有定义,这是因为转换对应文件没有
Min这个函数的对应关系,你可以用文本文件打开 Language\KL.csv
并加上这一行
Min#min
保存文件,再重新打开公式转换器转换,就可以了

  1. // 简称dual_thrust
  2. // 名称:
  3. // 类别: 公式应用
  4. // 类型: 用户应用
  5. // 输出: 穿堂风
  6. //------------------------------------------------------------------------


  7. Params
  8. Numeric K1(0.5);
  9. Numeric K2(0.5);
  10. Numeric Mday(1);
  11. Numeric Nday(1);
  12. Numeric lots(1);
  13. Numeric offset(0);

  14. Vars
  15. Numeric BuyRange(0);
  16. Numeric SellRange(0);
  17. Numeric BuyTrig(0);
  18. Numeric SellTrig(0);
  19. Numeric HH;
  20. Numeric LL;
  21. Numeric HC;
  22. Numeric LC;
  23. Numeric i_offset;
  24. Numeric BuyPosition;
  25. Numeric SellPosition;

  26. Begin
  27. If(CurrentBar > 44*Max(Mday,Nday))//使用的是5分钟周期,其它的周期自己做相应修改
  28. {
  29.         i_offset = offset*MinMove*PriceScale;
  30.         HH = Highest(HighD(1),Mday);
  31.         HC = Highest(CloseD(1),Mday);
  32.         LL = Lowest(LowD(1),Mday);
  33.         LC = Lowest(CloseD(1),Mday);

  34.         If((HH - LC) >= (HC - LL))
  35.         {
  36.                 SellRange = HH - LC;
  37.         }
  38.         Else
  39.         {
  40.                 SellRange = HC - LL;
  41.         }

  42.         HH = Highest(HighD(1),Nday);
  43.         HC = Highest(CloseD(1),Nday);
  44.         LL = Lowest(LowD(1),Nday);
  45.         LC = Lowest(CloseD(1),Nday);

  46.         If((HH - LC) >= (HC - LL))
  47.         {
  48.                 BuyRange = HH - LC;
  49.         }
  50.         Else
  51.         {
  52.                 BuyRange = HC - LL;
  53.         }

  54.         BuyTrig = K1*BuyRange;
  55.         SellTrig = K2*SellRange;
  56.         
  57.         BuyPosition = OpenD(0)+BuyTrig;
  58.         SellPosition = OpenD(0)-SellTrig;
  59.         
  60.         PlotNumeric("BuyPosition",BuyPosition);
  61.         PlotNumeric("SellPosition",SellPosition);

  62.         If(MarketPosition == 0)
  63.         {
  64.                 If(High>=BuyPosition)
  65.                 {
  66.                         Buy(lots,Max(Open,BuyPosition)+i_offset);
  67.                         Return;
  68.                 }
  69.                
  70.                 If(Low<=SellPosition)
  71.                 {
  72.                         SellShort(lots,Min(Open,SellPosition)-i_offset);
  73.                         Return;
  74.                 }
  75.         }

  76.         If(MarketPosition == -1)
  77.         {
  78.                 If(High>=BuyPosition)
  79.                 {
  80.                         Buy(lots,Max(Open,BuyPosition)+i_offset);
  81.                         Return;
  82.                 }
  83.         }

  84.         If(MarketPosition == 1)
  85.         {
  86.                 If(Low<=SellPosition)
  87.                 {
  88.                         SellShort(lots,Min(Open,SellPosition)-i_offset);
  89.                         Return;
  90.                 }
  91.         }
  92. }
  93. End

  94. //------------------------------------------------------------------------
  95. // 编译版本        GS2010.12.08
  96. // 用户版本        2011/07/24 02:14
  97. // 版权所有        穿堂风
  98. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  99. //                        每一版本的TrabeBlazer公式修改和重写的权利
  100. //------------------------------------------------------------------------
复制代码


转换后的公式
  1. // 简称dual_thrust
  2. // 名称:
  3. // 类别: 公式应用
  4. // 类型: 用户应用
  5. // 输出: 穿堂风
  6. //------------------------------------------------------------------------


  7. INPUT:
  8. K1(0.5),
  9. K2(0.5),
  10. Mday(1),
  11. Nday(1),
  12. lots(1),
  13. offset(0);

  14. VARIABLE:
  15. BuyRange(0),
  16. SellRange(0),
  17. BuyTrig(0),
  18. SellTrig(0),
  19. HH,
  20. LL,
  21. HC,
  22. LC,
  23. i_offset,
  24. BuyPosition,
  25. SellPosition;

  26. Begin
  27. If( BarPos  > 44* Max (Mday,Nday)) then //使用的是5分钟周期,其它的周期自己做相应修改
  28. begin
  29.         i_offset := offset* MinMove * PriceScale ;
  30.         HH :=  HHV ( HighD (1),Mday);
  31.         HC :=  HHV ( CloseD (1),Mday);
  32.         LL :=  LLV ( LowD (1),Mday);
  33.         LC :=  LLV ( CloseD (1),Mday);

  34.         If((HH - LC) >= (HC - LL)) then
  35.          begin
  36.                 SellRange := HH - LC;
  37.          end
  38.         Else
  39.          begin
  40.                 SellRange := HC - LL;
  41.          end

  42.         HH :=  HHV ( HighD (1),Nday);
  43.         HC :=  HHV ( CloseD (1),Nday);
  44.         LL :=  LLV ( LowD (1),Nday);
  45.         LC :=  LLV ( CloseD (1),Nday);

  46.         If((HH - LC) >= (HC - LL)) then
  47.          begin
  48.                 BuyRange := HH - LC;
  49.          end
  50.         Else
  51.          begin
  52.                 BuyRange := HC - LL;
  53.          end

  54.         BuyTrig := K1*BuyRange;
  55.         SellTrig := K2*SellRange;
  56.         
  57.         BuyPosition :=  OpenD (0)+BuyTrig;
  58.         SellPosition :=  OpenD (0)-SellTrig;
  59.         
  60.         Plot(BuyPosition,'BuyPosition');
  61.         Plot(SellPosition,'SellPosition');

  62.         If( MarketPosition  == 0) then
  63.          begin
  64.                 If( High >=BuyPosition) then
  65.                  begin
  66.                         Buy('',lots, Max (Open,BuyPosition)+i_offset,0,OT_Market, OB_ThisBar);
  67.                         Return;
  68.                  end
  69.                
  70.                 If( Low <=SellPosition) then
  71.                  begin
  72.                         SellShort('',lots, min (Open,SellPosition)-i_offset,0,OT_Market, OB_ThisBar);
  73.                         Return;
  74.                  end
  75.          end

  76.         If( MarketPosition  == -1) then
  77.          begin
  78.                 If( High >=BuyPosition) then
  79.                  begin
  80.                         Buy('',lots, Max (Open,BuyPosition)+i_offset,0,OT_Market, OB_ThisBar);
  81.                         Return;
  82.                  end
  83.          end

  84.         If( MarketPosition  == 1) then
  85.          begin
  86.                 If( Low <=SellPosition) then
  87.                  begin
  88.                         SellShort('',lots, min (Open,SellPosition)-i_offset,0,OT_Market, OB_ThisBar);
  89.                         Return;
  90.                  end
  91.          end
  92. end
  93. End
复制代码
运行结果

附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 6Rank: 6

发表于 2013-8-16 21:52:25 |显示全部楼层
不错,貌似很强大啊
福康安--快乐健康平安……不恨年华去也,只恐少年心事,强半为消磨……青春都一晌,忍把浮名,换了浅斟低唱……十有九人堪白眼,百无一用是书生……与有肝胆人共事,从无字句处读书

使用道具 举报

Rank: 6Rank: 6

发表于 2013-8-17 08:43:18 |显示全部楼层
目前仅支持开拓者和Mc两种,以后会增加文华和金字塔,大智慧等,通达信等

交易的重要原则:
1、资金管理;
2、风险控制;
3、自我约束;
4、耐性!

使用道具 举报

Rank: 2

发表于 2013-8-17 11:07:47 |显示全部楼层
谢谢分享 希望能有飞狐公式的转换!

使用道具 举报

Rank: 6Rank: 6

激情奖

发表于 2013-8-17 18:45:15 |显示全部楼层
ktdev 发表于 2013-8-16 21:34
你还可以通过编辑转换对照文件来提高转换的结果。TB的转换对应文件位于 Language\KL.csv比如如下策略,转换 ...

能解析所有格式文法么

使用道具 举报

Rank: 2

发表于 2013-8-17 22:11:08 |显示全部楼层
谢谢分享,希望能解决该公司自己的飞狐软件公式能在金魔方中正常使用~~~

使用道具 举报

Rank: 9Rank: 9Rank: 9

发表于 2013-8-18 20:07:54 |显示全部楼层
zhou1388 发表于 2013-8-17 22:11
谢谢分享,希望能解决该公司自己的飞狐软件公式能在金魔方中正常使用~~~

已经增加支持飞狐转换,请回一楼重新下载
http://hs633.com/forum.php?mod=v ... 237&fromuid=789


注意金魔方几乎完全兼容飞狐公式语言,除了序列下标,因此只有在使用了数组下标访问序列数据才需要转换。如果公式根本没有使用数组下标访问序列数据,直接复制到金魔方即可,无需转换。

使用道具 举报

Rank: 6Rank: 6

激情奖

发表于 2013-8-19 15:20:52 |显示全部楼层
CC:=IF(ISNULL(NEW),PRE,NEW);
TT:=BARSCOUNT(CC);
均线:=SUM(SUBSAMEDAY(&VOL)*CC,0)/VOL;
上均:=均线 + AVEDEV(CC,TT)*2;
时长:=IF(FORMATTIME(1)>60,1,0);
涨幅:=(CC>PRE)>1.02;
跌幅:=(CC/PRE)<0.98;
横盘:=((HHV(CC,TT)-LLV(CC,TT))/CC)<0.05;
yy:=SMA(VOL,30,1);
放量:=(yy-LLV(LLV(yy,1),30))/(HHV(HHV(yy,1),30)-LLV(LLV(yy,1),30))>0.95;
涨跌幅:=涨幅 OR 跌幅;
横涨:=涨跌幅=0 AND 横盘 AND 时长 AND 放量 AND CROSS(CC,上均);
DRAWICON(FILTER(横涨,100),CC,"buy");
这个同花顺可以转换么

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

bottom

Archiver|http://www.patiosoft.com

GMT+8, 2017-12-11 17:39 , Processed in 0.104168 second(s), 12 queries .

花生网 Copyrigh©2012

和讯信息科技有限公司 ALL Rights Reserved 版权所有 复制必究

回顶部