one_entry = Sum(Buy_criteria,BarsSince(new_day) ) <= 1 AND Open_cond == 1
Should be < 1 for one entry. Change that and add
Tried writing it another way. This one here looks for a low to cross yesterday's close but the close of the intraday bar has to be above the yesterday's daily close. I gave it a quick check between some dates it should've have resulted in a trade. Didn't spend too much time at debugging but a check of 10 trades or so looks good.
SetTradeDelays(1,0,1,0); // buy on open next bar, sell at current bar on close
Hld = IIf(C > Ref(MA(H, 3), -1), 1, IIf(C < Ref(MA(L, 3), -1), -1, 0));
Hlv = ValueWhen(Hld != 0, Hld, 1);
Hilo = IIf(Hlv == -1, MA(H, 3), MA(L, 3));
yesterday_close = TimeFrameGetPrice("C",inDaily,-1);// previous days daily close
today_open = TimeFrameGetPrice("O",inDaily,0);// today's open
dn = DateNum();
new_day = dn != Ref(dn,-1); //used to determine new day.
Buycondition = L <= yesterday_close AND C > yesterday_close; // if low crossed yesterday's closed above yesteray's high.
buycondition = ExRem(buycondition,new_day); // remove further signals until new day
first_signal = L == LLV(L,BarsSince(new_day)); /
bull_bar = C > O;
Open_cond = IIf(today_open > yesterday_close,True,False);//open is greater then today's close.
Buy = buycondition AND Open_cond AND bull_bar AND first_signal;
Sell = C < Hilo;
BuyPrice = Open;
SellPrice = Close;
Filter = Buy;