求老师帮忙解决一下,谢谢
Numeric ss(1); // 开仓手数
Numeric Length(24); // KD参数
Numeric SlowLength(3); // KD参数
Numeric SmoothLength(3); // KD参数
Numeric M1(5); // 均线1
Numeric M2(20); // 均线2
Numeric FastLength(12); // MACD快线参数
Numeric SlowLengthMACD(26); // MACD慢线参数
Numeric SignalLength(9); // MACD信号线参数
Vars
Series<Numeric> HighestValue;
Series<Numeric> LowestValue;
Series<Numeric> KValue;
Numeric SumHLValue;
Numeric SumCLValue;
Series<Numeric> DValue;
Series<Numeric> MA1;
Series<Numeric> MA2;
Series<Numeric> MACD; // MACD值
Series<Numeric> MACDSignal; // MACD信号线
Series<Numeric> MACDHist; // MACD量柱
BOOL PDCON1;
BOOL PKCON1;
BOOL DCON1;
BOOL KCON1;
Numeric MyEntryPrice;
Numeric MyExitPrice;
Numeric MINPOINT;
BOOL IsBullish; // 是否多头排列
BOOL IsBearish; // 是否空头排列
Events
onBar(ArrayRef<Integer> indexs)
{
// 计算MA5和MA20
MA1 = Average(Close, M1);
MA2 = Average(Close, M2);
// 判断多头或空头排列
IsBullish = MA1 > MA2; // MA5在MA20上方为多头排列
IsBearish = MA1 < MA2; // MA5在MA20下方为空头排列
// 计算MACD
MACD = XAverage(Close, FastLength) - XAverage(Close, SlowLengthMACD);
MACDSignal = XAverage(MACD, SignalLength);
MACDHist = MACD - MACDSignal;
// 绘制指标
PlotNumeric("MA1", MA1);
PlotNumeric("MA2", MA2);
PlotNumeric("MACD", MACD);
PlotNumeric("MACDSignal", MACDSignal);
PlotNumeric("MACDHist", MACDHist);
// 开仓条件
// 多头排列:收盘价站上MA5并且MACD快线上穿0轴
If (IsBullish && Close[1] > MA1 && CrossOver(MACD, 0))
{
If (MarketPosition != 1 && (MaxEntries == 0 || BarsSinceExit >= 1 || BarsSinceEntry >= 1))
{
Buy(ss, Open);
}
}
// 空头排列:收盘价跌破MA5且MACD快线下穿0轴
If (IsBearish && Close[1] < MA1 && CrossUnder(MACD, 0))
{
If (MarketPosition != -1 && (MaxEntries == 0 || BarsSinceExit >= 1 || BarsSinceEntry >= 1))
{
SellShort(ss, Open);
}
}
// 平仓条件
// 多头平仓:收盘价跌破MA5且MACD量柱由红变绿
If (MarketPosition == 1 && Close[1] < MA1 && MACDHist < 0 && MACDHist[1] >= 0)
{
Sell(0, Open);
}
// 空头平仓:收盘价站上MA5且MACD量柱由绿变红
If (MarketPosition == -1 && Close[1] > MA1 && MACDHist > 0 && MACDHist[1] <= 0)
{
BuyToCover(0, Open);
}
}
这三句删掉或者注释掉
谢谢老师,非常感谢🤝