EasyLanguage Developer Hiring Guide

Hiring Guide for EasyLanguage Engineers

Ask the right questions to secure the right EasyLanguage talent among an increasingly shrinking pool of talent.

EasyLanguage is a proprietary programming language developed by Omega Research in 1984. It is primarily used for creating trading strategies for the company's MetaTrader platform. EasyLanguage was the first programming language specifically designed for technical analysis and remains one of the most popular choices for traders today. Sources: [1] https://en.wikipedia.org/wiki/EasyLanguage [2] https://www.metatrader5.com/en/learn/easylanguage

First 20 minutes

General EasyLanguage knowledge and experience

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

How would you create a simple moving average in EasyLanguage?

You can create a simple moving average in EasyLanguage by using the 'Average' function. For example, 'Average(Close, 20)' calculates the 20-period simple moving average of the closing price.

What is the purpose of the 'Once' keyword in EasyLanguage?

The 'Once' keyword is used to ensure that a block of code is executed only once, regardless of how many times the condition for its execution is met.

How would you declare a variable in EasyLanguage?

In EasyLanguage, you can declare a variable by using the 'Var:' keyword followed by the variable name and its type. For example, 'Var: MyVariable(Numeric);' declares a numeric variable named MyVariable.

What are the basic data types in EasyLanguage?

EasyLanguage supports several data types including numeric, boolean, string, and datetime.

How would you define EasyLanguage?

EasyLanguage is a proprietary programming language that was developed by TradeStation Securities for their trading software. It is used to create custom indicators and strategies in TradeStation.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What youre looking for early-on

Does the candidate have strong analytical skills?

Analytical skills are necessary for understanding complex trading algorithms and for debugging code.

Has the candidate shown a willingness to learn and adapt?

The financial and technology industries are always evolving. A good candidate must be open to learning new technologies and adapting to changes.

Can the candidate work well in a team?

Software development often requires collaborative effort. The candidate needs to be able to communicate effectively, share ideas, and work well with others.

Does the candidate have experience with real-time trading systems?

Experience with real-time trading systems is important as EasyLanguage is heavily used in the development of these systems.

Has the candidate demonstrated an ability to problem-solve effectively?

Problem-solving skills are essential in any development role. The candidate should be able to think logically, analyze problems, and devise effective solutions.

Does the candidate have a firm understanding of EasyLanguage?

This is crucial because EasyLanguage is a proprietary programming language that was developed for use in the TradeStation trading platform. It is used to create custom indicators and strategies in the trading platform.

Next 20 minutes

Specific EasyLanguage development questions

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

What is the difference between 'Inputs' and 'Variables' in EasyLanguage?

'Inputs' are values that are provided to an indicator or strategy when it is applied to a chart, while 'Variables' are values that are calculated or used internally by the indicator or strategy.

How would you create a custom function in EasyLanguage?

You can create a custom function in EasyLanguage by using the 'Function' keyword followed by the function name, parameters, and body. For example, 'Function MyFunction(Param1, Param2) Begin ... End;' creates a function named MyFunction with two parameters.

What is the purpose of the 'Plot' function in EasyLanguage?

The 'Plot' function is used to create a graphical representation of data on a chart. For example, 'Plot(Close)' plots the closing price on a chart.

How would you use the 'MaxBarsBack' setting in EasyLanguage?

'MaxBarsBack' is used to specify the maximum number of bars that an indicator or strategy can reference. For example, 'MaxBarsBack = 50;' means that the indicator or strategy can reference up to 50 bars back.

What is the difference between 'If' and 'If-Then-Else' in EasyLanguage?

'If' is used to execute a block of code if a certain condition is met. 'If-Then-Else' is used to execute one block of code if a condition is met, and another block of code if the condition is not met.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the EasyLanguage engineer at this point.

A skilled EasyLanguage engineer should demonstrate strong proficiency in EasyLanguage coding, deep understanding of trading systems, and excellent problem-solving skills. Red flags would include lack of portfolio or real-world experience, inability to explain complex concepts, or poor communication skills.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with EasyLanguage.

What does this basic EasyLanguage code do?

Inputs: Price(NumericSeries), Length(NumericSimple);
Vars: Avg(0);
Avg = Average(Price, Length);
Plot1(Avg, 'Avg');

This code calculates the average of a price over a certain length and plots the average on a chart.

What will be the output of this EasyLanguage code snippet?

Vars: intrabarpersist counter(0);
If MarketPosition = 1 then counter = counter + 1;
Print('Counter: ', counter);

This code will increment the counter by 1 every time the market position is 1 and print the value of the counter.

What does this EasyLanguage code do that involves array manipulation?

Array: MyArray[3](0);
MyArray[1] = High;
MyArray[2] = Low;
MyArray[3] = Close;
Print('High: ', MyArray[1], ' Low: ', MyArray[2], ' Close: ', MyArray[3]);

This code creates an array with 3 elements, assigns the high, low, and close prices to the elements, and then prints these values.

What does this EasyLanguage code do that involves threading or concurrency?

Vars: intrabarpersist counter(0);
If LastBarOnChart_s and counter = 0 then Begin
  counter = counter + 1;
  Print('Last bar on chart.');
End;

This code prints 'Last bar on chart.' only once at the last bar on the chart. The counter is used to ensure the message is printed only once, demonstrating a basic form of concurrency control.

What does this EasyLanguage code do that involves class design or class object?

Objects: Plot1(NULL);
Plot1 = new PlotAttributes('MyPlot', 1, Red);
Plot1.SetPlotColor(Blue);
Print('Plot color: ', Plot1.GetPlotColor());

This code creates a new plot object with the name 'MyPlot', index 1, and color red. It then changes the plot color to blue and prints the plot color.

What will be the output of this advanced EasyLanguage code snippet?

Vars: intrabarpersist counter(0), intrabarpersist total(0);
If MarketPosition = 1 then Begin
  counter = counter + 1;
  total = total + Close;
End;
If LastBarOnChart_s and counter > 0 then Print('Average close price: ', total / counter);

This code calculates the average close price for all bars where the market position is 1 and prints the average close price at the last bar on the chart.

Wrap-up questions

Final candidate for EasyLanguage role questions

The final few interview questions for a EasyLanguage candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.

How would you implement a trailing stop in EasyLanguage?

You can implement a trailing stop in EasyLanguage by using the 'SetPercentTrailing' function. For example, 'SetPercentTrailing(1000, 10)' sets a trailing stop that moves up when the price increases by 10% and triggers when the price falls 1000 points below its highest level.

What is the difference between 'Buy' and 'BuyToCover' in EasyLanguage?

'Buy' is used to enter a long position, while 'BuyToCover' is used to exit a short position.

How would you optimize a strategy in EasyLanguage?

You can optimize a strategy in EasyLanguage by using the 'Optimize' function to find the best values for the strategy's parameters. This involves running the strategy with different parameter values and comparing the results.

What is the purpose of the 'SetStopLoss' function in EasyLanguage?

The 'SetStopLoss' function is used to set a stop loss level for a trade. For example, 'SetStopLoss(1000)' sets a stop loss level of 1000 points below the entry price.

How would you handle errors in EasyLanguage?

EasyLanguage does not have built-in error handling features like try-catch blocks. However, you can use conditional statements to check for potential errors and handle them accordingly.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

EasyLanguage application related

Product Perfect's EasyLanguage development capabilities

Beyond hiring for your EasyLanguage engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in EasyLanguage projects, and can engage in multiple capacities.