请问版主策略进阶中的跟踪止损问题 - TradeBlazer公式 [开拓者 TB]
作者:
开拓者 TB 来源:
cxh99.com 发布时间:2012年05月08日 点击数:
【
收藏到本网的会员中心】
- 咨询内容:
我使用了策略进阶中的跟踪止损代码,但是出来的效果不能理解,有时候是按照我的设定跟踪止损的,有时候不是,不知道问什么?
源代码如下:
Params
Numeric TrailingStart5(50); // 跟踪止损启动设置5
Numeric TrailingStop5(0.10); // 跟踪止损设置5
Vars
Numeric MinPoint; // 一个最小变动单位,也就是一跳
Numeric MyEntryPrice; // 开仓价格
Numeric MyExitPrice; // 平仓价格
NumericSeries HighestAfterEntry; // 开仓后出现的最高价
NumericSeries LowestAfterEntry; // 开仓后出现的最低价
BoolSeries Con1;
BoolSeries Con2;
Begin
If(BarsSinceentry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}else
{
HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
}
MinPoint = MinMove*PriceScale;
MyEntryPrice = AvgEntryPrice;
If(MarketPosition==1) // 有多仓的情况
{
If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart5*MinPoint) // 第5级跟踪止损的条件表达式
{
If(Low <= HighestAfterEntry[1] - TrailingStop5*TrailingStart5*MinPoint)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop5*TrailingStart5*MinPoint;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
PlotString("zhiying","止赢",(Low-0.5*MinMove),Red);
}
}
}else if(MarketPosition==-1) // 有空仓的情况
{
If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart5*MinPoint) // 第5级跟踪止损的条件表达式
{
If(High >= LowestAfterEntry[1] + TrailingStart5*TrailingStop5*MinPoint)
{
MyExitPrice = LowestAfterEntry[1] + TrailingStart5*TrailingStop5*MinPoint;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
PlotString("zhiying","止赢",(Low-0.5*MinMove),Red);
}
}
}
//开仓
If(Con1)
{
Buy(0,Close);
}else If(Con2)
{
SellShort(0,Close);
}
End
- TB技术人员:
据我观察,记录最高最低价部分有问题。
- TB客服:
能不能详细说明一下?