Download MetaTrader 5

Andrey Bolkonsky (abolk): "Any programmer knows that there is no software without bugs"

7 September 2011, 17:37
MetaQuotes Software Corp.
2 109

Andrey Bolkonsky (abolk) has been participating in the Jobs service since its opening. He has developed dozens of indicators and Expert Advisors for the MetaTrader 4 and MetaTrader 5 platforms. We will talk with Andrey about what a server is from the perspective of a programmer.

Andrey, how did you start trading Forex?

I have a degree in "Economical informatics and automated control systems". I participated in the development and implementation of automated control systems for industrial plants. I started to trade on financial markets in October 2005; since 2007 I've been trading using the MetaTrader 4 platform.

What lead me to trading was the desire to earn, and I wanted to earn a lot of money. From the very first days I started to trade on a real account (I've never traded on demo, and I test all my strategies right on a real account). My first success was when I managed to increase my initial 50 dollars five times for one month. This followed by an inevitable loss of the entire amount and even more.

The first half of the crisis 2008 was very successful for me, and I even started to attract investor capital. On the 11th of July my "dream" came true - I earned 1013.56 of real US dollars for one day. But the crisis brought me into bankruptcy.

I use manual trading systems. And I learned about automated trading only when started to develop trading systems to order. After that I started to use information modules and money management modules. Currently I am trying to formalize my own methods for making trade decisions.

I started to actively develop automated trading systems in August 2010. By the way, my first agreement (my debut) was concluded through the Jobs service. In the "Completed" list, my first job is on the 19th position. I had several reasons to start developing automated trading systems: first, it is an income; second, there is nothing complicated and I know how to do it; and third, it is a good training for my brain.

Why is the Jobs service interesting to you?

At the moment, the service is an overtime job for me.

Why it is interesting to me:

   1. Public confirmation of fulfilled orders (it has a list of completed jobs);
   2. Public advertising (there is a Top of developers + a list of fulfilled tasks + feedback);
   3. Convenient discussions with the customers at all the stages of development, testing and debugging (a documented dialog, which cannot be edited post factum);
   4. Arbitration (quick, competent, fair and impartial + assurance for the Customer);
   5. Guaranteed payment (I work only with 100% advanced payment, while additional security of the contract amount is important for the Customer);
   6. SMS notification of completeness of stages;
   7. Instant adding and withdrawal of money.

Do you think the service can bring significant income?

Certainly it can, and I think some people already earn much with the Jobs. The number of orders keeps increasing. This is accompanied by unemployment and purposeful destruction of the remnants of the economy. Young people, and not only they, try to find their ways in financial markets. The credo of the modern world is: "I want money, I want a lot of money, but I don't want to work!" But not everyone can make money out of speculations, while, as practice shows, it is quite real to earn developing automated trading systems.

Tell us about the shortcomings of the Jobs service. How can we eliminate them?

Well, it's a difficult question. On the one hand, popular wisdom says that every man to his own taste; on the other hand, there is no limit to perfection, and the best is the enemy of the good. Since the appearance of the Service Desk the "Jobs" has no more shortcomings.

I would like to mention the limited number of payment systems (it would be better to have WMR, because many customers do not have a WebMoney purse and pay in WMR through payment terminals like QIWI - I mean, you could improve something in this direction). In addition, I often have to discuss orders with the customers using third-party means - like Skype or email, which is not really convenient.

Perhaps, this is not a disadvantage, but some novice Customers poorly know how to conclude an agreement, how to pay - though it is described in a separate article, and there are links to it.

Many experienced developers are complaining about dumping. What do you think about it?

Information about the cost of orders is publicly available, therefore there are so many discussions about the adequacy of payments and labor.

Here's a fresh quotation: "But an expert Advisor for 10$... makes me laugh and "happy" for the programmers who are willing to busy themselves with such customers. They don't respect their health, time and nerves. That's why they are head over ears in orders with no private life or normal work time. They tail from morning till night for a penny. Dear programmers, please respect your work and take care of your health!"

Though we should try to be objective. Как говорил Козьма Прутков: "Зри в корень!". My experience shows that the average price for a job in the service is $30. This is consistent with the statistics posted by Renat: 600 applications have been completed in the Jobs service; their total cost is $24000, i.e. the average cost of one job is $24000/600 = $40.

In the Russian segment the price is lower than in the English one. The average monthly wage in Russia is $700 = $30 per day = $3.75 per hour. So how to consider an Expert Advisor for 30 dollars in this context? Is it cheap or expensive? Does it mean respect of one's work or not?

Customers are not ready to pay more for a number of reasons. One of the reasons is that when ordering Expert Advisors clients often simply test their strategies. Also do not forget that programmers use certain drafts. The more practice, the more drafts, the less time is required to perform a task and the lower its final cost is.

Dumping appeared when the Jobs service became popular and the majority of our customers started to place orders in the service. Moreover, the top of developers was added. In order to be featured in the top, some programmers are eager to perform any job at any price.

Moreover, some novice EA coders sincerely believe that any Expert Advisor can be written in 30-40 minutes and hope to have $3000 per month. However, they do not take into account the fact that they also will require additional time to discuss an order, explain fulfilled task, deal with misunderstandings and controversy.

Experience shows that the "dumping disease" is quickly cured. In addition, the price of applications on the stage of publication often de facto is completely different. I am not engaged in dumping. Dumping newcomers quickly get rid of illusions. Besides, a sensible customer understands that the more experienced a developer is, the better the ordered solution will be.

I liked very much what Renat said: "You shouldn't engage in short-term maximization of profits - be honest and clear. This is a goog strategy in the long run".

The most efficient anti-dumping solution is to ignore it. Just open any book in microeconomics and read about "monopsony" (in our case one customer and a few eager developers). There are two ways: a perfect competition in which the job performance cost tends to minimum or to its prime cost, and conspiracy when price tends to maximum. In the Internet, the situation of "conspiracy" is impossible, and, according to the theory, "racket" is required to control the conditions of conspiracy.

How do you manage to perform so many orders? Do you use any drafts from previous jobs?

If I have many orders, I deal with them gradually, order by order. Besides, the jobs in mu "In progress" list do not always mean new orders. Most of them are already completed and currently tested by the customer. As a rule, I do not hurry my customers with testing. I do not use mu own libraries in terms of a set of functions, but I use templates as applied to fulfilled tasks.

I have developed a system for classifying the functionality of a job. I classify each new job based on a number of features, then I mind in my archive the latest similar job and then modify its code.

What do customers order? In what language?

Well, most ordered programs are in MQL4. And most orders are Expert Advisors processing signals of one or several indicators. Then cone grids of orders and different modifications of "Nevalyashka".

What was the most interesting order?

The fact is, I've long been trading on a real account. My trading system is manually, though I've automated some of its functions. I have my own trading style. I can honestly say that my customers' trading systems do not interest me. I haven't seen a single trading system that would match my style of trading. So I'm interested only in the process. My xpert Advisors are maximally adjustable in terms of parameters and are maximally flexible in terms of the code.

Has anyone ordered an Expert Advisor for the Automated Trading Championship?

Yes, I had such an order but I rejected it. I don't want to be in a situation when a customers, in case of failure on the Championship, would blaim my bugs. Any programmer knows that there is no software without bugs. In order to get rid og bugs, a product needs a thorough testing. But the money that customers are willing to pay for a job are enough just for the development and simple testing.

Were there any orders that you couldn't perform and why?

Of course I had such orders. There were different reasons for that: a) The complexity of an order and its price are inadequate, and the customer is not willing to pay extra money; b) The customer demands something above the requirements specification; c) The customer badly understands the real behavior of his trading system; d) Time given to perform the order is not enough; e) Incompatibility with the customer.

My most striking conflict was the customer, for whom I developed an Expert Advisor with adjustable parameters and beyond what the customer had expected. The customer considered my approach as an unacceptable deviation from the requirements specification and initiated Arbitration.

It should be understood that the programmer often has to deal with a future millionaire, who is very nervous about the fact that he cannot become a millionaire. Often there are conflicts with scalpers. Martingale is a complicated notion, and customers often can't understand the real behavior of their systems.

Also, experience shows that the less a customer is willing to pay, the more difficulties there will be with the order. For a man is great in little things - the smaller, the grander.

What was your most difficult and long order? What was its peculiarity?

I am currently working with two such orders. The first one is an indicator for building a wave. The second one is a complex statistical analysis of a price series. The peculiarity and complexity of such orders is that they require specific logical work.

The Jobs service provides Arbitration for solving disputes. Have you ever used it?

Yes, I had to deal with the Arbitration. There were two reasons. The first one was a request to terminate an agreement. Unfortunately, there is no possibility to terminate an agreement by mutual request of the customer and developer. You have to refer to the Arbitration.

The second reason was when the customer was asking to implement functions beyond the requirements specification. I implement such additions if they are simple. But if they are complicated, I offer the customer to conclude a separate agreement for the implementation of such additions. However, customers are not always willing to pay extra money for extra job, which leads to disputes and you have to refer to Arbitration.

For example, I had to work with the customer requiring to modify the code at the EA testing stage, who said about the requirements specification: "There is no clear statement of the required result. I've just given general features of the EA." How to complete such an agreement? Only with the help of a third party.

What can you say about the decisions of the Arbitration?

Decisions of the Jobs' Arbitration are always fast, competent, objective and fair. Though, all solutions but one were in my favor. In once case the task was a "direct translation" of an indicator's code from MQL4 into MQL5, which was inefficient.

You have many regular customers. Why do you think they prefer to work with you?

No one lives long in financial markets.

Thank you for the interview. Good luck.

Translated from Russian by MetaQuotes Software Corp.
Original article:

Andrey Voitenko (avoitenko): "Developers benefit from the ideas that they code? Nonsense!" Andrey Voitenko (avoitenko): "Developers benefit from the ideas that they code? Nonsense!"

A Ukrainian developer Andrey Voitenko (avoitenko) is an active participant of the "Jobs" service at, helping traders from all over the world to implement their ideas. Last year Andrey's Expert Advisor was on the fourth place in the Automated Trading Championship 2010, being slightly behind the bronze winner. This time we are discussing the Jobs service with Andrey.

Creating Custom Criteria of Optimization of Expert Advisors Creating Custom Criteria of Optimization of Expert Advisors

The MetaTrader 5 Client Terminal offers a wide range of opportunities for optimization of Expert Advisor parameters. In addition to the optimization criteria included in the strategy tester, developers are given the opportunity of creating their own criteria. This leads to an almost limitless number of possibilities of testing and optimizing of Expert Advisors. The article describes practical ways of creating such criteria - both complex and simple ones.

Nikolay Ivanov (Techno): "What is important for programs is the accuracy of their algorithms" Nikolay Ivanov (Techno): "What is important for programs is the accuracy of their algorithms"

A programmer from Krasnoyarsk Nikolay Ivanov (Techno) is a leader among the developers in terms of the number of completed orders - he has implemented already more than 200 applications in the Jobs service. In this interview, he is talking about the Jobs service, its specific features and challengers faced by programmers.

Custom Graphical Controls. Part 1: Creating a Simple Control Custom Graphical Controls. Part 1: Creating a Simple Control

This article covers general principles of development of graphical controls. We are going to prepare tools for a quick and convenient work with graphical objects, analyze an example of creation of a simple control for entering text or numeric data as well as the ways of using it.