老师你好,我现在遇到两跟问题,第一.我根据你们tb语言编程案列套用过来的跟踪止损,写好后运用到实际当中与预期的不符,本来是当最高价大于开仓价50点后启动移动止损,当回撤20点时平仓,实际中在开仓的当根k线就把仓给平了,第二.在公式的第67行提示大括号不匹配,经过反复查找也没找到错误,已经琢磨好几天了 实在没办法了 才来求助望老师指教指教 ,多谢!
下面是源码
//------------------------------------------------------------------------
// 简称: GZZS888
// 名称: 跟踪止损
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Vars
Numeric zhishunqidong(50); // 跟踪止损启动
Numeric zhishunhuiche(20); // 跟踪止损回撤
Numeric chushizhishun(50); // 止损设置
Numeric kaicangjia; //开仓价
Numeric pingcangjia; // 平仓价格
Series<Numeric> zuigaojia; // 开仓后出现的最高价
Series<Numeric> zuidijia; // 开仓后出现的最低价
Series<Numeric>MA; //均线
Events
//计算均线
OnBar(ArrayRef<Integer> indexs)
{
MA=AverageFC(Close,60);
PlotNumeric("MA",MA);
//判断是否做多
If(MarketPosition<>1 And Close[2]<MA and Close[1]>MA)
{
Buy(1,Open);
}
//...
If(BarsSinceEntry == 0) // 条件满足:开仓Bar
{
zuigaojia = Close;
zuidijia = Close; // 赋初值为当前最新价格
If(MarketPosition <> 0); // 有持仓时执行以下代码
{
//开仓Bar,将开仓价和当时的收盘价的较大值保留到zuigaojia
zuigaojia = Max(zuigaojia,AvgEntryPrice);
// 开仓Bar,将开仓价和当时的收盘价的较小值保留到zuidijia
zuidijia = Min(zuidijia,AvgEntryPrice);
}
}Else // 非开仓Bar时进行以下运算
{
// 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
zuigaojia = Max(zuigaojia,High);
// 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
zuidijia = Min(zuidijia,Low);
}
Commentary("最高价 = "+Text(zuigaojia));
Commentary("最低价= "+Text(zuidijia));
kaicangjia = AvgEntryPrice;
If(MarketPosition == 1 and BarsSinceEntry >= 1); //有多仓且非建仓bar
{
// 第二级跟踪止损的条件表达式
If(zuigaojia[1] >= kaicangjia + zhishunqidong);// 第二级跟踪止损的条件表达式
{
If(Low <= zuigaojia[1] - zhishunhuiche);
{
pingcangjia = zuigaojia[1] - zhishunhuiche;
// 如果该Bar开盘价即跳空触发,则用开盘价代替
// If(Open < pingcangjia) pingcangjia == Open;
Sell(1,pingcangjia);
}
} Else If(Low <= kaicangjia - chushizhishun); //可在此写初始止损处理
{
pingcangjia = kaicangjia - chushizhishun;
Sell(1,pingcangjia);
}
}
}
//------------------------------------------------------------------------
// 编译版本 2021/06/30 124313
// 版权所有 wsq890102
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
果然是分号作怪,我把所有IF后面的分号都删除,现在问题解决了,多谢老师指点!