欢迎来到天天文库
浏览记录
ID:50848934
大小:37.45 KB
页数:6页
时间:2020-03-15
《量化经典RangeBreak交易系统模型源代码二.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、入场时间的考虑 突破的时效性,发生在上午和下午意义是不同的。 不同的商品时效属性不尽相同 为此我们增加最后交易时间参数,可供优化测试来确定最佳值。 实现代码 增加参数: NumericLastTradeMins(14.00); 开仓条件处增加一个时间条件。 If(MarketPosition!=1&&High>=UpperBand&&Time2、tTradeMins/100) { //空头开仓 } 止赢规则 为了防止较大的盈利被吞噬,增加跟踪止赢。 设定跟踪止赢的起始点。 设定跟踪止赢的回撤值。 或者可以选择百分比跟踪止赢。 这里我们采取回撤值。 跟踪止损的编码可配合前面的止损编码一起控制。 If(HigherAfterEntry>=AvgEntryPrice+DayOpen*TrailingStart*0.01) { StopLine=HigherAfterEntry-DayOpen*TrailingStop*0.01; }Els3、e//止损 { StopLine=AvgEntryPrice-DayOpen*StopLossSet*0.01; } If(Low<=StopLine) { MyPrice=StopLine; If(Open4、失大的波段,我们也需要再次入场,只是进场需要更高的条件。我们增加一条: 再次进场必须在突破前期的高点低点。 代码的修改 我们需要标记止损动作,并要记录高低位。 新建两个布尔型序列变量: BoolSeries bLongStoped; BoolSeries bShortStoped; 在脚本开始位置增加处理,保证其值向后传递。 增加HigherAfterEntry和LowerAfterEntry在平仓后的值传递。 初次进场和再次进场 在原始开仓位置增加条件,开多仓时bLongStoped不能5、为True,开空仓时bShortStoped不能为True。 发出交易指令处理这两个序列变量。 增加再次入场的代码: If(bLongStoped&&MarketPosition==0&&High>=UpperBand&&High>HigherAfterEntry&&TimeMyPrice)MyPrice=Open; Buy(1,MyPr6、ice); bLongStoped=False; Return; } //做空再次入场代码: If(bShortStoped&&MarketPosition==0&&Low<=LowerBand &&Low7、SellShort(1,MyPrice); bShortStoped=False; Return; } 涨跌停的控制 接近涨跌停板不应开仓。 若有持仓,价格到达涨跌停板马上平仓。 判断是否接近涨跌停 我们新建一个布尔变量bInBoardRange,默认值设置为False。 bInBoardRange= (OpenQ_UpperLimit-DayOpen*StopLossSet*0.02); 在开仓条件8、中加入(bInBoardRange==false) 涨跌停板平仓 为了在价格达到涨跌停价马上平仓,我们需要在增加如下代码: 做多时: If(Open==Q_UpperLimit) Sell(1,Open); 做空时: If(Open==Q_LowerLimit) BuyToCover(Lots,Open);
2、tTradeMins/100) { //空头开仓 } 止赢规则 为了防止较大的盈利被吞噬,增加跟踪止赢。 设定跟踪止赢的起始点。 设定跟踪止赢的回撤值。 或者可以选择百分比跟踪止赢。 这里我们采取回撤值。 跟踪止损的编码可配合前面的止损编码一起控制。 If(HigherAfterEntry>=AvgEntryPrice+DayOpen*TrailingStart*0.01) { StopLine=HigherAfterEntry-DayOpen*TrailingStop*0.01; }Els
3、e//止损 { StopLine=AvgEntryPrice-DayOpen*StopLossSet*0.01; } If(Low<=StopLine) { MyPrice=StopLine; If(Open4、失大的波段,我们也需要再次入场,只是进场需要更高的条件。我们增加一条: 再次进场必须在突破前期的高点低点。 代码的修改 我们需要标记止损动作,并要记录高低位。 新建两个布尔型序列变量: BoolSeries bLongStoped; BoolSeries bShortStoped; 在脚本开始位置增加处理,保证其值向后传递。 增加HigherAfterEntry和LowerAfterEntry在平仓后的值传递。 初次进场和再次进场 在原始开仓位置增加条件,开多仓时bLongStoped不能5、为True,开空仓时bShortStoped不能为True。 发出交易指令处理这两个序列变量。 增加再次入场的代码: If(bLongStoped&&MarketPosition==0&&High>=UpperBand&&High>HigherAfterEntry&&TimeMyPrice)MyPrice=Open; Buy(1,MyPr6、ice); bLongStoped=False; Return; } //做空再次入场代码: If(bShortStoped&&MarketPosition==0&&Low<=LowerBand &&Low7、SellShort(1,MyPrice); bShortStoped=False; Return; } 涨跌停的控制 接近涨跌停板不应开仓。 若有持仓,价格到达涨跌停板马上平仓。 判断是否接近涨跌停 我们新建一个布尔变量bInBoardRange,默认值设置为False。 bInBoardRange= (OpenQ_UpperLimit-DayOpen*StopLossSet*0.02); 在开仓条件8、中加入(bInBoardRange==false) 涨跌停板平仓 为了在价格达到涨跌停价马上平仓,我们需要在增加如下代码: 做多时: If(Open==Q_UpperLimit) Sell(1,Open); 做空时: If(Open==Q_LowerLimit) BuyToCover(Lots,Open);
4、失大的波段,我们也需要再次入场,只是进场需要更高的条件。我们增加一条: 再次进场必须在突破前期的高点低点。 代码的修改 我们需要标记止损动作,并要记录高低位。 新建两个布尔型序列变量: BoolSeries bLongStoped; BoolSeries bShortStoped; 在脚本开始位置增加处理,保证其值向后传递。 增加HigherAfterEntry和LowerAfterEntry在平仓后的值传递。 初次进场和再次进场 在原始开仓位置增加条件,开多仓时bLongStoped不能
5、为True,开空仓时bShortStoped不能为True。 发出交易指令处理这两个序列变量。 增加再次入场的代码: If(bLongStoped&&MarketPosition==0&&High>=UpperBand&&High>HigherAfterEntry&&TimeMyPrice)MyPrice=Open; Buy(1,MyPr
6、ice); bLongStoped=False; Return; } //做空再次入场代码: If(bShortStoped&&MarketPosition==0&&Low<=LowerBand &&Low7、SellShort(1,MyPrice); bShortStoped=False; Return; } 涨跌停的控制 接近涨跌停板不应开仓。 若有持仓,价格到达涨跌停板马上平仓。 判断是否接近涨跌停 我们新建一个布尔变量bInBoardRange,默认值设置为False。 bInBoardRange= (OpenQ_UpperLimit-DayOpen*StopLossSet*0.02); 在开仓条件8、中加入(bInBoardRange==false) 涨跌停板平仓 为了在价格达到涨跌停价马上平仓,我们需要在增加如下代码: 做多时: If(Open==Q_UpperLimit) Sell(1,Open); 做空时: If(Open==Q_LowerLimit) BuyToCover(Lots,Open);
7、SellShort(1,MyPrice); bShortStoped=False; Return; } 涨跌停的控制 接近涨跌停板不应开仓。 若有持仓,价格到达涨跌停板马上平仓。 判断是否接近涨跌停 我们新建一个布尔变量bInBoardRange,默认值设置为False。 bInBoardRange= (OpenQ_UpperLimit-DayOpen*StopLossSet*0.02); 在开仓条件
8、中加入(bInBoardRange==false) 涨跌停板平仓 为了在价格达到涨跌停价马上平仓,我们需要在增加如下代码: 做多时: If(Open==Q_UpperLimit) Sell(1,Open); 做空时: If(Open==Q_LowerLimit) BuyToCover(Lots,Open);
此文档下载收益归作者所有