求大神帮忙完成下面的代码。 [开拓者 TB]
- 咨询内容:
公式的要求:快慢线在0轴以上,发生一次死叉(有一次回撤)后,再次发生金叉,就进场做多。
快慢线在0轴以下,发生一次金叉(有一次反弹)后,再次发生死叉,进场做空。
下面是不完整的,不知道该如何确定发生的一次死叉。
Params
Numeric FastLength(12); //12
Numeric SlowLength(26);//26
Numeric MACDLength(9);//9
Vars
NumericSeries MACDValue;
Numeric AvgMACD;
NumericSeries MACDDiff;
BoolSeries condition1;
BoolSeries condition2;
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
PlotNumeric("MACDValue",MACDValue);
PlotNumeric("AvgMACD",AvgMACD);
/*if (MACDDiff>0)
PlotNumeric("macddiff",macddiff,0,Red);
Else
PlotNumeric("macddiff",macddiff,0,Green);
PlotNumeric("零线",0);*/
condition1=CrossOver(MACDValue,AvgMACD);//金叉做多
condition2=CrossUnder(MACDValue,AvgMACD);//死叉做空
if(condition1[1] )
{
Buy(1,open);
}
if(condition2[1])
{
SellShort(1,open);
}
End
- TB技术人员:
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
NumericSeries MACDValue;
Numeric AvgMACD;
Numeric MACDDiff;
BoolSeries Con1;
BoolSeries Con2;
BoolSeries Con3;
BoolSeries Con4;
BoolSeries Con5;
BoolSeries Con6;
Begin
// 集合竞价和小节休息过滤
If(!CallAuctionFilter()) Return;
MACDValue = XAverage(Close,FastLength ) - XAverage(Close,SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
Con1 = (MACDValue > 0) And (AvgMACD > 0);
Con2 = CrossOver(MACDValue,AvgMACD);
Con3 = (MACDValue < 0) And (AvgMACD < 0);
Con4 = CrossUnder(MACDValue,AvgMACD);
If(Con1 and Con4)
{
Con5 = True;
}Else If(Con3)
{
Con5 = False;
}
If(Con2 and Con3)
{
Con6 = True;
}Else If(Con1)
{
Con6 = False;
}
If(MarketPosition != 1 And Con1[1] And Con2[1] and Con5[1])
{
Buy(1,Open);
}
If(MarketPosition != -1 And Con3[1] and Con4[1] and Con6[1])
{
SellShort(1,Open);
}
End - TB客服:
垃圾策略,MACD只能用来手工交易判断,程序化完全是垃圾。
比如背离的时候,有的MACDvalue很高,有的却很低;你不能用一个固定的范围或差值去确定背离。判断上涨下跌也一样。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容