- 精华
- 0
- 在线时间
- 37 小时
- UID
- 271012
- 积分
- 8
- 帖子
- 6
- 阅读权限
- 10
- 注册时间
- 2018-10-9
- 最后登录
- 2020-11-29
- 精华
- 0
- UID
- 271012
- 积分
- 8
- 帖子
- 6
- 主题
- 1
- 阅读权限
- 10
- 注册时间
- 2018-10-9
- 最后登录
- 2020-11-29
|
我以你的模型为基础,把你的顺势多单交易系统改写成一个空单顺势交易系统,编译保存没什么问题,但测试时发现无论你测试时间从何时开始都只有一个交易记录。即从测试第一天开仓到最后一天平仓,长不到原因,请帮我检查一下问题出在哪里?代码如下:
Params
Numeric TrailingSet(0.382); // 回撤开仓比例设置,从最高点下跌的比例
Numeric StopLossSet(0.5); // 止损比例设置
Vars
Bool startCondition(False); // 启动条件
Bool EntryCondition(False); // 开仓条件
Bool ExitCondition(False); // 平仓条件
NumericSeries highestValue(0); // 前2个周期的最高价
NumericSeries lowestValue(0); // 前2个周期的最低价
Numeric myEntryPrice(0); // 开仓价格
Numeric myExitPrice(0); // 平仓价格
Begin
highestValue = highestValue[1];
lowestValue = lowestValue[1];
If(MarketPosition ==0 ) // 当前空仓
{
If(Close[2]<Open[2] && Close[1] < Open[1] && Close[1] < Close[2])
{
startCondition = True;
highestValue = max(high[2],high[1]);
lowestValue = min(low[2],low[1]);
}
If(startCondition)
{
EntryCondition = ((Open-lowestValue) / (highestValue - lowestValue) > TrailingSet )&& // 开盘价即满足反弹条件,用开盘价进行交易
(Open < ((highestValue - lowestValue)*StopLossSet)-lowestValue) ; // 开盘价不能高于预设的止损价
If( EntryCondition)
{
SellShort(1,Open);
}Else // 再看其它价格是否满足
{
EntryCondition = (high -lowestValue ) / (highestValue - lowestValue) > TrailingSet ; // 最高价满足反弹条件,用高于TrailingSet设置的最近价位建仓
If(EntryCondition)
{
myEntryPrice = (HighestValue - LowestValue ) * TrailingSet+lowestValue ;
myEntryPrice = IntPart(myEntryPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理 (本行没修改过)
If(myEntryPrice >= low && myEntryPrice <= High)
{
SellShort(1,MyEntryPrice); //开仓做空
}
}
}
}
}else If(MarketPosition == -1) // 当前空仓
{
ExitCondition = ( high - lowestValue )/(highestValue - lowestValue) > StopLossSet; // 止损条件满足
If(ExitCondition)
{
myExitPrice = lowestValue + (HighestValue - LowestValue ) * StopLossSet;
myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理
BuyToCover(CurrentContracts(),myExitPrice); //空头止损平仓
}Else // 获利平仓
{
ExitCondition = ( AvgEntryPrice() -low ) > (highestValue - lowestValue); // 获利平仓条件满足
If(ExitCondition)
{
myExitPrice = AvgEntryPrice() - (HighestValue - LowestValue );
myExitPrice = IntPart(myExitPrice / (PriceScale()*MinMove)) *(PriceScale()*MinMove); // 对价格进行处理 (本行没修改过)
If (myExitPrice >= low && myEntryPrice <= high)
{
BuyToCover(CurrentContracts(),myExitPrice);
}Else
{
BuyToCover(CurrentContracts(),Close);
}
}
}
}
End
|
|