Introduction
This is a strategy file for Chart Logic, trading Casper SMC’s Silver Bullet strategy. In fact the Silver Bullet strategy is from ICT, Michael Huddleston, and many many traders who put out educational content provide variations on ICT concepts. Silver Bullet is an approach to trading very short term trades during specific market sessions, with entry signals based on structures like Fair Value Gaps (FVGs).
If you just want to download the strategy file, load it in Chart Logic and run it on your chart, it's available down at the bottom of this post. You don't need to walk through the description of the logic, unless you're interested in knowing how things work.
Casper’s approach is described here:
He gives a really straightforward, easy to understand description of how to trade this way. Having a tool like Chart Logic, I wanted to see how easy it would be to implement this and automate the trading approach. I wrote this up in a couple of hours, and then tested and refined it over several days / sessions to get it working right, and the result of this effort is shared here.
I’ll provide a brief summary of the trading approach for the purpose of demonstrating the Chart Logic file, but if you’re interested in really understanding and trading this strategy then you should watch Casper SMC’s video and/or ICT’s videos as well.
Strategy
This is for the M5 NASDAQ, though it can certainly be used with other indices and forex pairs. As always you should do your own testing and analysis.
First, recognize that there are three different sessions during the day: Asia, London and NY. For each of these sessions we track the high/low price that they reach. Starting from midnight in New York we begin tracking if price breaches any of the session high/low prices. So, if we form a high/low range in Asia, and then later during London or NY price goes above the Asia high, that is a breach of the Asian high. We might anticipate a pullback from the Asian high as a result.

Here we’ve breached Asia High, Asia Low, London High, NY AM High and NY AM Low. We did not breach London Low; after the end of the London session, price never went below the London Low price.
There are two trading windows, coinciding with the NY AM Kill Zone and the NY PM Kill Zone. During these times we are looking for the formation of a Fair Value Gap, pointing to a reversal from a sweep of a session high/low price. For example, if we’ve breached the NY AM High price and then price starts moving down and forms a bearish FVG, that is our entry condition. When price comes back up and retests the FVG (reaches the low price of the bearish gap), we enter short. If, on the other hand we’ve breached a session low, like perhaps the London low, and then price starts moving up and forms a bullish FVG, that is our entry condition. When price comes back down and retests the FVG (reaches the high price of the bullish gap), we enter long. SL is the high/low of the first candle of the FVG, and we’re setting a 2R target.
What’s a Fair Value Gap, you say? Structurally it is a three candle pattern, where the wicks of the first and third candle do not completely overlap the body of the middle candle, which is usually a larger candle. In this image the green rectangle is a bullish FVG, and the little red rectangle lower down is a small bearish FVG. Usually when these gaps form we expect that price will return to the gap; and if price completely pushes through the gap that can be an indication of stronger movement in the other direction. (Though of course things like FVGs shouldn’t be considered in isolation, and there’s much to be said beyond this simple description. But that’s beyond the scope of this post.)

So that’s it. Very straightforward and easy to understand! Seems like a perfect candidate for a Chart Logic strategy.
Implementing in Chart Logic
Here is an overview of the different parts of the CL strategy.

Let’s walk through these different sets:
Options
I like to start off with a single Logic Set just for all of the configuration options, so if you want to adjust some behavior of the strategy you don’t have to dig around and try to remember every place where it may be used. The options here are pretty straightforward: how much risk to use, the target risk-reward ratio to use, and how many trades to allow per trading window. Then we have two additional sets which organize the options for times and colors. The final one, “Variables,” is just some housekeeping, but you wouldn’t need to change anything there.

For the time inputs, you set the start and end time of each of the relevant periods on the chart. Underneath the “Time Calculations” set we convert these from strings to datetime objects for the current day, setting global variables. Adjust these times so that your chart time matches the intended times; check Casper’s video for the details of when these should be set. These are valid on my instance of MT4 for my broker, but I have no idea if they are correct for your environment.

There are also different colors defined for the relevant periods, making it simple to adjust.

Below the Options there really is nothing you need to adjust, except maybe enable/disable the trading logic sets at the bottom of the strategy file if you want to prevent it from actually trading. I’ll provide a brief description of everything for the curious.
Sessions
The three Sessions logic sets are tracking the high/low of the session and drawing the session lines. For instance, for Asia:

During the Asian session times we check to see if a price is a new high or low, and if so we track it. We also put some objects on the chart to visualize the session times and ranges.
Session Breaches
The Breaches logic set tracks if, starting from midnight NY time (which is the same as the London start time), price breaches the high/low price of any completed session.

After midnight in NY we start to look for breaches. For each session we look for a breach of the high and low after the session end time. If the current candle high is higher than the session high, that’s a breach and we track the time that it occurred; similarly for breaches of low prices.
What is that “? Asia End Time” condition doing in the “Asia” condition? It ensures that the “Asia” condition will return true, after the end of the Asian session, even if there is no breach on this candle. Why do we want to do this? Because we need to continue to evaluate the other sessions, so we need to”Asia” to evaluate as true. If Asia is false here then we can stop; in that case we know the other sessions haven’t closed yet either and there’s no need to look at them. But if Asia has closed then we always need to return true, so we simply test for the Asia End Time.
Fair Value Gaps
Next we start looking for FVGs during the trading windows. There are 2 logic sets here, one for the BULL gap and one for the BEAR gap. They’re in separate logic sets because they have different object actions for drawing chart objects, and we need to ensure they draw correctly for each one. If they were in the same logic set and one failed, it would be harder to also allow it to evaluate the other one and draw its object if needed. It’s just simpler to put them in separate sets.

That “Trading Windows IF/ELSE” condition is a tricky bit of hierarchical logic to reproduce an IF/ELSE kind of loop. The main purpose here is to detect if we’re in either of the trading windows, but there’s some additional steps in there, where if we’re NOT in one of the sessions then we clear the variables used to draw the gaps, and the whole thing returns false. We have to do this here because the variables for drawing gaps are local variables, and I didn’t want to make them global variables just so I could test for them in a different logic set. There are already way too many variables in this strategy, so many that sometimes I can’t see them all on the chart at once (hmm, that is a limitation in the UI that I am going to have to deal with; I never saw large variable sets during the initial development).
For the “Session Lows”, we test for any session that breached the lows. If it did then we have a variable telling us the time of the breach. If this variable is not set then there was no breach for that session. We do a little prep work in the “Bullish FVG” condition. We track the FVG entry price and SL price. We calculate the TP for the trade based on the TargetR input from earlier, calculated based on the SL distance from this gap. And we track the time, which we reference later. That “BULL FVG End Time” condition is setting a time 3 bars in the future, so if we’re drawing a gap it will be more prominently visible on the chart. If we have no gap then it doesn’t hurt anything to have it here. Initially this was part of the “Bullish FVG” logic, but I want this updated even if we don’t have a new gap, so the old gap’s rectangle continues to extend to the right as we get new candles. Also (not shown) we set a chart object to display the gap as a rectangle.
Entry Conditions
We have two entry conditions, for long and short trades. Let’s look at the long entry condition:

First, we check if ASK is below the BULL Entry Price. Recall that this price is set to the high of the bullish FVG, and if no gap has been found (or all gaps were cleared after the previous trading window), then this will fail. We only get past this point if we have an entry price set and we’ve reached that price. Next we check to see which trading window we’re in, and if we can still trade in this window based on the number of trades taken so far. It would be pretty unusual to have multiple entries in a trading window with this strategy, but it’s possible. You would have to enter a trade, reach TP for the trade to close, and then have a new gap form before the window closes. With a one-hour window on an M5 chart, you only have 20 bars for this to happen, so it’s pretty unlikely. Finally, once we are going to enter a trade we remove the “BULL Entry Price” variable (“=!” means “unassign”, or remove from the variable space). This way we wouldn’t be able to enter again unless another gap formed and we retested it.
The trade action is pretty straightforward; open a BUY with the configured amount of risk and use the SL and TP that we calculated when we detected the gap. Then we also send an alert, though can you can see this is disabled by default. If you’d like to be alerted for trades you can simply click the “n” to the left of the alert action to enable it, and then edit to customize as you like.
Clear Gaps
Finally, there is a bit of logic here to clean up the FVG data when a trading window has finished. This is a secondary check to just be certain that the triggering condition for trades, the “BULL/BEAR Entry Price” variables, are not set outside of the trading windows. If either variable is set, we’re no longer in the first or second window, then we clear the variables.

That's it. Load it up in Chart Logic and activate it, and it will trade this strategy automatically for you. Be sure to check your Risk% option, adjust the TP distance to use etc.
Files