MQ模型编写问题 (文华财经wh9)

投资者咨询:MQ模型编写问题 (文华财经wh9)
来源:文华财经  日期:2018-8-3 8:45
 老师好,我想写一个选股排序然后交易的指标
涨速:(C/REF(MA(C,10),5)*100-100),COLORSTICK;
选股:跨合约引用上证指数的sar指标,上证指数SARLINE上穿0,并且涨速>=5;
排序:涨速前5名进行交易,每个股票使用10%的资金;
        收阳,并且最高价大于前日最高价加仓10%,可以加仓5次;

平仓:上证指数SARLINE下穿0,所有股票平仓50%;涨速<0清仓

技术人员回复
日期:2018-8-3 8:56
 分析后回复
投资者咨询:MQ模型编写问题 (文华财经wh9)
来源:文华财经  日期:2018-8-3 8:45
 好的,辛苦了
技术人员回复
日期:2018-8-3 9:48

核实一下, 您排序的基础是选股条件选出来的股票?

 

MQ的排序函数是按市场类别对系统字段进行排序,例如对沪深300股票的成交量进行排序,而不能先选股再排序

 

所以需要先对某个市场类别的股票进行固定字段的排序,筛选出排名前几的股票,然后满足条件再进行交易

 

排序支持的市场类别和字段,您可以参考MarketRank函数的函数说明,然后调整一下您的思路

投资者咨询:MQ模型编写问题 (文华财经wh9)
来源:文华财经  日期:2018-8-3 8:45
 那就不排序了

投资者咨询:MQ模型编写问题 (文华财经wh9)
来源:文华财经  日期:2018-8-3 8:45
 
涨速:(C/REF(MA(C,10),5)*100-100),COLORSTICK;
选股:跨合约引用上证指数的sar指标,上证指数SARLINE上穿0,并且涨速>=5;
开仓:涨速>=5进行交易,每个股票使用10%的资金;
        收阳,并且最高价大于前日最高价加仓10%,可以加仓5次;

平仓:上证指数SARLINE下穿0,所有股票平仓50%;涨速<0清仓
技术人员回复
日期:2018-8-3 10:30

MQ编写需要一定时间,下午15点前回复

投资者咨询:MQ模型编写问题 (文华财经wh9)
来源:文华财经  日期:2018-8-3 8:45
 好的,另外想问一下,秒周期的数据,做期货加载到运行池可以加载几天的数据
技术人员回复
日期:2018-8-3 11:10

秒周期上,主图回测时没有数据限制

 

加入模组时,数据限制为2周,您了解下

技术人员回复
日期:2018-8-3 14:50

 选股模型中不能引用跨合约数据,下面写法是当个合约满足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