关于同一bar盘中平前仓收盘开新仓问题
本帖最后由 inspirone 于 2018-6-14 21:40 编辑我在策略中加入了止损,测试时当盘中止损和反向开新仓(我用收盘开仓)发生在同一bar时止损位本应该在盘中发生但系统将止损位移到收盘。这样止损和开新仓都发生在收盘了止损位本应该在盘中的。如何让测试时盘中止损和反向开新仓(我用收盘开仓)发生在同一bar时止损位不给移到收盘。
这是我的策略,红字是后加入的止损。很简单就是10日均线向上收阳做多10日均线向下收阴做空。
Params
Numeric FastLength(10);
Numeric StopLossSet(30); // 止损设置
Vars
NumericSeries AvgValue10;
Numeric MinPoint; // 最小变动单位
Numeric MyEntryPrice; // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
Numeric MyExitPrice; // 平仓价格
Begin
MinPoint = MinMove*PriceScale;
MyEntryPrice = AvgEntryPrice;
AvgValue10 = AverageFC(Close,FastLength);
PlotNumeric("MA1",AvgValue10);
// 集合竞价和小节休息过滤
If(!CallAuctionFilter()) Return;
If( AvgValue10 > AvgValue10 && close > close && close > AvgValue10)
{
Buy(1,Close);
}
else If(MarketPosition==1) // 有多仓的情况
{
if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
}
}
If(AvgValue10 < AvgValue10 && close < close && close < AvgValue10)
{
SellShort(1,Close);
}
else if(MarketPosition==-1) // 有空仓的情况
{
if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
}
}
//PlotNumeric("PL",Portfolio_TotalProfit);
End
这样写开仓会有信号消失的,需要修改开仓条件的。 我想把开仓条件这样写,在我的策略中加入:如果止损与开仓在同一bar则下一bar开盘价开仓,请问版主这的怎么写?
页:
[1]