- 精华
- 0
- 在线时间
- 10 小时
- UID
- 205278
- 积分
- 6
- 帖子
- 4
- 阅读权限
- 10
- 注册时间
- 2015-3-16
- 最后登录
- 2019-10-25
- 精华
- 0
- UID
- 205278
- 积分
- 6
- 帖子
- 4
- 主题
- 2
- 阅读权限
- 10
- 注册时间
- 2015-3-16
- 最后登录
- 2019-10-25
|
您好!我用指南的跟踪止损源码,发现一个问题:譬如做空,就是同根bar,突然上涨发出了止损的指令,但却不是发出的目前的现价价位,而是这跟bar的开盘价,就导致无法成交。请问怎么处理呢?跪求版主回复啊!源码如下:
//跟踪止损
//
If(BarsSinceentry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry, myEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry, myEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}else
{
HighestAfterEntry = Max(HighestAfterEntry, High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry, Low); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
}
If(MarketPosition==1) // 有多仓的情况
{
If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart2 And BarsSinceEntry > 0) // 第二级跟踪止损的条件表达式
{
If(Low <= HighestAfterEntry[1] - TrailingStop2 And BarsSinceEntry > 0)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop2;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
Commentary("多头跟踪止损");
}
}else if(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart1 And BarsSinceEntry > 0)// 第一级跟踪止损的条件表达式
{
If(Low <= HighestAfterEntry[1] - TrailingStop1 And BarsSinceEntry > 0)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop1;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
Commentary("多头跟踪止损");
}
}else if(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart0 And BarsSinceEntry > 0)// 第一级跟踪止损的条件表达式
{
If(Low <= HighestAfterEntry[1] - TrailingStop0 And BarsSinceEntry > 0)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop0;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
Commentary("多头跟踪止损");
}
}else if(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart4 And BarsSinceEntry > 0)// 第一级跟踪止损的条件表达式
{
If(Low <= HighestAfterEntry[1] - TrailingStop4 And BarsSinceEntry > 0)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop4;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
Commentary("多头跟踪止损");
}
}else if(Low <= MyEntryPrice - StopLossSet And BarsSinceEntry > 0)//可以在这里写上初始的止损处理
{
MyExitPrice = MyEntryPrice - StopLossSet;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(0,MyExitPrice);
Commentary("多头止损");
}
}else if(MarketPosition==-1) // 有空仓的情况
{
If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart2 And BarsSinceEntry > 0) // 第二级跟踪止损的条件表达式
{
If(High >= LowestAfterEntry[1] + TrailingStop2 And BarsSinceEntry > 0)
{
MyExitPrice = LowestAfterEntry[1] + TrailingStop2;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
Commentary("空头跟踪止损");
}
}else if(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart1 And BarsSinceEntry > 0)// 第一级跟踪止损的条件表达式
{
If(High >= LowestAfterEntry[1] + TrailingStop1 And BarsSinceEntry > 0)
{
MyExitPrice = LowestAfterEntry[1] + TrailingStop1;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
Commentary("多头跟踪止损");
}
}else if(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart0 And BarsSinceEntry > 0)// 第一级跟踪止损的条件表达式
{
If(High >= LowestAfterEntry[1] + TrailingStop0 And BarsSinceEntry > 0)
{
MyExitPrice = LowestAfterEntry[1] + TrailingStop0;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
Commentary("多头跟踪止损");
}
}else if(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart4 And BarsSinceEntry > 0)// 第一级跟踪止损的条件表达式
{
If(High >= LowestAfterEntry[1] + TrailingStop4 And BarsSinceEntry > 0)
{
MyExitPrice = LowestAfterEntry[1] + TrailingStop4;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
Commentary("多头跟踪止损");
}
}else If(High >= MyEntryPrice + StopLossSet And BarsSinceEntry > 0)//可以在这里写上初始的止损处理
{
MyExitPrice = MyEntryPrice + StopLossSet;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(0,MyExitPrice);
Commentary("空头止损");
}
}
End |
|