- 精华
- 0
- 在线时间
- 273 小时
- UID
- 35833
- 积分
- 389
- 帖子
- 80
- 阅读权限
- 50
- 注册时间
- 2011-4-26
- 最后登录
- 2017-7-3
- 精华
- 0
- UID
- 35833
- 积分
- 389
- 帖子
- 80
- 主题
- 14
- 阅读权限
- 50
- 注册时间
- 2011-4-26
- 最后登录
- 2017-7-3
|
公式如下:
Params
Numeric Para1(10);
Numeric StopLossSet(10);
Vars
NumericSeries Ma1;
Bool Condition1;
Bool Condition2;
Numeric MinPoint;
Numeric MyEntryPrice;
Numeric MyExitPrice;
Begin
MinPoint=MinMove*PriceScale;
MyEntryPrice=LastEntryPrice; //上次 的开仓价格
Ma1=Average(Close,Para1);
Condition1 = CrossOver(Close[1],Ma1[1]);
Condition2 =CrossUnder(Close[1],Ma1[1]);
if(MarketPosition==0) //无持仓的情况
{
if(Condition1)
{
Buy(1,Open);
}else if(Condition2)
{
SellShort(1,Open);
}
}else if(MarketPosition==-1) //持空仓的情况
{
if(Condition1)
{
BuyToCover(1,Open);
Buy(1,Open);
}else if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
BuyToCover(1,MyExitPrice);
Buy(1,MyExitPrice);
//FileAppend("c:\\11.Log",Text(Time)+" "+Text(MyExitPrice));
}
} Else if (MarketPosition==1) //持多仓的情况下
{
If(Condition2)
{
Sell(1,Open);
SellShort(1,Open);
}else if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
{
MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替
Sell(1,MyExitPrice);
SellShort(1,MyExitPrice);
//FileAppend("c:\\11.Log",Text(Time)+" "+Text(MyExitPrice));
}
}
End
但是有一个问题,就是在用一个Bar中开仓后,如果碰到止损点 应该如何实现止损? |
|