设为首页收藏本站

 找回密码
 注册
查看: 2318|回复: 6
打印 上一主题 下一主题

我想文本输出两个BAR之间的数据该怎么写? [复制链接]

Rank: 1

精华
0
UID
230742
积分
22
帖子
13
主题
5
阅读权限
10
注册时间
2016-3-23
最后登录
2020-10-20
跳转到指定楼层
1#
发表于 2016-4-26 00:12:29 |只看该作者 |倒序浏览
比如我想统计MACD金叉时间,死叉时间,金叉和死叉之间的BAR数量,之间的最高价、最低价。并输出到指定的文本文档。
我知道输出到指定的文本文档的函数了,
但怎么得到金叉时间,死叉时间,怎么算出之间的BAR的数量,怎么统计之间的最高价、最低价不知道。
想请老师提供一个源代码供我们学习。谢谢!!!

谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2016-4-26 09:12:42 |只看该作者
  1. Params
  2.         Numeric FastLength(12);
  3.         Numeric SlowLength(26);
  4.         Numeric MACDLength(9);
  5. vars
  6.         NumericSeries MACDValue;
  7.         Numeric AvgMACD;
  8.         Numeric MACDDiff;
  9.         bool crossup;
  10.         bool crossdown;
  11.         numericseries count1;
  12.         numericseries count2;
  13.         NumericSeries high1;
  14.         numericseries low2;
  15.         numericseries myhigh;
  16.         numericseries mylow;
  17.         numeric uphgih;
  18.     numeric downlow;
  19. begin
  20.        
  21.         MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
  22.         AvgMACD = XAverage(MACDValue,MACDLength);
  23.         MACDDiff = MACDValue - AvgMACD;
  24.         /* PlotNumeric("MACD",MACDValue);
  25.         PlotNumeric("MACDAvg",AvgMACD);
  26.         If (MACDDiff >= 0)       
  27.                 PlotNumeric("MACDDiff",MACDDiff,0,Red);
  28.         Else
  29.                 PlotNumeric("MACDDiff",MACDDiff,0,Green);
  30.         PlotNumeric("零线",0);           */
  31.         crossup = crossover(MACDValue,AVGMACD);
  32.         crossdown = CrossUnder(MACDValue,AVGMACD);
  33.         If(crossup == true)
  34.         {
  35.                 count1 = 1;
  36.                 mylow = low2[1];
  37.         }else If(crossdown == true)
  38.         {
  39.                 count2 =1;
  40.                 myhigh = high1[1];
  41.         }else
  42.         {
  43.                 count1 = count1+1;
  44.                 count2 = count2+1;
  45.         }
  46.         high1 = Highest(high,count1);
  47.         low2 = Lowest(low,count2);
  48.         Commentary("count1:"+Text(count1));
  49.         Commentary("count2:"+Text(count2));
  50.         PlotNumeric("myhigh",myhigh);
  51.         PlotNumeric("mylow",mylow);
  52. end
  53.        
复制代码

使用道具 举报

Rank: 1

精华
0
UID
230742
积分
22
帖子
13
主题
5
阅读权限
10
注册时间
2016-3-23
最后登录
2020-10-20
3#
发表于 2016-4-26 10:35:44 |只看该作者
谢谢!!!!

使用道具 举报

Rank: 1

精华
0
UID
230742
积分
22
帖子
13
主题
5
阅读权限
10
注册时间
2016-3-23
最后登录
2020-10-20
4#
发表于 2016-4-26 12:19:00 |只看该作者
小米 发表于 2016-4-26 09:12

谢谢版主的回复!我学习了一下,发现你的代码和我需求的还是有一点出入,我想要学的还没有完全得到解决。

1.我想要得到的是一个金叉到一个死叉为区间的数据结果(或一个死叉到一个金叉为区间),你的程序是一个金叉到下一个金叉为区间的结果。(或一个死叉到下一个死叉为区间)。

2.能不能直接计算出结果,以文本的形式输出到指定文本文档。
(具体有一,金叉和死叉之间的BAR数,
      二,金叉到死叉区间的最高价最低价和开仓BAR收盘(金叉或死叉形成为开仓BAR)的差值。
      三,最高价和最低价到开仓价的BAR数。
      四,最高价和最低价的差值。
      五,金叉收盘价到死叉收盘价的差值。



最重点的是金叉到死叉的区间怎么描述??


谢谢!!!!!!

谢谢!!!!!!

谢谢!!!!!!

谢谢!!!!!!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2016-4-26 15:36:45 |只看该作者
zhoukaike 发表于 2016-4-26 12:19
谢谢版主的回复!我学习了一下,发现你的代码和我需求的还是有一点出入,我想要学的还没有完全得到解决。 ...


1,原来使用count2的地方,都使用count1来替换,去掉count2这个变量即可
2,可以使用filappend, 将所需的内容输出到指定文本文档中。
    建议自己先学习后再来摸索,自己来实现需求吧。

使用道具 举报

Rank: 1

精华
0
UID
254558
积分
17
帖子
8
主题
3
阅读权限
10
注册时间
2017-7-26
最后登录
2023-2-18
6#
发表于 2017-8-12 14:34:11 |只看该作者
A1:=SUMBARS(CROSS(DIFF,DEA),1);//求现在往前数金叉数量等于1的信号到现在的周期数
A2:=SUMBARS(CROSS(DIFF,DEA),2);//求现在往前数金叉数量等于2的信号到现在的周期数
A3:=SUMBARS(CROSS(DIFF,DEA),3);//求现在往前数金叉数量等于3的信号到现在的周期数

B1:=SUMBARS(CROSSDOWN(DIFF,DEA),1);//求现在往前数死叉数量等于1的信号到现在的周期数
B2:=SUMBARS(CROSSDOWN(DIFF,DEA),2);//求现在往前数死叉数量等于2的信号到现在的周期数
B3:=SUMBARS(CROSSDOWN(DIFF,DEA),3);//求现在往前数死叉数量等于3的信号到现在的周期数

H3:=REF(HHV(H,1+BARSLAST(CROSS(DIFF,DEA))),B1);//求周期内高点值H3
H2:=REF(HHV(H,1+BARSLAST(CROSS(DIFF,DEA))),B2);//求周期内高点值H2
H1:=REF(HHV(H,1+BARSLAST(CROSS(DIFF,DEA))),B3);//求周期内高点值H1
L3:=REF(LLV(L,1+BARSLAST(CROSSDOWN(DIFF,DEA))),A1 );//求周期内低点值L3
L2:=REF(LLV(L,1+BARSLAST(CROSSDOWN(DIFF,DEA))),A2 );//求周期内低点值L2
L1:=REF(LLV(L,1+BARSLAST(CROSSDOWN(DIFF,DEA))),A3 );//求周期内低点值L1

使用道具 举报

Rank: 1

精华
0
UID
254558
积分
17
帖子
8
主题
3
阅读权限
10
注册时间
2017-7-26
最后登录
2023-2-18
7#
发表于 2017-8-12 14:35:32 |只看该作者
楼主你撑据了没有。我也想学。上面文华的写法就是你想要的效果。但TB怎么写我也在学

使用道具 举报

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

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-9 08:02

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部