Ryan L Johnson / Profile
Futures & FX Strategist
at
Silk Road Trading LLC
Beginning on March 6, 2026 I am PROGRAMMING MQL5 INDICATORS, EA's, AND SCRIPTS FOR FREE as announced in my Blog.
I started out in the afterschool of hard knocks as a kid... Hog farm, trailer park, firewood, etc. but I got my hands on an Apple IIe computer early too. I ended up with an Associate of Science degree, a Bachelor of Science degree, a Minor in Sociology, a Juris Doctor degree, and a Certificate in Dispute Resolution later in life and began trading in 1999. My most valuable bits of education helpful to trading were probably Algebra, Geometry, Advanced Math I and II, Statistics, and Computer Math. That's Computer Science for the younger generation, or hey... just Programming for the next younger.
The retail trading industry is comprised of a multitude of central exchanges (NYSE, NASDAQ, CME, etc.), captive off-exchange markets (forex, CFD's, etc.), broker-dealers, hedge funds, investment banks, proprietary trading firms, HFT firms, pension funds, software providers, and data providers which take profits whether retail traders win or lose. The level of conflicting interests of commercial participants versus retail traders varies widely from one market to another. An important factor in developing a profitable trading strategy is choosing the best market(s) to trade.
Another important factor is, frankly, knowing what not to do. Professional traders and proprietary trading firms cap their risk per trade at 1 to 2% of account balance─because that time-tested approach has statistically proven to be the only way to stay profitable in the long-term. I like to refer to that rule as a risk-based law of diminishing returns. The problem for the overwhelming majority of beginning or inexperienced retail traders is the fact that they start with a small amount of trading capital. As a result, trading 1 to 2% of account balance is perceived as "not profitable enough" by those retail traders.
To be clear, that 1 to 2% is not a raw percentage of account balance. More accurately, that 1 to 2% is an unknown variable. We solve for that variable by dividing account balance by the money value of the distance between the entry price of a trade and that trade's stoploss price. The underlying premise is that we first determine where the stop needs to be to hold a trade versus jumping out of it (based on market conditions), and then allow the stoploss money value to determine our position size. We do not allow a raw percentage of account balance to determine an arbitrary stoploss distance─that would be, frankly, backward logic.
Also as a result of having limited capital, such retail traders are attracted to high risk strategies in hopes of receiving high returns. The widespread proliferation of Martingale (Martingarbage) or grid strategies among beginning or inexperienced retail traders serves as a prime example thereof. The more that you exceed the aforementioned risk-based law of diminishing returns, the faster that you will blow your account. The financially responsible way to grow your account is to simply follow the rule and allow your reasonable profits to add to your preexisting profits and your balance to grow naturally (details below).
If you have been dismissing strategies that you deem "not profitable enough" for say, the last 3 years, and you continue to lose money each year, it's time to acknowledge who and what you're up against and the statistical rule that they and it are following. I realize that this is an uncomfortable truth for most beginning or inexperienced traders. It means that you will not get rich quick and you may not even be able to trade certain markets having low leverage. The situation is what it is. Just imagine that if you had been aware of the rule when you started trading, say, 3 years ago, what your account balance would be at this very moment.
The rule also inherently invalidates about 99% of the strategies/EA's that you see online. The people who are selling that stuff are professional web marketers─not professional traders. The overwhelming majority of retail traders are beginning or inexperienced because the trader turnover rate is sky high. In that regard, the web marketers are simply responding to a massive target market of new traders that is glaringly obvious to the entire retail trading industry.
Here's a little known position sizing method to help with scaling up.
Let's assume that you have a simple entry and exit EA with a profit factor of 1.5, for example:
1. Run it through the Tester. Testing on the Real Ticks of your live broker-dealer's data is ideal if your machine's CPU and RAM can handle that. I prefer to run through 4000 round trades or more.
2. Read the Tester Report carefully. Additionally, use my custom ProfitByHourReportService (in my Blog, below) to analyze hourly profit by trade entries─not by trade exits as the native MT5 Tester Report does.
3. Pay particular attention to the months, days, and hours in which the EA is profitable.
4. Code a time filter that blocks entries during the worst times in the EA. See my millisecond-based "Trading Time Filter for Any MT5 Expert Advisor" code snippet (in my Blog, below).
5. Run a fresh backtest with the time filter implemented.
6. Examine the average count of consecutive loss trades─let's call this "NL".
7. Code automatic position sizing based on say, 1% of account balance, into the EA.
8. Code an exception to that 1% position size that triggers when NL+1 occurs (the EA has exceeded its average loss count).
9. Code an overriding minimum position size of say, 0.01, to operate when that exception occurs.
10. Code a resumption of 1% position sizing that triggers when one trade closes in profit.
Of course, additional backtests should be run as necessary following each code edit. The purpose of the process outlined above is to solve the mystery of attempting to predict when the EA's logic will be profitable versus unprofitable.
Arguably, the best way to track live prices, spread, slippage, etc. is to simply continue trading. Of course, it's nonsensical to continue on trading as if losing streaks don't exist─hence, the bottomed-out position size at the start of each losing streak. As soon as a tiny trade returns a profit, the balance-based position size is once again in effect. As a result the account balance grows, the default position size grows, the account balance grows─it's a viscious "profit loop." Get ready to add some zeros to the backend of your EA's net profit.
Having traded so many markets and instruments over the years, I now help beginning or struggling traders for free when they contact me. I have helped many other traders select a market, instrument, chart type, and strategy components without pushing commercial products on anyone... no strings attached. The one thing that we the retail traders can do, that commercial traders will not, is help each other for free. (I must admit... I have given free help to beginning fund managers).
And by the way, other people have identified me as a part-time comedian (above information excluded)... which I also admit.
Happy trading!🙂
I started out in the afterschool of hard knocks as a kid... Hog farm, trailer park, firewood, etc. but I got my hands on an Apple IIe computer early too. I ended up with an Associate of Science degree, a Bachelor of Science degree, a Minor in Sociology, a Juris Doctor degree, and a Certificate in Dispute Resolution later in life and began trading in 1999. My most valuable bits of education helpful to trading were probably Algebra, Geometry, Advanced Math I and II, Statistics, and Computer Math. That's Computer Science for the younger generation, or hey... just Programming for the next younger.
The retail trading industry is comprised of a multitude of central exchanges (NYSE, NASDAQ, CME, etc.), captive off-exchange markets (forex, CFD's, etc.), broker-dealers, hedge funds, investment banks, proprietary trading firms, HFT firms, pension funds, software providers, and data providers which take profits whether retail traders win or lose. The level of conflicting interests of commercial participants versus retail traders varies widely from one market to another. An important factor in developing a profitable trading strategy is choosing the best market(s) to trade.
Another important factor is, frankly, knowing what not to do. Professional traders and proprietary trading firms cap their risk per trade at 1 to 2% of account balance─because that time-tested approach has statistically proven to be the only way to stay profitable in the long-term. I like to refer to that rule as a risk-based law of diminishing returns. The problem for the overwhelming majority of beginning or inexperienced retail traders is the fact that they start with a small amount of trading capital. As a result, trading 1 to 2% of account balance is perceived as "not profitable enough" by those retail traders.
To be clear, that 1 to 2% is not a raw percentage of account balance. More accurately, that 1 to 2% is an unknown variable. We solve for that variable by dividing account balance by the money value of the distance between the entry price of a trade and that trade's stoploss price. The underlying premise is that we first determine where the stop needs to be to hold a trade versus jumping out of it (based on market conditions), and then allow the stoploss money value to determine our position size. We do not allow a raw percentage of account balance to determine an arbitrary stoploss distance─that would be, frankly, backward logic.
Also as a result of having limited capital, such retail traders are attracted to high risk strategies in hopes of receiving high returns. The widespread proliferation of Martingale (Martingarbage) or grid strategies among beginning or inexperienced retail traders serves as a prime example thereof. The more that you exceed the aforementioned risk-based law of diminishing returns, the faster that you will blow your account. The financially responsible way to grow your account is to simply follow the rule and allow your reasonable profits to add to your preexisting profits and your balance to grow naturally (details below).
If you have been dismissing strategies that you deem "not profitable enough" for say, the last 3 years, and you continue to lose money each year, it's time to acknowledge who and what you're up against and the statistical rule that they and it are following. I realize that this is an uncomfortable truth for most beginning or inexperienced traders. It means that you will not get rich quick and you may not even be able to trade certain markets having low leverage. The situation is what it is. Just imagine that if you had been aware of the rule when you started trading, say, 3 years ago, what your account balance would be at this very moment.
The rule also inherently invalidates about 99% of the strategies/EA's that you see online. The people who are selling that stuff are professional web marketers─not professional traders. The overwhelming majority of retail traders are beginning or inexperienced because the trader turnover rate is sky high. In that regard, the web marketers are simply responding to a massive target market of new traders that is glaringly obvious to the entire retail trading industry.
Here's a little known position sizing method to help with scaling up.
Let's assume that you have a simple entry and exit EA with a profit factor of 1.5, for example:
1. Run it through the Tester. Testing on the Real Ticks of your live broker-dealer's data is ideal if your machine's CPU and RAM can handle that. I prefer to run through 4000 round trades or more.
2. Read the Tester Report carefully. Additionally, use my custom ProfitByHourReportService (in my Blog, below) to analyze hourly profit by trade entries─not by trade exits as the native MT5 Tester Report does.
3. Pay particular attention to the months, days, and hours in which the EA is profitable.
4. Code a time filter that blocks entries during the worst times in the EA. See my millisecond-based "Trading Time Filter for Any MT5 Expert Advisor" code snippet (in my Blog, below).
5. Run a fresh backtest with the time filter implemented.
6. Examine the average count of consecutive loss trades─let's call this "NL".
7. Code automatic position sizing based on say, 1% of account balance, into the EA.
8. Code an exception to that 1% position size that triggers when NL+1 occurs (the EA has exceeded its average loss count).
9. Code an overriding minimum position size of say, 0.01, to operate when that exception occurs.
10. Code a resumption of 1% position sizing that triggers when one trade closes in profit.
Of course, additional backtests should be run as necessary following each code edit. The purpose of the process outlined above is to solve the mystery of attempting to predict when the EA's logic will be profitable versus unprofitable.
Arguably, the best way to track live prices, spread, slippage, etc. is to simply continue trading. Of course, it's nonsensical to continue on trading as if losing streaks don't exist─hence, the bottomed-out position size at the start of each losing streak. As soon as a tiny trade returns a profit, the balance-based position size is once again in effect. As a result the account balance grows, the default position size grows, the account balance grows─it's a viscious "profit loop." Get ready to add some zeros to the backend of your EA's net profit.
Having traded so many markets and instruments over the years, I now help beginning or struggling traders for free when they contact me. I have helped many other traders select a market, instrument, chart type, and strategy components without pushing commercial products on anyone... no strings attached. The one thing that we the retail traders can do, that commercial traders will not, is help each other for free. (I must admit... I have given free help to beginning fund managers).
And by the way, other people have identified me as a part-time comedian (above information excluded)... which I also admit.
Happy trading!🙂
Ryan L Johnson
Added topic AI Assistant MCP in MT5 Beta Build 6194 has no file read tools
Provider: MQL5 Lite Response: Let me start with the mandatory pre-flight. First, I need to call get_workspace_info on MetaEditor (the metaeditor5 server). Let me look at the available tools. Actually, the metaeditor5 extension instructions say
Ryan L Johnson
From Maya Krampf at wholesomeyum.com (lobster), and Lisa Bryan at downshiftology.com (sauce)
(with minor edits by me to avoid problems on your first try. Image is my dinner table)
Broiled Lobster Tails
Ingredients:
4 large lobster tails (about 10 oz each)
1/4 cup salted butter (1/2 stick, melted)
2 cloves garlic (crushed)
2 tsp lemon juice
1/2 tsp paprika
1 pinch cayenne pepper
Instructions:
If frozen, thaw lobster tails in refer overnight or submerged in cold water outside refer for 30 minutes.
Preheat oven to broil. Rinse the thawed lobster tail shells. Set oven rack height so that prepped tails (see next step) on a lipped baking sheet will be 4 to 5 inches away from broiler heat element.
Butterfly the top of the lobster tail shells with kitchen shears (sanitized sheet metal snips will work, but regular scissors won't). Cut down the center of the shell lengthwise, starting from the end opposite the tail fins. Continue cutting the shell until you reach the tail but don't cut the tail fins. Spread the split top shell away from the tail meat with your fingers. I find that an upside down soup spoon works well to spread the shell where it's tight by the tail fins... and to break the bottom shell away from the meat too. Put your fingers inside the split top shell and gently lift the meat up through the split top shell and away from the bottom shell, but the meat must stay attached by the tail fins. Close the split shell below the meat, and place the butterflied tail on the lipped baking sheet. Repeat for the other 3 lobster tails.
In a small bowl, whisk together melted butter, garlic, lemon juice, paprika, and cayenne pepper. Brush the mixture onto the exposed lobster tail meat.
Broil the lobster tails until the meat is opaque and lightly browned, about 1 minute per ounce of the heaviest individual tail. For example, let's say you're only broiling 2 lobster tails... a 10 oz tail, and a 12 ounce tail. Broil time would be about 12 minutes for all tails... regardless of how many tails you're broiling.
Hollandaise Sauce
Ingredients:
3 egg yolks
1 Tbsp lemon juice
1 Tbsp dijon mustard
1/4 tsp salt
1 pinch cayenne pepper
1/2 cup butter
1 tsp parsley flakes
Instructions:
Melt butter in a covered microwave safe bowl in microwave oven.
Combine the egg yolks, lemon juice, dijon mustard, salt, cayenne pepper, and butter in small saucepan and whisk vigorously for about 5 minutes.
While continuing to whisk, slowly drizzle melted butter into the saucepan.
While again continuing to whisk, heat the saucepan on medium-low heat until the mixture is warm. Be careful not to boil, and not to stop whisking.
Pour entire saucepan of sauce over lobster meat. Hollandaise sauce leftovers don't keep well.
Sprinkle parsley flakes atop the sauce on the lobster meat and on any pooled sauce on the plate.
Eat it!
(with minor edits by me to avoid problems on your first try. Image is my dinner table)
Broiled Lobster Tails
Ingredients:
4 large lobster tails (about 10 oz each)
1/4 cup salted butter (1/2 stick, melted)
2 cloves garlic (crushed)
2 tsp lemon juice
1/2 tsp paprika
1 pinch cayenne pepper
Instructions:
If frozen, thaw lobster tails in refer overnight or submerged in cold water outside refer for 30 minutes.
Preheat oven to broil. Rinse the thawed lobster tail shells. Set oven rack height so that prepped tails (see next step) on a lipped baking sheet will be 4 to 5 inches away from broiler heat element.
Butterfly the top of the lobster tail shells with kitchen shears (sanitized sheet metal snips will work, but regular scissors won't). Cut down the center of the shell lengthwise, starting from the end opposite the tail fins. Continue cutting the shell until you reach the tail but don't cut the tail fins. Spread the split top shell away from the tail meat with your fingers. I find that an upside down soup spoon works well to spread the shell where it's tight by the tail fins... and to break the bottom shell away from the meat too. Put your fingers inside the split top shell and gently lift the meat up through the split top shell and away from the bottom shell, but the meat must stay attached by the tail fins. Close the split shell below the meat, and place the butterflied tail on the lipped baking sheet. Repeat for the other 3 lobster tails.
In a small bowl, whisk together melted butter, garlic, lemon juice, paprika, and cayenne pepper. Brush the mixture onto the exposed lobster tail meat.
Broil the lobster tails until the meat is opaque and lightly browned, about 1 minute per ounce of the heaviest individual tail. For example, let's say you're only broiling 2 lobster tails... a 10 oz tail, and a 12 ounce tail. Broil time would be about 12 minutes for all tails... regardless of how many tails you're broiling.
Hollandaise Sauce
Ingredients:
3 egg yolks
1 Tbsp lemon juice
1 Tbsp dijon mustard
1/4 tsp salt
1 pinch cayenne pepper
1/2 cup butter
1 tsp parsley flakes
Instructions:
Melt butter in a covered microwave safe bowl in microwave oven.
Combine the egg yolks, lemon juice, dijon mustard, salt, cayenne pepper, and butter in small saucepan and whisk vigorously for about 5 minutes.
While continuing to whisk, slowly drizzle melted butter into the saucepan.
While again continuing to whisk, heat the saucepan on medium-low heat until the mixture is warm. Be careful not to boil, and not to stop whisking.
Pour entire saucepan of sauce over lobster meat. Hollandaise sauce leftovers don't keep well.
Sprinkle parsley flakes atop the sauce on the lobster meat and on any pooled sauce on the plate.
Eat it!
Ryan L Johnson
Here is a trendline generating indicator that has an input, Angle deg , that allows up to 89.999999999999 degrees to be set for an upward angle, and down to -89.999999999999 degrees to be set for a downward angle...
Share on social networks · 1
51
Ryan L Johnson
Here is a trendline generating script that has an input, Angle deg , that allows up to 89.999999999999 degrees to be set for an upward angle, and down to -89.999999999999 degrees to be set for a downward angle...
Share on social networks · 1
56
Ryan L Johnson
As the MT5 Tester does not natively support reporting hourly profit and loss by deal-entry-in (only deal-entry-out), I created this MQL5 Service to to generate custom backtest reports limited to, and based on, deal-entry-in times...
Share on social networks · 5
132
4
Ryan L Johnson
Added poll What is your favorite scalping instrument?
-
48% (21)
-
5% (2)
-
2% (1)
-
2% (1)
-
5% (2)
-
2% (1)
-
5% (2)
-
2% (1)
-
16% (7)
-
2% (1)
-
11% (5)
Total voters: 32
Share on social networks · 1
17
Ryan L Johnson
Published code Consecutive Bars (with history)
An oscillator that shows 4 line studies: 1 for consecutive up bars, 1 for consecutive down bars, 1 for the average consecutive up bars, and 1 for the average consecutive down bars.
Share on social networks · 1
2065
296
Ryan L Johnson
I don't know about you but If I have to think too much about time zone conversion without a visual aid, my head starts to spin. So... I modified Nikolay Kositsin 's real-time clock indicator to display a custom "Broker to Local Offset" time...
Share on social networks · 1
117
Ryan L Johnson
I previously posted the differences between forex/CFD order execution versus real futures order execution in several Forum threads, where there was quite a bit of confusion on the subject...
Share on social networks · 2
102
Ryan L Johnson
For anyone looking for a free and reliable source of live global economic news, I generally have Bloomberg Live running on YouTube "in the background" during the trading week. As the video is included in some cable TV packages, they also refer to it as "Bloomberg TV...
Share on social networks · 3
173
2
Ryan L Johnson
Added poll Is there a positive FX market/mql5 Forum correlation?
-
20% (2)
-
0% (0)
-
30% (3)
-
30% (3)
-
20% (2)
Total voters: 10
Share on social networks · 1
5
Ryan L Johnson
I recently created a new scalping EA. When I say "new," I really mean new because I've strictly been an algorithmic swing trader up until now. Anyway, I found myself in need of a higher resolution time filter because scalping EA's trade more frequently than swing trading EA's. So...
Share on social networks · 1
405
Ryan L Johnson
If you are one of many traders across the world who need to shift/offset your broker-dealer's server time zone to a better time zone, Aleksandr Slavskii has kindly programmed a Period Converter service for doing so in MT5...
Share on social networks · 3
414
1
Ryan L Johnson
Added topic MT5 Builds 5833 and 5836 - unable to sort chart template names
I seem to recall having been able to right click on a chart, select Templates, and then click-hold-and-drag a template name up or down for the purpose of manually sorting the names. As referenced in the subject of this thread, I'm no longer able to
Ryan L Johnson
Added topic step-by-step Mobile MT5 instructions needed
In my efforts to help another trader, I learned that she trades in Mobile MT5 only. This presents a challenge because I only use Mobile MT5 to receive notifications from Desktop MT5 without a trading account connected. I provided my modified "XARD"
Share on social networks · 1
3
Ryan L Johnson
Added topic Renko bricks ─ your opinion?
What is your opinion of Renko bricks, i.e., Renko charts? Do you like traditional Renko, Renko with wicks, offset Renko, rail-to-rail Renko, etc.? Or do you dislike Renko bricks because they print too slowly, obscure actual prices, don't work with
Share on social networks · 2
25
Ryan L Johnson
I am NOW PROGRAMMING MQL5 INDICATORS, EA's, and SCRIPTS FOR FREE! Terms You pay nothing. You receive the source code. You retain the sole copyright. You test the code. I may suggest additional logic. I revise the code as you request. We work until it's done. All work and code is kept confidential...
Share on social networks · 6
486
4
Ryan L Johnson
Added poll What are your favorite position sizing methods?
-
15% (4)
-
12% (3)
-
23% (6)
-
8% (2)
-
12% (3)
-
8% (2)
-
4% (1)
-
8% (2)
-
12% (3)
Total voters: 12
: