求助:跨周期,共振行情的代码咋写
各位老师好:请问下1小时macd是金叉,15分钟macd金叉 开仓,死叉平仓,这样的跨周期共振行情的代码咋写啊
各位老师好:请问下1小时macd是金叉,15分钟macd金叉 开仓,死叉平仓,这样的跨周期共振行情的代码咋写啊
已隐藏违规内容
回复:发联系 方式的按规定是禁言的。我给你内容修改了,不要再犯了。下次就永久禁言了
搞清楚图层,剩下的就简单了,MACD两条线,如果是15分钟金叉,就是data0.白线>data0.黄线如果是60分钟就是data1.白线>data1.黄线,看你引用的是什么,基础周期是什么,你得自己试
回复:基础周期就是你加载的是什么周期,也就是data0.C盘价data1.C就是你引用的
首先搞清图层问题,如何在两个周期显示两个macd//------------------------------------------------------------------------ // 简称: MACD // 名称: 平滑异同移动平均线 // 类别: 策略应用 // 类型: 内建应用 //------------------------------------------------------------------------ Params Numeric FastLength(12); Numeric SlowLength(26); Numeric MACDLength(9); Vars Numeric MACDDiff; Numeric AvgMACD; Numeric MACDValue; Events OnInit() { // 订阅当前合约的1分钟K线数据 SubscribeBar(Symbol, "15m", BeginDateTime);//订阅图层为15分钟,也就是DATA1.C 代表15分钟的收盘价,data0,C代表60分钟的收盘价 // 隐藏data0数据源的默认图表,只能看小周期做基础,引用小周期,重点,要设置1小时,下加载策略 //data0.Hide; //隐藏60分钟,只显示15分钟 } OnReady() { Range[0:DataSourceSize() - 1]//图层,当前图层=0也就是60分钟,DataSourceSize() - 1表示一共几个图层,或者直接写Range[0:1],或者如果说你想显示在15分钟,那么就写Range[1:1] { setPlotOption("MACDDiff", "begin-bar", SlowLength); setPlotOption("MACDDEA", "begin-bar", SlowLength + MACDLength); setPlotOption("MACD", "begin-bar", SlowLength + MACDLength); } Range[1:DataSourceSize() - 1]//图层,当前图层=0也就是60分钟,DataSourceSize() - 1表示一共几个图层,或者直接写Range[0:1],或者如果说你想显示在15分钟,那么就写Range[1:1] { setPlotOption("MACDDiff", "begin-bar", SlowLength); setPlotOption("MACDDEA", "begin-bar", SlowLength + MACDLength); setPlotOption("MACD", "begin-bar", SlowLength + MACDLength); } } OnBar(ArrayRef<Integer> indexs) { Range[0:DataSourceSize() - 1] { MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; AvgMACD = XAverage(MACDDiff, MACDLength); MACDValue = 2 * (MACDDiff - AvgMACD); PlotNumeric("MACDDiff", MACDDiff); PlotNumeric("MACDDEA", AvgMACD); If (MACDValue >= 0) PlotAuto("MACD", MACDValue, 0, Color9(), Enum_Bar); Else PlotAuto("MACD", MACDValue, 0, Color10(), Enum_Bar); PlotNumeric("零线", 0); } Range[1:DataSourceSize() - 1] { MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; AvgMACD = XAverage(MACDDiff, MACDLength); MACDValue = 2 * (MACDDiff - AvgMACD); PlotNumeric("MACDDiff", MACDDiff); PlotNumeric("MACDDEA", AvgMACD); If (MACDValue >= 0) PlotAuto("MACD", MACDValue, 0, Color9(), Enum_Bar); Else PlotAuto("MACD", MACDValue, 0, Color10(), Enum_Bar); PlotNumeric("零线", 0); } }然后,去掉一个周期也就是去掉60分钟,只显示15分钟,然后15分钟引用60分钟MACD,这种引用会出现未来问题,因为60分钟金叉可能是发生在0-59分钟的时候结果到60就没信号了,所以要用onclosebar去触发,如果用onbar 触发,就要在1小时周期下引用15分钟,//------------------------------------------------------------------------ // 简称: MACD // 名称: 平滑异同移动平均线 // 类别: 策略应用 // 类型: 内建应用 //------------------------------------------------------------------------ Params Numeric FastLength(12); Numeric SlowLength(26); Numeric MACDLength(9); Vars Numeric MACDDiff; Numeric AvgMACD; Numeric MACDValue; Events OnInit() { // 订阅当前合约的1分钟K线数据 SubscribeBar(Symbol, "60m", BeginDateTime);//订阅图层为15分钟,也就是DATA1.C 代表15分钟的收盘价,data0,C代表60分钟的收盘价 // 隐藏data0数据源的默认图表,只能看小周期做基础,引用小周期,重点,要设置1小时,下加载策略 //data0.Hide; //隐藏60分钟,只显示15分钟 } OnReady() { Range[0:DataSourceSize() - 1]//图层,当前图层=0也就是60分钟,DataSourceSize() - 1表示一共几个图层,或者直接写Range[0:1],或者如果说你想显示在15分钟,那么就写Range[1:1] { setPlotOption("MACDDiff", "begin-bar", SlowLength); setPlotOption("MACDDEA", "begin-bar", SlowLength + MACDLength); setPlotOption("MACD", "begin-bar", SlowLength + MACDLength); } Range[1:DataSourceSize() - 1]//图层,当前图层=0也就是60分钟,DataSourceSize() - 1表示一共几个图层,或者直接写Range[0:1],或者如果说你想显示在15分钟,那么就写Range[1:1] { setPlotOption("MACDDiff", "begin-bar", SlowLength); setPlotOption("MACDDEA", "begin-bar", SlowLength + MACDLength); setPlotOption("MACD", "begin-bar", SlowLength + MACDLength); } } OnBar(ArrayRef<Integer> indexs) { Range[0:DataSourceSize() - 1] { MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; AvgMACD = XAverage(MACDDiff, MACDLength); MACDValue = 2 * (MACDDiff - AvgMACD); PlotNumeric("MACDDiff", MACDDiff); PlotNumeric("MACDDEA", AvgMACD); If (MACDValue >= 0) PlotAuto("MACD", MACDValue, 0, Color9(), Enum_Bar); Else PlotAuto("MACD", MACDValue, 0, Color10(), Enum_Bar); PlotNumeric("零线", 0); } Range[1:DataSourceSize() - 1] { MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; AvgMACD = XAverage(MACDDiff, MACDLength); MACDValue = 2 * (MACDDiff - AvgMACD); PlotNumeric("MACDDiff", MACDDiff); PlotNumeric("MACDDEA", AvgMACD); If (MACDValue >= 0) PlotAuto("MACD", MACDValue, 0, Color9(), Enum_Bar); Else PlotAuto("MACD", MACDValue, 0, Color10(), Enum_Bar); PlotNumeric("零线", 0); } } //------------------------------------------------------------------------ // 编译版本 GS2010.12.08 // 版权所有 TradeBlazer Software 2003-2025 // 更改声明 TradeBlazer Software保留对TradeBlazer平 // 台每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------
回复:谢谢 辛苦了 我得好好反复琢磨琢磨
回复:你好,你的代号很正确,我已经做出跨周期的k线图了,在写开平仓代码的时候,我写date0. 和date.1 的指标的时候,说我没声明 ,这个是系统默认的前缀还是需要定义变量的,还请指导一下