Reality check for programmers
This post might make me the most disliked FF member, especially by freeloaders (people who want their EAs/indicators coded without contributing anything of real value to the forum themselves). But I want to potentially save programmers a lot of wasted time, coding EAs/indicators that have virtually zero chance of being long-term profitable.
I appreciate that many of us write code purely for the enjoyment of creating something useful, or the satisfaction of solving logic problems. Some are philanthropists who like helping others, or gaining plaudits or forum subscribers. As a fellow developer I can easily relate to all of these reasons. And the last thing I want to do is to tell anybody how they should or shouldn't spend their time. But, if you're coding free EAs/indicators for FF members in the hope that the exercise will get you one significant step closer to being a profitable trader yourself, then all things considered, your expectations are, in all likelihood, sadly misplaced.
I used to believe (albeit somewhat subconsciously) that, if I wrote enough EAs for traders who claimed that they were highly profitable, I'd eventually stumble upon the 'holy grail'. (Something like: if I buy enough lottery tickets, I must eventually win). Now I realize just how naive I was: forex simply doesn't work that way; it's not a question of quantity, it's a question of demonstrable quality. Virtually all of the requests made by FF members in the "I code for free" threads (e.g. here) are unproven ideas; by "proven" I mean a strategy that, as a bare minimum, been properly tested on a real-money account over several months' worth of changing markets (and by "profitable" I mean a strategy that offers some guarantee of a consistent and safe income indefinitely into the future). Due to br0ker costs, FX is by default a negative expectancy game; hence all strategies should be deemed unprofitable until proven otherwise. Sales pitch like "I have this great trading system......." doesn't represent proof.
I understand the rationale that unless the EA is coded first, an idea/strategy can't be objectively tested. But alas, a "let's code and run this idea/strategy to find out if it's profitable" approach is almost certain to be futile (reasons here), creating a catch-22 situation. I've also attempted to explain some of the risks from a programmer's perspective here and here.
An edge has little to do with entries or exits, and nothing to do with MM or psychology (reasons explained in the essay "Edges and expectancy theory" here). In summary, edges are grounded in biases or imbalances in price behavior, most of which can't be determined by 'conventional' TA. Indicators can't measure factors like prevailing sentiment, fundamental value, supply/demand volumes, accumulation/distribution patterns, or manipulation/subterfuge used by 'smart money' or unscrupulous br0kers (there are a couple of thought-provoking YouTube videos here and here). The bottom line is this: unless you have an edge that's somehow grounded in HOW and WHY price moves, you're merely guessing, and therefore gambling; the long-term expectancy of your strategy is effectively zero minus br0ker costs, which means that you must eventually lose. And if the underlying concepts are impotent, then adding rules to filter out unprofitable entries, tinkering with SL/TP points, or trying different MMs, is almost certainly not going to change that.
Sorry if all of this seems harshly negative, but it represents the barrier to systematic, long-term success for the retail trader. And on top of that, for an EA to be profitable, the strategy must be 100% mechanical, for it to be programmable. Don't get me wrong, I'm not saying that profitable EAs don't exist, just that you're extremely unlikely to find the basis for one in unproven retail trader requests on forums.
_________________________________
Tips for coding requests
On a positive note, here are some tips for FF members, to help you get your requests coded:
1. Always post .mq4 files; .ex4 files are unreadable.
2. DON'T post decompiled .mq4 files. Doing so infers that you support software piracy. Programmers don't want to help people who are actively encouraging others to cheat them. Anybody who appears to be condoning piracy immediately goes on my ignore list, so that I can't read their future posts and accidentally help them.
3. Post a clear and detailed explanation of exactly what you require. Diagrams can be a big help. If a programmer doesn't understand your request, or there is ambiguous or missing information, he'll likely ignore you and move on to the next post. Also, I tend to think along the lines of "if I'm going to waste 1-2 hours of my life coding and testing something that's completely irrelevant to me personally, then at the very least I expect you to go to a similar effort explaining what you want".
4. Be patient and humble. Bumping your request every few hours with a "Why isn't anybody helping ME?" message can appear irritatingly selfish. Chances are that your request HAS been seen, but you've failed on one of the previous points. Or perhaps your request is too difficult or time consuming, in which case you might consider having the work done commercially, if it's valuable enough to you. Coding and testing requires time and effort (and significant expertise).
5. Don't spam the same request across multiple threads. When I see this being done, I think "well some other programmer will surely see his request, hence there's no point in wasting my time doing the same work". And again, it creates the impression that you selfishly believe that your request is more important than anybody else's. The same applies to the use of large or colored fonts.
6. Don't risk annoying the programmer by insisting that your request is simple, or otherwise telling him how to go about his job. Explained well by Pips_Cruiser here.
7. Feel welcome to promote your (indicator or EA) request by explaining WHY it's useful to the FF community, or HOW it can lead to more profitable trading. Saying "I have a great idea" proves nothing. Posting a plausible explanation is better. Providing a performance record showing proof of profit is better still. Post something eye-catching that makes your request appear more valuable than everybody else's. Remember, you're one of 450,000 members trying to gain the special attention of maybe 20 programmers. You want to come across as a willing contributor, rather than a demanding freeloader.
8. At the very least, show SINCERE appreciation. Posting a flattering message like "I think you're the best programmer in the world and, by the way, can you do this for me?" merely reeks of ulterior motive. If a programmer does some helpful work for you, then go to the trouble of posting a sincere message of thanks on his 'Shouts' page afterward, or if you don't have the time to do that, then at least subscribe to him, or 'Like' his post(s), either of which takes only a second or two. Or even better, share links to some helpful trading information as a show of gratitude. All of this can improve your chances of getting priority help in the future.
9. Above all, if you want help, treat programmers with appreciation and respect. Remember, programming skills are more valuable than trading skills. Why? Because a programmer can use his expertise elsewhere to earn an living AT ZERO RISK. If you disagree, then post your myfxbook showing a comparable income (e.g. $50,000 p.a. upward) over several years.
This post might make me the most disliked FF member, especially by freeloaders (people who want their EAs/indicators coded without contributing anything of real value to the forum themselves). But I want to potentially save programmers a lot of wasted time, coding EAs/indicators that have virtually zero chance of being long-term profitable.
I appreciate that many of us write code purely for the enjoyment of creating something useful, or the satisfaction of solving logic problems. Some are philanthropists who like helping others, or gaining plaudits or forum subscribers. As a fellow developer I can easily relate to all of these reasons. And the last thing I want to do is to tell anybody how they should or shouldn't spend their time. But, if you're coding free EAs/indicators for FF members in the hope that the exercise will get you one significant step closer to being a profitable trader yourself, then all things considered, your expectations are, in all likelihood, sadly misplaced.
I used to believe (albeit somewhat subconsciously) that, if I wrote enough EAs for traders who claimed that they were highly profitable, I'd eventually stumble upon the 'holy grail'. (Something like: if I buy enough lottery tickets, I must eventually win). Now I realize just how naive I was: forex simply doesn't work that way; it's not a question of quantity, it's a question of demonstrable quality. Virtually all of the requests made by FF members in the "I code for free" threads (e.g. here) are unproven ideas; by "proven" I mean a strategy that, as a bare minimum, been properly tested on a real-money account over several months' worth of changing markets (and by "profitable" I mean a strategy that offers some guarantee of a consistent and safe income indefinitely into the future). Due to br0ker costs, FX is by default a negative expectancy game; hence all strategies should be deemed unprofitable until proven otherwise. Sales pitch like "I have this great trading system......." doesn't represent proof.
I understand the rationale that unless the EA is coded first, an idea/strategy can't be objectively tested. But alas, a "let's code and run this idea/strategy to find out if it's profitable" approach is almost certain to be futile (reasons here), creating a catch-22 situation. I've also attempted to explain some of the risks from a programmer's perspective here and here.
An edge has little to do with entries or exits, and nothing to do with MM or psychology (reasons explained in the essay "Edges and expectancy theory" here). In summary, edges are grounded in biases or imbalances in price behavior, most of which can't be determined by 'conventional' TA. Indicators can't measure factors like prevailing sentiment, fundamental value, supply/demand volumes, accumulation/distribution patterns, or manipulation/subterfuge used by 'smart money' or unscrupulous br0kers (there are a couple of thought-provoking YouTube videos here and here). The bottom line is this: unless you have an edge that's somehow grounded in HOW and WHY price moves, you're merely guessing, and therefore gambling; the long-term expectancy of your strategy is effectively zero minus br0ker costs, which means that you must eventually lose. And if the underlying concepts are impotent, then adding rules to filter out unprofitable entries, tinkering with SL/TP points, or trying different MMs, is almost certainly not going to change that.
Sorry if all of this seems harshly negative, but it represents the barrier to systematic, long-term success for the retail trader. And on top of that, for an EA to be profitable, the strategy must be 100% mechanical, for it to be programmable. Don't get me wrong, I'm not saying that profitable EAs don't exist, just that you're extremely unlikely to find the basis for one in unproven retail trader requests on forums.
_________________________________
Tips for coding requests
On a positive note, here are some tips for FF members, to help you get your requests coded:
1. Always post .mq4 files; .ex4 files are unreadable.
2. DON'T post decompiled .mq4 files. Doing so infers that you support software piracy. Programmers don't want to help people who are actively encouraging others to cheat them. Anybody who appears to be condoning piracy immediately goes on my ignore list, so that I can't read their future posts and accidentally help them.
3. Post a clear and detailed explanation of exactly what you require. Diagrams can be a big help. If a programmer doesn't understand your request, or there is ambiguous or missing information, he'll likely ignore you and move on to the next post. Also, I tend to think along the lines of "if I'm going to waste 1-2 hours of my life coding and testing something that's completely irrelevant to me personally, then at the very least I expect you to go to a similar effort explaining what you want".
4. Be patient and humble. Bumping your request every few hours with a "Why isn't anybody helping ME?" message can appear irritatingly selfish. Chances are that your request HAS been seen, but you've failed on one of the previous points. Or perhaps your request is too difficult or time consuming, in which case you might consider having the work done commercially, if it's valuable enough to you. Coding and testing requires time and effort (and significant expertise).
5. Don't spam the same request across multiple threads. When I see this being done, I think "well some other programmer will surely see his request, hence there's no point in wasting my time doing the same work". And again, it creates the impression that you selfishly believe that your request is more important than anybody else's. The same applies to the use of large or colored fonts.
6. Don't risk annoying the programmer by insisting that your request is simple, or otherwise telling him how to go about his job. Explained well by Pips_Cruiser here.
7. Feel welcome to promote your (indicator or EA) request by explaining WHY it's useful to the FF community, or HOW it can lead to more profitable trading. Saying "I have a great idea" proves nothing. Posting a plausible explanation is better. Providing a performance record showing proof of profit is better still. Post something eye-catching that makes your request appear more valuable than everybody else's. Remember, you're one of 450,000 members trying to gain the special attention of maybe 20 programmers. You want to come across as a willing contributor, rather than a demanding freeloader.
8. At the very least, show SINCERE appreciation. Posting a flattering message like "I think you're the best programmer in the world and, by the way, can you do this for me?" merely reeks of ulterior motive. If a programmer does some helpful work for you, then go to the trouble of posting a sincere message of thanks on his 'Shouts' page afterward, or if you don't have the time to do that, then at least subscribe to him, or 'Like' his post(s), either of which takes only a second or two. Or even better, share links to some helpful trading information as a show of gratitude. All of this can improve your chances of getting priority help in the future.
9. Above all, if you want help, treat programmers with appreciation and respect. Remember, programming skills are more valuable than trading skills. Why? Because a programmer can use his expertise elsewhere to earn an living AT ZERO RISK. If you disagree, then post your myfxbook showing a comparable income (e.g. $50,000 p.a. upward) over several years.