Hello,
I have been struggling with
- getting the close price on the very first bar in the day (1-minute data)
- set a limit buy order at certain points/ percentage below this price from the first bar.
I read through the manual as well as this forum, but I did not find any answer.
can anybody help?
thank you in advance, MirkaLinda
The code I use, but generates too many inputs each day
SetTradeDelays (1,1,1,1);
LimitPrice = (Ref(O,-1)-0.2);
//Buy = Open;
Buy = Cross (Limitprice, o);
Sell =0;
ApplyStop (stopTypeProfit, stopModepoint, XXX);
ApplyStop (stopTypeLoss, stopModePoint, XXX);
@MirkaLinda,
Point 1:
Would this thread help you out? Price at specific date and time problem. (ValueWhen() and DateTimeDiff())
Point 2:
Your calculation for the limit price? Would it not be if any of the OHLC cross below the limit price?
@MirkaLinda how to determine the values of the first bar have been posted many times on this forum, using the analysis in the time frame you want (in your case 1 minute)
dn = Day();
// dn = DateNum(); // alternate method
newDay = dn != Ref( dn, -1 );
FirstBarOpen = ValueWhen( newDay, Open );
FirstBarHigh = ValueWhen( newDay, High);
FirstBarLow = ValueWhen( newDay, Low );
FirstBarClose = ValueWhen( newDay, Close);
For limit orders study the Knowledge Base article (and other similar posts on the forum),
http://www.amibroker.com/kb/2014/11/26/handling-limit-orders-in-the-backtester/
2 Likes
Thank you,
it seems logical, but does not resolve the first bar after market opening. Here it produces data from overnight corrections (I use intraday data from IB).
Sorry, I was not specific on that. Even if I use time such as 093000, it does not work..
Ad limit orders - I know you have been directing me to a thread about limit buy, but it works only on percentage, if I want to subtract certain number of points, I get lost..
Thank you all! Now it works.
after reading and combining, I found probably what I needed:
the code is now (if somebody is searching for the same):
tn = TimeNum();
StartTime = 93000;
Endtime = 153000;
StartBar = tn == StartTime;
MyL = ValueWhen( StartBar, L );
Buy = Cross ((MyL-0.2), o) AND tn >=StartTime AND tn <=EndTime ;