- ago
The finantic.Eval extension now supports complete Expressions with operations like addition, multiplication and internal functions like Max(), Min() Abs() and so forth.

The Eval() indicator can replace the IndOnInd(), MathIndOpInd() and MathIndOpValue() transformer indicators and allows for complex indicator combinations:

As an example, here an interesting Time Series for use as the limit price of limit entry orders:

"Open - Max(Open * 0.02, ATR(12) * 0.6)"

Before Build 2 of finantic.Eval you could not do this with Building Blocks and even with a coded strategy it could produce some headache...

See https://www.wealth-lab.com/extension/detail/finantic.Eval for details.
2
301
7 Replies

Reply

Bookmark

Sort
- ago
#1
Very good work!
0
Glitch8
 ( 12.05% )
- ago
#2
Makes WL8 much more flexible, love to see it!
0
- ago
#3
Been experimenting with this and really appreciate this extension. Is there any possibility of supporting strategy optimization? I'd like to be able to optimize the number of bars passed to the indicators inside Eval(...)
0
- ago
#4
I like the decorator pattern. I still do, but this is great work!
0
- ago
#5
QUOTE:
Is there any possibility of supporting strategy optimization?


Yes, of course.

Eval() accepts a string with an indicator expression like "RSI(20)".

In your coded strategy you could have a parameter for the RSI period:
CODE:
double rsiPeriod = Parameters[0].AsDouble;

Now pass this parameter value to the RSI call in Eval():
QUOTE:
Eval($"RSI({rsiPeriod})")

(Note the $ before the string, which triggers String Interpolation)
This works for coded strategies. If you have a Building Block strategy I'd suggest to convert it to a C# Strategy (click "Open as C# Coded Strategy) and (if not alraedy there) add the parameters you need, just for the optimization:

in the constructor or in Initialize():
QUOTE:
AddParameter("rsiPeriod", ParameterType.Double, 5, 1, 25, 1);

I dreamed a bit about optimizable parameters for the Eval() indicator in Building Blocks but finally decided against it because it was too complicated and too ugly and not elegant enough and so forth ... :(
2
- ago
#6
Hi @Profit1000,
you said:
QUOTE:
I like the decorator pattern

What does the decorator pattern have to do with the Eval() indicator?
1
- ago
#7
QUOTE:
What does the decorator pattern have to do with the Eval() indicator?

A way to write clean and structured code before Eval()
0

Reply

Bookmark

Sort