Hi experts,
I’m very new to this ProRealTime (via IG).
I’ve done up this simple M5 Nikkei 225 (CCI, STOCH and SMA cross overs) strategy only on BUYS as these few months it is very bullish.
It’s beyond my noob skills to incorporate a seamless Sell function into it without much trade-off *help help*.
The bulls and bears run across the major indices are actually symmetrical (Nikkei vs DOW vs NASDAQ vs S&P500 and so on).
Example Wall Street bullish run is 220 odd points, but Nikkei 225 can go up to like 500 points and beyond, potentially flipping your profits which I find making the spread of 7 points (whole day) kind of negligible.
Have attached the script below, looking forward to your advice and any potential ‘upgrade’ of the strategy or SELL strategy if any?
Welcome to the community! Nice work putting this together as a beginner, the structure is already pretty solid! 🙂
You’re right that the Nikkei tends to amplify moves compared to Wall Street indices on a point basis, but be careful about assuming the logic is cleanly mirrored. Downside moves on the Nikkei (and most indices really) tend to be faster and sharper than upside moves. This means your CCI threshold of 155 for longs may need to be adjusted for shorts, and the ATR multiplier that works well on the upside might give you too much room on the downside before the stop kicks in.
Here is the full upgraded strategy, with short side too (I have just inverse the logic):
DEFPARAM CumulateOrders = False
// 1. Indicators
sma20 = average[20](close)
sma50 = average[50](close)
sma89 = average[89](close)
myCCI = CCI[50](close)
myStoch = Stochastic[20,3](close)
myATR = AverageTrueRange[14](close)
atrMultiplier = 3.2
// 2. Filters
TrendFilterLong = (sma20 > sma50) AND (sma50 > sma89)
TrendFilterShort = (sma20 < sma50) AND (sma50 < sma89)
MomentumFilterLong = (myCCI > 155)
MomentumFilterShort = (myCCI < -155)
StochFilterLong = (myStoch <= 80)
StochFilterShort = (myStoch >= 20)
// 3. LONG Entry
IF NOT LongOnMarket AND TrendFilterLong AND MomentumFilterLong AND StochFilterLong THEN
BUY 2 CONTRACTS AT MARKET
highestPrice = 0
ENDIF
// 4. LONG Chandelier Exit
IF LongOnMarket THEN
IF close > highestPrice THEN
highestPrice = close
ENDIF
chandelierStop = highestPrice - (myATR * atrMultiplier)
SELL AT chandelierStop STOP
ENDIF
// 5. LONG Breakeven
IF LongOnMarket THEN
entryPrice = PositionPrice
IF close >= (entryPrice + 100) THEN
SELL AT entryPrice STOP
ENDIF
ENDIF
SET STOP LOSS 200
// 6. SHORT Entry
IF NOT ShortOnMarket AND TrendFilterShort AND MomentumFilterShort AND StochFilterShort THEN
SELLSHORT 2 CONTRACTS AT MARKET
lowestPrice = 9999999
ENDIF
// 7. SHORT Chandelier Exit
IF ShortOnMarket THEN
IF close < lowestPrice THEN
lowestPrice = close
ENDIF
chandelierCover = lowestPrice + (myATR * atrMultiplier)
EXITSHORT AT chandelierCover STOP
ENDIF
// 8. SHORT Breakeven
IF ShortOnMarket THEN
entryPriceShort = PositionPrice
IF close <= (entryPriceShort - 100) THEN
EXITSHORT AT entryPriceShort STOP
ENDIF
ENDIF
SET STOP LOSS 200
The CCI[50] threshold at 155 is quite extreme. That’s a very strong momentum reading, which is good for filtering out noise, but on M5 you might find it fires too rarely on the short side because bearish CCI extremes below -155 tend to be brief. You could try -100 as a starting point for shorts and see how the trade count looks in backtest.
Thanks Nicolas for the warm welcome.
Appreciate the update of the strategy.
And yeah I have tested and CCI threshold from -80 to -160. -100 gives the most optimum result.
Will look forward to more contributions if any.
Cheers and have a great weekend!