求助
Events
//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
/*OnInit()
{
Range[0:DataCount-1]
{
If(IsRollover)
{
AddLayerFlag(Enum_RolloverBackWard());//设置后复权
}
If(IsRolloverRealPrice)
{
AddLayerFlag(Enum_RolloverRealPrice());//是否映射真实价格
}
If(IsAutoSwapPosition)
{
AddLayerFlag(Enum_AutoSwapPosition());//设置自动换仓
}
}
}*/
onBar(ArrayRef<Integer> indexs)
{
MACDValue = XAverage(Close,MACD_FastLength) - XAverage(Close,MACD_SlowLength);
AvgMACD = XAverage(MACDValue,MACD_Length);
MACDDiff = MACDValue - AvgMACD;
Data0.PlotNumeric("MACD",MACDValue);
Data0.PlotNumeric("MACDAvg",AvgMACD);
If(MACDDiff >= 0)
Data0.PlotNumeric("MACDDiff",MACDDiff,0,Red);
Else
Data0.PlotNumeric("MACDDiff",MACDDiff,0,Green);
Data0.PlotNumeric("零线",0);
Data1.HighestValue = Data1.HighestFC(High,KD_Length);
Data1.LowestValue = Data1.LowestFC(Low,KD_Length);
Data1.SumHLValue = Data1.SummationFC(Data1.HighestValue - Data1.LowestValue,KD_SlowLength);
Data1.SumCLValue = Data1.SummationFC(Data1.Close - Data1.LowestValue,KD_SlowLength);
If(Data1.SumHLValue <> 0)
{
Data1.KValue = Data1.SumCLValue/Data1.SumHLValue*100;
}Else
{
Data1.KValue = 0;
}
Data1.DValue = Data1.AverageFC(Data1.KValue,KD_SmoothLength);
Data1.PlotNumeric("K",KValue);
Data1.PlotNumeric("D",DValue);
Data1.PlotNumeric("Ref1",20);
Data1.PlotNumeric("Ref2",80);
// 开仓数量
If(IsRollover And IsRolloverRealPrice)
{
Units = IntPart(Capital/(Data2.Open/Data2.Rollover()*Data2.ContractUnit()*Data2.BigPointValue()));
}Else
{
Units = IntPart(Capital/(Data2.Open*Data2.ContractUnit()*Data2.BigPointValue()));
}
// 开仓
If(Data2.MarketPosition != -1 And Data0.MACDDiff[1] < Data0.MACDDiff[2] And Data1.K