核实一下, 您排序的基础是选股条件选出来的股票?
MQ的排序函数是按市场类别对系统字段进行排序,例如对沪深300股票的成交量进行排序,而不能先选股再排序
所以需要先对某个市场类别的股票进行固定字段的排序,筛选出排名前几的股票,然后满足条件再进行交易
排序支持的市场类别和字段,您可以参考MarketRank函数的函数说明,然后调整一下您的思路
MQ编写需要一定时间,下午15点前回复
秒周期上,主图回测时没有数据限制
加入模组时,数据限制为2周,您了解下
选股模型中不能引用跨合约数据,下面写法是当个合约满足SARLine穿越0轴的条件,参考:
选股公式:
Params
Numeric Length(4);
Numeric Step(2);
Numeric MValue(2);
Vars
NumericSeries Step1;
NumericSeries MValue1;
NumericSeries SARLine;
Numeric ZS;
Begin
Step1 = Step / 100;
MValue1 = MValue / 10;
SARLine = Sar(Length,Step1,MValue1);
ZS=(Close/Ref(Ma(Close,10),5)*100);
Select(ZS>5&&Cross(SARLine,0.5));
End
择时公式:
Setting
AddTimes:6;
Params
Numeric Length(4);
Numeric Step(2);
Numeric MValue(2);
Vars
NumericSeries Step1;
NumericSeries MValue1;
NumericSeries SARLine;
Numeric ZS;
Numeric LOTS;
Begin
Step1 = Step / 100;
MValue1 = MValue / 10;
SARLine = Sar(Length,Step1,MValue1);
ZS=(Close/Ref(Ma(Close,10),5)*100);
LOTS=InitMoney*0.1/Close;
If(ZS>=5&&BKVol==0)
{
Buy(LOTS);
}
If(IsUp&&High>Ref(High,1)&&BKVol>0)
{
Buy(LOTS);
}
If(CrossDown(SARLine,0))
{
Sell(BKVol/2);
}
If(ZS<0)
{
Sell(BKVol);
}
End