开拓者期货期权程序化系统交易论坛

标题: 我想文本输出两个BAR之间的数据该怎么写? [打印本页]

作者: zhoukaike    时间: 2016-4-26 00:12:29     标题: 我想文本输出两个BAR之间的数据该怎么写?

比如我想统计MACD金叉时间,死叉时间,金叉和死叉之间的BAR数量,之间的最高价、最低价。并输出到指定的文本文档。
我知道输出到指定的文本文档的函数了,
但怎么得到金叉时间,死叉时间,怎么算出之间的BAR的数量,怎么统计之间的最高价、最低价不知道。
想请老师提供一个源代码供我们学习。谢谢!!!

谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
谢谢!!!
作者: 小米    时间: 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.        
复制代码

作者: zhoukaike    时间: 2016-4-26 10:35:44

谢谢!!!!
作者: zhoukaike    时间: 2016-4-26 12:19:00

小米 发表于 2016-4-26 09:12

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

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

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



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


谢谢!!!!!!

谢谢!!!!!!

谢谢!!!!!!

谢谢!!!!!!


作者: 小米    时间: 2016-4-26 15:36:45

zhoukaike 发表于 2016-4-26 12:19
谢谢版主的回复!我学习了一下,发现你的代码和我需求的还是有一点出入,我想要学的还没有完全得到解决。 ...


1,原来使用count2的地方,都使用count1来替换,去掉count2这个变量即可
2,可以使用filappend, 将所需的内容输出到指定文本文档中。
    建议自己先学习后再来摸索,自己来实现需求吧。
作者: Zhong_4619XD    时间: 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
作者: Zhong_4619XD    时间: 2017-8-12 14:35:32

楼主你撑据了没有。我也想学。上面文华的写法就是你想要的效果。但TB怎么写我也在学




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2