Hi Mike, Thanks again.
Pity about the variable operator. I don't have any problems with "if" and "iif" statements, in this instance it just seems a bit inelegant. The sort of extensibility I am chasing will probably be done best with a switch statement. I've got the code running now - I used if statments in the following way: if (something) clause1 = xxxx >= yyyy; else clause1 = xxxx < yyyy; BuyCondition = clause1 AND clause2; Thanks for your help Robert Z ________________________________ From: Mike <sfclimb...@yahoo.com> To: amibroker@yahoogroups.com Sent: Thursday, 30 July, 2009 2:16:57 PM Subject: [amibroker] Re: Relational Operators assigned to variables? Robert, I don't believe that you can do the variable operator. However, it seems like you would need to do an 'if' or 'iff' regardless. If you just want to get the details out of your face, you can replace your variable operator concept with function calls. You could even move the function declarations to a separate file and just #include them. e.g. function myOp(something) { return iif(something, ref(open, -x) >= ref(close, -y), ref(open, -x) < ref(close, -y); } giving: BuyCondition = myOp(something) AND myOp2(something) ... Or, to generalize further, pass the arguments too: function myOp(something, arg1, arg2) { return iif(something, arg1 >= arg2, arg1 < arg2); } giving: BuyCondition = myOp(something, ref(open, -x), ref(close, -y)) AND ... Mike --- In amibro...@yahoogrou ps.com, i cs <ics4...@... > wrote: > > Hi Mike, > > Thanks for your reply. I'm sure that I can get something happening with a bunch of if/iif statements. I've been trying to avoid it because I think it'll complicate the code and make it less extensible. To give you an idea of what I'm attempting, I'm currently experimenting with the WFA engine and running some dubious code, but the reason for this code is NOT to write a strategy, it's to understand and get some experiential feel for the WFA. > > My code is more similar to the following: > > if ( something ) > myOp = ">="; > else > myOp = "<"; > > // and this is the clinker..... > BuyCondition = ref(open, -x) myOp ref(close, -y) AND ref(close, -z) myOp2 ref(close,-a) ...[ AND....AND ] > > You can see have a "variable operator" might keep it simple, particularly where you might want to add further AND clauses to the buy condition. > > Thanks again > > Robert Z > > > > > > > ____________ _________ _________ __ > From: Mike sfclimb...@. .. > To: amibro...@yahoogrou ps.com > Sent: Thursday, 30 July, 2009 1:51:53 AM > Subject: [amibroker] Re: Relational Operators assigned to variables? > > > Just repeat the IIF within an IF: > > if (something) { > x = iif ( Open > Close, 0, 1 ); > } else { > x = iif ( Open < Close, 0, 1 ); > } > > Alternatively, get rid of the IIF entirely since the expression is boolean (which returns 1 on true) and add a NOT operator to reverse it: > > if (something) { > x = NOT (Open > Close); > } else { > x = NOT (Open < Close); > } > > Getting rid of the NOT and reversing the logic gives: > > if (something) { > x = (Open <= Close); > } else { > x = (Open >= Close); > } > > If, on the other hand you want to keep the IIF, you could integrate the 'something' into the IIF giving: > > x = iif(something, NOT (Open > Close), NOT (Open < Close)); > > or: > > x = NOT iif(something, Open > Close, Open < Close); > > It all boils down to what is most 'readable' to you. > > Mike > > --- In amibro...@yahoogrou ps.com, "ics4mer" ics4mer@ > wrote: > > > > Hi all, > > > > A newbies question. > > > > Can I assign a relational operator to a variable? > > > > Logically, I'd like to do something like this: > > > > //// begin ex > > > > if ( something ) > > myRelOp = ">"; > > else > > myRelOp = "<"; > > > > iif ( Open myRelOp Close, 0, 1 ); > > > > //// end ex > > > > I hope that makes sense! > > > > TIA > > > > Robert Z > > > > > > > > ____________ _________ _________ _________ _________ _________ _\ ____________ > Access Yahoo!7 Mail on your mobile. Anytime. Anywhere. > Show me how: http://au.mobile. yahoo.com/ mail > ____________________________________________________________________________________ Access Yahoo!7 Mail on your mobile. Anytime. Anywhere. Show me how: http://au.mobile.yahoo.com/mail