Topic: EASL - Programming Language for the Browser

Hello Traders,

I started prototyping a scripting language for customization of EA Studio.

Please see EASL online here:

The purpose of the language is to allow us easy modifications of the EA Studio stats, settings and indicators.

Some ideas:

;; Change the Data Horizon max bars limit to 1 million.

(eas.set-value! data-horizon-max-bars 1-000-000)

;; Change Collection limits to 1000 strategies

(eas.set-value! collections-max-strategies 1-000)

;; Change indicator's period range

(eas.set-value! moving-average.period.max 500)

There are endless possibilities from a minor modification to writing a money-management system or custom indicators.


My goal is to create a small, safe, and powerful language. For powerful I mean really powerful as well as following the best programming practices.

What is done so far:
- variables definitions
- functions definitions
- anonymous functions (lambda)
- recursion, including mutual recursion
- list library
- math library
- string library
- programming loops without recursion: for, do , while
- mutations: set!, list.set!, list.add!, ...
- closures
- function currying 

To be done:
- improving the string library
- adding JSON support
- possibly async - await.

EA Studio integration:
- access to the settings
- possibility to load data, strategies, collections
- possibility to export strategies, collections, experts
- modifications of the indicator parameters
- acceptance criteria
- starting automations: load data, start generator, export collections
- modifications of the exported Expert Advisors
- plugin libraries: statistics, fx indicators, candle patterns, web requests, DOM access...


The language is open source in GitHub:

Hackers are welcome to hack !!!


Currently EASL is only prototype. I think to work on it in small steps without interrupting the work on EA Studio and FSB Pro.
Having in mind that what you can test now online is done for 5 days, I think one year is an acceptable target for starting EA Studio integration.

Re: EASL - Programming Language for the Browser

Wow, that's awesome,

you never stop to amaze me wink

do or do not there is no try

Re: EASL - Programming Language for the Browser

Wow!.... Just WOW!

Re: EASL - Programming Language for the Browser

EASL becomes better and better.

Now it has a simplified syntax. It supports builtin and custom libraries. It can even interpret itself.
I'm going to release v1.0 next week.


Re: EASL - Programming Language for the Browser

Please make some video

Re: EASL - Programming Language for the Browser

this looks great.
I would like to have the knowledge to be able to use this.
I have some learning to do smile

Re: EASL - Programming Language for the Browser

I'm still working on the language design.

I'm going to reduce the language "purity" in order to make it easier and more "standard".

Re: EASL - Programming Language for the Browser

Just saw this now, sounds amazing!! Is it possible to use it already? Right now I am looking to change the max bars limitation to 1.000.000 indeed as I want to import 34 years of M15 history data, which are 850.000 bars.

Re: EASL - Programming Language for the Browser

Hmm, just tried it, but doesn´t seem to work. How can the max bars be changed to 1.000.000? Any other way? Thank you.

Re: EASL - Programming Language for the Browser

Is EASL officially dead?

Re: EASL - Programming Language for the Browser

EASL is one of the most powerful programming languages.


Manipulate source code:

(const easl `((const lst '(1 2 3 4 5 6 7))
              (const len (list-length lst))
              (* 6 len)))

(const res (eval  easl))

(print "The answer is:" res) ; => 42

Partial functions:

(const partial (func . pargs)
    (λ (. args)
        (apply func (list-concat pargs args))))

(const sum (m n)
    (+ m n ))

(const add2 (partial sum 2))

(print (add2 3))

Lambda calculus:

(const succ     (λ (n) (λ (f) (λ (x) (f ((n f) x)) ))))
(const pred     (λ (n) (λ (f) (λ (x) (((n (λ (g) (λ (h) (h (g f))))) (λ (u) x)) (λ (u) u)) ))))

(const add      (λ (m) (λ (n) ((m succ) n) )))
(const sub      (λ (m) (λ (n) ((n pred) m) )))

(const mult     (λ (m) (λ (n) (λ (f) (m (n f)) ))))
(const power    (λ (m) (λ (n) (n m) )))

It is available for online tests here:
The source code is available here:

If you think this is too much, you are completely right. EASL is way too powerful to serve the initial purpose - to be a plugin language for EA Studio.