Inputs: Price(NumericSeries), Length(NumericSimple);
Vars: Avg(0);
Avg = Average(Price, Length);
Plot1(Avg, 'Avg');
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
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.
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.
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.
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.
EasyLanguage supports several data types including numeric, boolean, string, and datetime.
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.
Analytical skills are necessary for understanding complex trading algorithms and for debugging code.
The financial and technology industries are always evolving. A good candidate must be open to learning new technologies and adapting to changes.
Software development often requires collaborative effort. The candidate needs to be able to communicate effectively, share ideas, and work well with others.
Experience with real-time trading systems is important as EasyLanguage is heavily used in the development of these systems.
Problem-solving skills are essential in any development role. The candidate should be able to think logically, analyze problems, and devise effective solutions.
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.
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.
'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.
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.
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.
'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.
'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.
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.
Inputs: Price(NumericSeries), Length(NumericSimple);
Vars: Avg(0);
Avg = Average(Price, Length);
Plot1(Avg, 'Avg');
Vars: intrabarpersist counter(0);
If MarketPosition = 1 then counter = counter + 1;
Print('Counter: ', counter);
Array: MyArray[3](0);
MyArray[1] = High;
MyArray[2] = Low;
MyArray[3] = Close;
Print('High: ', MyArray[1], ' Low: ', MyArray[2], ' Close: ', MyArray[3]);
Vars: intrabarpersist counter(0);
If LastBarOnChart_s and counter = 0 then Begin
counter = counter + 1;
Print('Last bar on chart.');
End;
Objects: Plot1(NULL);
Plot1 = new PlotAttributes('MyPlot', 1, Red);
Plot1.SetPlotColor(Blue);
Print('Plot color: ', Plot1.GetPlotColor());
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);
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.
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.
'Buy' is used to enter a long position, while 'BuyToCover' is used to exit a short position.
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.
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.
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.
Back-end App Developer
Front-end Web Developer
Full Stack Developer (Java)
Full Stack Developer (.Net)
Full Stack Developer (MEAN)
Full Stack Developer (MERN)
DevOps Engineer
Database Engineer (AzureSQL)
Database Engineer (Oracle)
Database Engineer (General)
Solution Architect (.NET)
Solution Architect (Java)
Solution Architect (Ruby)
Solution Architect (Python)
AI Engineer (Python)
Sr. AI Engineer (Python)
AI Strategist (Python)
Business Intelligence Engineer
Systems Analyst
Mainframe Developer (COBOL)
Mainframe Developer (General)