Help on pausing any further entries on a bar

Questions about MultiCharts and user contributed studies.
Ray
Posts: 5
Joined: 12 Oct 2010

Help on pausing any further entries on a bar

Postby Ray » 11 Nov 2010

Hi,
Been working on a solution on this for some time...looked in forums etc but cant seem to crack it.

here are the details:
MC 5.5, IOG on with "allow unlimited entries and exits per bar", Backtest precision 1 tick.
Time frame: minute bars.

Once an entry signal is triggered we enter on next bar limit (in this case next bar would be open of next minute bar), so we have a flag to check bar status (when last tick reached) of current bar (as IOG is on).

Here is the thing, once we have entered in a bar, we cannot reenter that same time bar , but we can be stopped out in that time bar. Also, if we are not stopped out in the same time bar we entered, and we then go on to get stopped out in a subsequent future bar, in this future bar where we are stopped out, a re-entry is possible at the stop exit price (here it is next tick). The new entry position can be stopped out within this bar or subsequent bars.

So, in any one time bar, only one entry is possible but a max of two exits could happen.

Also, once we hit a profit, in any bar, no entry is allowed on that time bar.

Have tried barsinceentry, barsinceexit, entrytime, exittime etc keywords but no success. I still get cases where there are multiple entries in the same time bar or an entry after a profit has been achieved in the same time bar.

Can anyone advice of a way forward, other keywords to use, or other logic to try lpls...

thanks in advance, much appreciated. ray

p.s. i've attached two screenshots to illustrate what should not be happening.
i..e multiple entries in the same bar and entry after a profit has been taken in the same bar.


Code: Select all

[intrabarordergeneration=true]

Entrybar_trade_closed = entrytime = time and barstatus <> 2;
Entrybar_trade_close_on_PS = positionprofit(1) >= (Tradesize*PS* (minmove/pricescale)*bigpointvalue)and exittime(1)=time;

condition1 = reenter short after stop loss at exitprice if true ;
condition2 = reneter long after stop loss at exitprice if true ;
condition3 = positionprofit(1) <= (-SL*Tradesize* (minmove/pricescale)*bigpointvalue); //stop loss


if time > startTime or time < Endtime then begin

If bartype_ex = 2 and barstatus >= 0 then begin

If not Entrybar_trade_closed or not Entrybar_trade_close_on_PS then begin
if entrytime = time and barstatus <> 2 or positionprofit(1) >= (Tradesize*PS* (minmove/pricescale)*bigpointvalue) and exittime(1)=time;

then Entrybar_trade_closed = true;

//first entry or new entry after a profit take

if currentbar > 1 and bartype_ex =2 and marketposition = 0 and NOT condition3 and Not Entrybar_trade_closed

then begin

//setup the bar status flag check to short entey on open of next time bar if entry conditions satisfied

If not bartrigger then begin

bartrigger = barstatus = 2 and oSlowK > 70;
limit_priceS = close[1] + (minmove/pricescale)*S;
end
else

bartrigger = bartrigger and oSlowK > 70;

if bartrigger then

sellshort ("Sk") tradesize Contracts next bar at limit_priceS limit;


//setup the bar status flag check to Long entey on open of next time bar if entry conditions satisfied

If not bartrigger then begin

bartrigger = barstatus = 2 and oSlowK < 30 ;
limit_priceL = close[1] - (minmove/pricescale)*B;

end
else

bartrigger = bartrigger and oSlowK < 30;


if oSlowK < 30 and bartrigger then
buy ("Bk") Tradesize Contracts next bar at limit_priceL limit;


end;

//check if to reenter only after a stop loss reached in any bar subsequent to the entry bar time

if condition3 and not Entrybar_trade_closed then begin

If condition1 and bartype_ex = 2 then
sellshort ("Stp") Tradesize Contracts next bar exitprice(1) limit

else

//If above entry after a stop loss not valid then revert to original entry check

If not bartrigger then begin

bartrigger = barstatus = 2 and oSlowK > 70;
limit_priceS = close[1] + (minmove/pricescale)*S;
end
else

bartrigger = bartrigger and oSlowK > 70;

if bartrigger then

sellshort ("S") Tradesize Contracts next bar at limit_priceS limit;
end;


//entry check after stop loss for long position

if condition3 and not Entrybar_trade_closed then begin

If condition2 and bartype_ex = 2 then
buy ("Btp") Tradesize Contracts next bar exitprice(1) limit

else


If not bartrigger then begin

bartrigger = barstatus = 2 and oSlowK < 30 ;
limit_priceL = close[1] - (minmove/pricescale)*B;

end
else

bartrigger = bartrigger and oSlowK < 30;


if oSlowK < 30 and bartrigger then


buy ("B") Tradesize Contracts next bar at limit_priceL limit;
end;



//set regular stop loss
SetStopContract;
SetStopLoss ((minmove/pricescale)*BigPointValue*SL);


//define normal profit stops
If marketposition <> 0 and bartype_ex = 2 and barssinceentry >= 1
then begin

If marketposition > 0 then
sell ("LP") Tradesize Contracts next bar at entryprice + (minmove/pricescale)*PS limit

ELse

If marketposition < 0 then
buytocover ("SP") Tradesize Contracts next bar at entryprice - (minmove/pricescale)*PS limit;
end;


SetExitOnClose;
end;
end;
end;
Attachments
Bar entry error.JPG
(26.87 KiB) Downloaded 235 times

Return to “MultiCharts”