Series<Numeric> level1Trend(0);
Numeric layInd(0);
Numeric mlayRes ( 1);
Series<Bool> stopBuySignal ;
Series<Bool> stopSellSignal ;
Series<Bool> bigBuySignal ;
Series<Bool> bigSellSignal ;
OnBar(ArrayRef<Integer> indexs)
{
layInd=0;
mlayRes=1;
for layInd=0 to Datasourcesize-1
{
mlayRes = mlayRes* data[layInd].BarExiststatus;
}
If(mlayRes <> 1)
{
return;
}
//第一层大方向 60分钟周期
Range[0:0]
{
srcCt=close ;
使用此srcCt计算逻辑
level1Trend= 根据以上算1或-1或0
}
//第二层小方向 5分钟周期
Range[1:1]
{
这里使用本层小周期的hloc做逻辑运算
//下面用法会不会使用了未来函数?
//小周期的逻辑平多或大周期出现平多信号
stopBuySignal=小周期的逻辑平多 or (data0.level1Trend==-1 and data0.level1Trend[1]==1 ) ;
//小周期的逻辑平空或大周期出现平空信号
stopSellSignal=小周期的逻辑平空 or (data0.level1Trend==1 and data0.level1Trend[1]==-1 ) ;
//大小周期同时出现做多信号
bigBuySignal=( data0.level1Trend==1 and 小周期的逻辑开多 ) ;
//大小周期同时出现做空信号
bigSellSignal= (data0.level1Trend==-1 and 小周期的逻辑开空) ;
if (MarketPosition == -1 && stopSellSignal[1])
{
BuyToCover(0, open);
}
// 平多仓
if (MarketPosition == 1 && stopBuySignal[1])
{
Sell(0, open);
}
// 多头信号时进场
if (MarketPosition != 1 && bigBuySignal[1])
{
Buy(lots, open);
}
// 空头信号时进场
if (MarketPosition != -1 && bigSellSignal[1])
{
SellShort(lots, open);
}
}
用quant3跑一跑就知道会不会信号闪烁了