我的解决方法: 1. 加一个跳空参数GapLimit,比如今天开盘比昨天收盘(本来应该用结算价但TB历史数据里没有)跳空高开2%以上,如果昨天持空单则以今天开盘价立刻止损,这样处理后即使遇到开盘一字板,至少也有止损的动作,能否成功就另说了。 2. 用小周期来操作,比如用5M周期,这样在一根K线里能同时达到两条线的机会就小很多了,而日内如果有反复来回,那就有几次就操作几次。 下面是我写的TB代码,用5M周期测试的效果不错。 Params Numeric KBuy(0.7); //做多的K值 Numeric KSell(0.7); //做空的K值 Numeric GapLimit(2); //第二天开盘如果与持仓方向相反跳空超过此百分点立刻止损 Vars Numeric StartValue; //触发值 Numeric BuyPrice; //开多价 Numeric SellPrice; //开空价 Begin StartValue = Max(HighD(1)-CloseD(1), CloseD(1)-LowD(1)); BuyPrice = OpenD(0)+StartValue*KBuy; SellPrice = OpenD(0)-StartValue*KSell; PlotNumeric("BuyLine", BuyPrice, 0, Red); PlotNumeric("SellLine", SellPrice, 0, Green); If(BarsSinceToday == 1) { If(MarketPosition == 1 And (Open/Close[1] < 1-GapLimit/100)) //跳空低开止损多单 { Sell(0, Open); } Else If(MarketPosition == -1 And (Open/Close[1] > 1+GapLimit/100)) //跳空高开止损空单 { BuyToCover(0, Open); } } If(High > BuyPrice And MarketPosition <= 0) { Buy(0, BuyPrice); Return; } Else If(Low < SellPrice And MarketPosition >= 0) { SellShort(0, SellPrice); Return; } End