为什么平仓会有信号闪烁

//------------------------------------------------------------------------

// 简称: trend_HL2

// 名称: 趋势策略2(跨周期)

// 类别: 公式应用

// 类型: 用户应用

// 输出: Void

//------------------------------------------------------------------------

Params

   Numeric Length(20);  //计算高低点周期

   Numeric MaxLots(10); //最大连续浮亏开仓次数


Vars    

   Series<Numeric> HH;

   Series<Numeric> LL;

   Series<Numeric> HH1;

   Series<Numeric> LL1;

   Series<Numeric> EntryPrice1;

   Series<Numeric> jincha;

   Series<Numeric> sicha;

   Series<Numeric> sProfit;

   Series<Numeric> lProfit;

   Global Numeric lots_sum(1);

   Global Numeric DKG;

   Global Numeric KKG;


Events

//此处实现事件函数

//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作

OnInit()

{

     //=========跨周期数据计算==============

        {


        SubscribeBar(Data0.Symbol,"5s",Data0.BeginDateTime);

        }

}


//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组

OnBar(ArrayRef<Integer> indexs)

{

Range[0:0]

{

HH = Highest(High,Length);

LL = Lowest(Low,Length);

HH1 = nthcon(HH>HH[1],1);

LL1 = nthcon(LL<LL[1],1);

//Print("HH1=" + Text(HH1));

//Print("LL1=" + Text(LL1));

Commentary("HH1=" + Text(HH1));

Commentary("LL1=" + Text(LL1));

If(HH1 < LL1)

{

 PlotAuto("趋势线",LL,LL,Red,Enum_Line,Enum_Solid);

 }

 Else

{

 PlotAuto("趋势线",HH,HH,Green,Enum_Line,Enum_Solid);

 }

If(CrossOver(LL1,HH1))

{

jincha=1;

sicha=0;

}

If(CrossUnder(LL1,HH1))

{

jincha=0;

sicha=1;

}


}

Range[1:1]

{

//开仓交易

If(MarketPosition == 0)

{  

  If(data0.jincha==1)

{

Buy(lots_sum,Close);

EntryPrice1 = LastEntryPrice;

DKG=0;

}Else If(data0.sicha==1)    

{    

SellShort(lots_sum,Close);

EntryPrice1 = LastEntryPrice;

KKG=0;

}

}


//平仓交易

If(MarketPosition > 0 And data0.sicha==1 And BarsSinceEntry >= 1 And DKG==0)

{   //平多单

Sell(0,Close);

print("data0.sicha=" + Text(data0.sicha));

print("time=" + Text(Time));

lProfit = ExitPrice - EntryPrice1;  

If((lProfit <= 0) And lots_sum < MaxLots)

{

lots_sum = lots_sum + 1;

Commentary("lots_sum=" + Text(lots_sum));

}Else If (lProfit >0)

{

lots_sum = 1;

}

       data0.sicha=0;

       DKG=1;

}

Else If(MarketPosition < 0 And data0.jincha==1 And BarsSinceEntry >= 1 And KKG==0)

{   //平空单

BuyToCover(0,Close);

print("data0.jincha=" + Text(data0.jincha));

print("time=" + Text(Time));

sProfit = EntryPrice1 - ExitPrice;    

If((sProfit <= 0) And lots_sum < MaxLots)

{

lots_sum = lots_sum + 1;

}Else If (sProfit >0)

{

lots_sum = 1;

}  

data0.jincha=0;

KKG=1;

}

Commentary("DKG=" + Text(DKG));

Commentary("KKG=" + Text(KKG));

Commentary("data0.jincha=" + Text(data0.jincha));

Commentary("data0.sicha=" + Text(data0.sicha));

      }


   }



//------------------------------------------------------------------------

// 编译版本 2024/12/27 105232

// 版权所有 wt9821506389

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TradeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

信号闪烁会有什么后果
关于onbaropen 是否会有闪烁
信号闪烁问题
信号闪烁
这段代码为什么会信号闪烁?
信号闪烁
由信号闪烁产生的交易,后续满足平仓条件时,可以平仓吗
信号闪烁
关于信号闪烁
请教定时开平仓出现信号闪烁的问题

我把全局变量去除,平仓的时候还是有信号闪烁

把KKG定义为序列变量来控制就可以。但关键还是要对运行机制理解透彻。建议完整看下量化零基础视频

你对TB公式机制理解可能有点偏差,BuySell图表信号类策略,是不能这样用全局变量来控制交易条件的。

为什么不能全局变量来控制交易条件?