Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.
raybackreedy
Members-
Content Count
2 -
Joined
-
Last visited
Personal Information
-
First Name
TradersLaboratory.com
-
Last Name
User
-
City
london
-
Country
United Kingdom
-
Gender
Male
Trading Information
-
Vendor
No
-
raybackreedy started following EL Help on Pausing Any Further Entries on a Bar
-
EL Help on Pausing Any Further Entries on a Bar
raybackreedy replied to raybackreedy's topic in Coding Forum
Hi Tams, Thanks for response and tips. Am i correct in my understanding of the keywords barssincenty/exit/entrytime/exit time are not operable intrabar on a tick level (i.e. intrabarpersist) but become active at the end of that time bar on which they are valid. This may help explain why i still see multiple entries in the same time bar with their use. The main conditions on an entry signal on each time bar are: Only one entry per time bar (can be at open, intrabar, close tick). Possible of up to two exits per time bar. No entry after a profit take in that time bar. So we have to check at the start of bar, intrabar and at close of each time bar if Entrybar_Trade_closed is true, using entryprice keyword (assuming this is valid on every tick i.e. intrabarpersist) [intrabarordergeneration=t rue] Intrabarpersist Bar# (0) Entrybar_trade_closed (true); 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 condition4 = positionprofit(1) >= (Tradesize*PS* (minmove/pricescale)*bigpointvalue ); //profit take if time > startTime or time < Endtime then begin //check at open of each bar if a trade occurs, if so then set flag to close bar. If MP = 0 currentbar > 1 then begin Barstatus = 0; If not Entrybar_trade_closed then begin if entryprice > 0 then Entrybar_trade_closed = true; Bar# = Currentbar (or Barnumber?); end else Entrybar_trade_closed = false and Bar# =0; //if a trade ocurred on open price tick then Bar# should be equal to the current bar # and so trade already closed to entry signal //if no trade on open, check if a trade ocurred intrabar, if so, then set flag to close bar //also if trade ocurred intrabar, check if stopped out intrabar, as entryprice > 0 condition may not be true throughout intrabar. Barstatus = 1; If Bar# <> currentbar then begin if entryprice > 0 or exitprice(1) > 0 //not sure about exitprice(1) check as this may only become available at end of bar!!? then Entrybar_trade_closed = true; Bar# = Currentbar (or Barnumber); end else Entrybar_trade_closed = false and Bar# = 0; //check entry condition at close of bar Barstatus = 2; If Bar# <> currentbar then begin if entryprice > 0 then Entrybar_trade_closed = true; Bar# = Currentbar (or Barnumber); end else Entrybar_trade_closed = false and Bar# = 0; //Now once in a position, checking all susequent time bars where an entry may be possible after a stop loss. As we are already in a position, entryprice is >0, so exitprice(1) keyword is used!? //check at open of each bar if a trade occurs, if so then set flag to close bar. //If profit take occur on open, that time bar closed to entry signal. //Likewise, if stoploss and re-entry condition 1 or 2 valid on open, then that time bar closed to further entry signals. If MP <> 0 then begin Barstatus = 0; If Bar# = 0 or Bar# <> currentbar then begin If condition3 and condition1 OR //stop loss and possible short entry signal condition3 and condition2 OR //stop loss and possible short entry signal condition4 then //profit take then Entrybar_trade_closed = true; Bar# = Currentbar (or Barnumber); end else Entrybar_trade_closed = false and Bar# = 0; //Checking for stoploss (and poss entry signal) or profit take intrabar Barstatus = 1; If Bar# <> currentbar then begin If condition3 and condition1 OR //stop loss and possible short entry signal condition3 and condition2 OR //stop loss and possible short entry signal condition4 then //profit take then Entrybar_trade_closed = true; Bar# = Currentbar (or Barnumber); end else Entrybar_trade_closed = false and Bar# = 0; //Checking for stoploss (and poss entry signal) or profit take on last tick of bar Barstatus = 2; If Bar# <> currentbar then begin If condition3 and condition1 OR //stop loss and possible short entry signal condition3 and condition2 OR //stop loss and possible short entry signal condition4 then //profit take then Entrybar_trade_closed = true; Bar# = Currentbar (or Barnumber); end else Entrybar_trade_closed = false and Bar# = 0; //rest of code as before //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 Thoughts/advice/correction on logic/keywords used above and anything else very welcomed and appreciated. Thanks in advance everyone, Ray -
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: 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. 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 (after stop loss) 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 here is what i have done..for some reason, the Entry_trade_closed flag is not working as described above. [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;