|
请教大家:
我做了个交易策略,设定的浮动止损,目前仅测试单向做多,就发现一个问题:
我设的是【达到10个点盈利,启动浮动止盈——回撤5个点,止盈】
但是发现【总是第二根K线,就平仓,完全没到我设的止盈启动点】
而为了便于发现问题,我已经把定价止损取消了【就是低于开盘价几个点平仓的设置】
下面是相关代码,请大家看看有啥问题:
Params
//参数定义
Numeric N_xiadan(1);//下单数量
Vars
Numeric MinPoint; // 一个最小变动单位,也就是一跳
Numeric MyEntryPrice; // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场 的价格
Numeric TrailingStart1(10); // 跟踪止损启动设置1
Numeric TrailingStop1(5); // 跟踪止损设置1
Numeric MyExitPrice; // 平仓价格
NumericSeries HighestAfterEntry; // 开仓后出现的最高价
NumericSeries LowestAfterEntry; // 开仓后出现的最低价
Begin
//策略执行区
//==============================平仓规则===================================
If(BarsSinceBuyEntry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry,G_TotalAvgPrice); // 开仓的Bar,将开 仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,G_TotalAvgPrice); // 开仓的Bar,将开 仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}else
{
HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下 一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low); // 记录下当前Bar的最低点,用于下 一个Bar的跟踪止损判断
}
MinPoint = MinMove*PriceScale;
MyEntryPrice = G_TotalAvgPrice;
////////////////////////////////////////////
////////////////////////////////////////////
If(MarketPosition==1) // 【持有多单的情况】
{
if(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart1*MinPoint)// 第一级跟踪止 损的条件表达式
{
If(Low <= HighestAfterEntry[1] - TrailingStop1*MinPoint)
{
MyExitPrice = HighestAfterEntry[1] - TrailingStop1*MinPoint;
If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空 触发,则用开盘价代替
Sell(N_xiadan,MyExitPrice);
|
|