// Definition of code parameters
DEFPARAM CumulateOrders = False // Cumulating positions deactivated
// Prevents the system from creating new orders to enter the market or increase position size before the specified time
noEntryBeforeTime = 091500
timeEnterBefore = time >= noEntryBeforeTime
// Conditions to enter long positions
indicator1 = MoneyFlowIndex[14]
c1 = (indicator1 CROSSES OVER 50)
indicator2 = Momentum[12](close)
c2 = (indicator2 > -120)
indicator3 = Average[5](volume)-Average[25](volume)
c3 = (indicator3 > -3500)
indicator4 = MoneyFlowIndex[14]
c4 = (indicator4 > 50)
indicator5 = SAR[0.02,0.02,0.2]
c5 = (close < indicator5)
indicator6 = Stochastic[14,3](close)
c6 = (indicator6 < indicator6[1])
indicator7 = ADX[14]
c7 = (indicator7 < 43)
indicator8 = ADX[14]
c8 = (indicator8 > 12)
indicator9 = Momentum[12](close)
c9 = (indicator9 < 0)
indicator10 = Average[5](volume)-Average[25](volume)
c10 = (indicator10 < 10000)
indicator11 = CCI[20]
c11 = (indicator11 >= -100)
indicator12 = MACD[12,26,9](close)
c12 = (indicator12 <= -3)
indicator13 = ExponentialAverage[9](MACDline[12,26,9](close))
c13 = (indicator13 < 85)
indicator14 = MoneyFlowIndex[14]
c14 = (indicator14 <= 90)
IF (c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 AND c8 AND c9 AND c10 AND c11 AND c12 AND c13 AND c14) AND timeEnterBefore THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Conditions to exit long positions
indicator15 = MoneyFlowIndex[14]
c15 = (indicator15 CROSSES OVER 70)
indicator16 = SAR[0.02,0.02,0.2]
c16 = (close CROSSES UNDER indicator16)
IF c15 OR c16 THEN
SELL AT MARKET
ENDIF
// Conditions to enter short positions
indicator17 = MoneyFlowIndex[14]
c17 = (indicator17 CROSSES UNDER 50)
indicator18 = Stochastic[14,3](close)
c18 = (indicator18 > 70)
indicator19 = Stochastic[14,3](close)
c19 = (indicator19 < 85)
indicator20 = Momentum[12](close)
c20 = (indicator20 > 0)
indicator21 = Momentum[12](close)
c21 = (indicator21 < 100)
indicator22 = Average[5](volume)-Average[25](volume)
c22 = (indicator22 < -3500)
indicator23 = Average[5](volume)-Average[25](volume)
c23 = (indicator23 > -5300)
indicator24 = DIminus[14](close)
c24 = (indicator24 > 13)
indicator25 = ADX[14]
c25 = (indicator25 > 13)
indicator26 = MoneyFlowIndex[14]
c26 = (indicator26 < 49)
indicator27 = ADX[14]
c27 = (indicator27 < 24)
indicator28 = SAR[0.02,0.02,0.2]
c28 = (close > indicator28)
c29 = (close < close[1])
indicator29 = DIminus[14](close)
c30 = (indicator29 < 25)
IF (c17 AND c18 AND c19 AND c20 AND c21 AND c22 AND c23 AND c24 AND c25 AND c26 AND c27 AND c28 AND c29 AND c30) AND timeEnterBefore THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Conditions to exit short positions
indicator30 = SAR[0.02,0.02,0.2]
c31 = (close CROSSES OVER indicator30)
indicator31 = MoneyFlowIndex[14]
c32 = (indicator31 CROSSES UNDER 30)
IF c31 AND c32 THEN
EXITSHORT AT MARKET
ENDIF
// Stops and targets
SET STOP pLOSS 120
Hi Nicolas
For your kind information, I have used the above EA ‘hk30mMFIco50 cu50LT PL120-24’ to do auto trade. It was not auto stopped from the system although I was using MFI indicators in my coding.
Furthermore, some of the EAs noting using MFI, were also auto stopped from the system. I have more than 10 EAs in HS50 cannot run in Proorder due to this problem. Although I have repeatedly sent tickets to the help centre, the only solution from them is to add DEFPARAM PreloadBars = 20000 which I have added later on. The latest reply from them is that they cannot comprehend the auto stop problem. It is seemed that they do not have other solution. This is really disappointing.
Make copies and try different changes on each EA copy so it then be easy to compare with the unchanged EA when the changed EA not get stopped.
Try the following changes, one at a time in a separate EA for each change …
- Remove any condition that uses volume.
- Replace MFI with some other Indicator.
- Mmmm ,,, you get the idea though? 🙂
Hi GraHal
Are you able to solve the problem in New Zealand time zone?
Thank you for your kind suggestion. However, if I change to use other indicators, I may not get the result as good as before. I believe that this is mainly due to the weakness of the system and not the our coding problem.
Anyway, I will try my best to do it.
If you are an IG customer, it is possible that ITF hasn’t received any ticket from you.
Anyway, please do the following:
- activate the visibility of your email address for PRT support in your profile settings of the website
- post 2 strategies in your next post that aren’t working, with MFI and without MFI
- send a technical report through the platform and with a short explanation and a link of your next post that contain the strategy (each reply in a topic has a specific link in the upper right header).
- wait
if I change to use other indicators, I may not get the result as good as before
Leave original EAs as is / dont touch them but make copies and change them as I suggested, use these for fault finding .
You are not looking for good results during fault finding stage … you are only trying to isolate what is causing the Stoppages of EA’s.
I have just set hk15m C>YC CcoOmfiP95L100-2(1) going on Fwd Test on HS50 with all volume conditions set to volume > 0.
Also I set the above EA unchanged on the DJI … why the DJI … who knows, I’ll tell you when it does something ,,, either trades or gets stopped!!!
It is better try something than do nothing when we not know what is causing an Issue.
If we don’t make a change today then tomorrow will be the same as yesterday! 🙂
Hi guys
Yup I totally agree to do something to solve the problem rather just waiting and doing nothing.
As suggested by Nicolas, I have taken away the MFI indicator from two EAs for testing purpose. The two EAs were not stopped from the system.
Tonight I will amend another two EAs to test again and keep you updated.
Thank you very much for your effort.
Kindly refer to the strategy with MFI but auto stopped from the system.
The strategy is hk15m C>YC CcoOmfiP95L100-2(1).
// Definition of code parameters
DEFPARAM CumulateOrders = False // Cumulating positions deactivated
// Prevents the system from creating new orders to enter the market or increase position size before the specified time
noEntryBeforeTime = 091500
timeEnterBefore = time >= noEntryBeforeTime
// Conditions to enter long positions
c1 = (close >= DClose(1))
c2 = (close CROSSES OVER DOpen(0))
indicator1 = ADX[14]
c3 = (indicator1 > indicator1[1])
indicator2 = DIplus[14](close)
c4 = (indicator2 >= 26)
indicator3 = MoneyFlowIndex[14]
c5 = (indicator3 < 50)
indicator4 = Average[5](volume)-Average[25](volume)
c6 = (indicator4 <= 8500)
indicator5 = ADX[14]
c7 = (indicator5 >= 14)
indicator6 = Average[5](Stochastic[14,3](close))
c8 = (indicator6 >= 35)
IF (c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 AND c8) AND timeEnterBefore THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Conditions to enter short positions
c9 = (close < DClose(1))
c10 = (close CROSSES UNDER DOpen(0))
indicator7 = ADX[14]
c11 = (indicator7 < indicator7[1])
indicator8 = ADX[14]
c12 = (indicator8[1] < indicator8[2])
indicator9 = CCI[20]
c13 = (indicator9 < -90)
indicator10 = CCI[20]
c14 = (indicator10 > -200)
indicator11 = ADX[14]
c15 = (indicator11 >= 13)
indicator12 = DI[14](close)
c16 = (indicator12 <= 0)
indicator13 = Average[5](volume)-Average[25](volume)
c17 = (indicator13 < 8500)
indicator14 = Average[5](volume)-Average[25](volume)
c18 = (indicator14 >= 500)
indicator15 = Volume
c19 = (indicator15 > 2500)
indicator16 = MoneyFlowIndex[14]
c20 = (indicator16 > 10)
indicator17 = Average[5](Stochastic[14,3](close))
c21 = (indicator17 > 10)
indicator18 = Momentum[12](close)
c22 = (indicator18 <= -25)
IF (c9 AND c10 AND c11 AND c12 AND c13 AND c14 AND c15 AND c16 AND c17 AND c18 AND c19 AND c20 AND c21 AND c22) AND timeEnterBefore THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Stops and targets
SET STOP pLOSS 100
SET TARGET pPROFIT 100
Kindly refer to the below strategy with MFI and NOT stopped from the system.
The strategy is hk60m MA10coMA30mfimo PL100-24
// Definition of code parameters
DEFPARAM CumulateOrders = False // Cumulating positions deactivated
// Prevents the system from creating new orders to enter the market or increase position size before the specified time
noEntryBeforeTime = 091500
timeEnterBefore = time >= noEntryBeforeTime
// Conditions to enter long positions
indicator1 = Average[10](close)
indicator2 = Average[30](close)
c1 = (indicator1 CROSSES OVER indicator2)
indicator3 = MoneyFlowIndex[14]
c2 = (indicator3 < 50)
indicator4 = Momentum[12](close)
c3 = (indicator4 > 0)
indicator5 = MACDline[12,26,9](close)
c4 = (indicator5 < 15)
c5 = (close >= close[1])
indicator6 = MACDline[12,26,9](close)
c6 = (indicator6 >= -23)
indicator7 = Stochastic[14,3](close)
c7 = (indicator7 <= 90)
indicator8 = Average[5](volume)-Average[25](volume)
c8 = (indicator8 < 6500)
indicator9 = DIplus[14](close)
c9 = (indicator9 > 18)
indicator10 = Average[5](Stochastic[14,3](close))
c10 = (indicator10 > 45)
indicator11 = Average[5](volume)-Average[25](volume)
c11 = (indicator11 >= -2500)
IF (c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 AND c8 AND c9 AND c10 AND c11) AND timeEnterBefore THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Conditions to exit long positions
indicator12 = SAR[0.02,0.02,0.2]
c12 = (close CROSSES UNDER indicator12)
IF c12 THEN
SELL AT MARKET
ENDIF
// Conditions to enter short positions
indicator13 = Average[10](close)
indicator14 = Average[30](close)
c13 = (indicator13 CROSSES UNDER indicator14)
indicator15 = DIminus[14](close)
c14 = (indicator15 >= 32)
indicator16 = Average[5](volume)-Average[25](volume)
c15 = (indicator16 <= 12000)
indicator17 = ADX[14]
c16 = (indicator17 >= 24)
indicator18 = MACD[12,26,9](close)
c17 = (indicator18 > -48)
indicator19 = Momentum[12](close)
c18 = (indicator19 <= -240)
indicator20 = Volume
c19 = (indicator20 > 0)
indicator21 = AverageTrueRange[14](close)
c20 = (indicator21 >= 60)
indicator22 = AverageTrueRange[14](close)
c21 = (indicator22 <= 125)
IF (c13 AND c14 AND c15 AND c16 AND c17 AND c18 AND c19 AND c20 AND c21) AND timeEnterBefore THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Conditions to exit short positions
indicator23 = SAR[0.02,0.02,0.2]
c22 = (close CROSSES OVER indicator23)
IF c22 THEN
EXITSHORT AT MARKET
ENDIF
// Stops and targets
SET STOP pLOSS 110
For the record / investigation, I set running hk15m C>YC CcoOmfiP95L100-2(1) in 3 versions as follows …
- Unchanged, running on HS50 at UTC+0 / GMT Timezone.
- All volumes set to > 0, running on HS50 at UTC+0 / GMT Timezone.
- Unchanged, running on DJI at UTC+0 / GMT Timezone.
I received an email to say all 3 versions above were stopped at 22:35 (UTC+0 / GMT)
After investigation made by ITF with your last report, I can confirm that the problem is linked to the use of MFI in the strategies.
In 15-minutes timeframe, due to lack of volumes available out of market hours, the MFI cannot complete its calculation thus resulting in the “not enough data” error message. This problem doesnt occur with a 1-hour timeframe, because the bars without Volumes are less than the MFI calculation period.
Hi guys
Thanks again for your effort.
Based on the outcome of the investigation, I will check again my other EAs which are auto stopped from the system in HS50.
May I know is it possible for me to use MFI in HS50 for lower timeframe in new version 11? Or, is there anything I can modify in my strategy (in version 10.3) in order for me to continue using MFI since this indicator can generate better result? I heard from PRT that they are going to launch version 11 for IG customers in 2020.
Alternatively, can I change my MFI’s current setting from number period = 14 to other number of period in order to get rid of this problem?
Though I was clear in this post:
https://www.prorealcode.com/topic/above-90-winning-rate-but-auto-stopped-out-from-running-in-proorder/page/3/#post-115041
🙄
Add a condition to prevent the MFI indicator to calculate when no volumes are present.
The time limit you coded doesn’t prevent MFI calculation on short timeframes.
I have the same problem with a custom code indicator (a Supertrend volume-based) which in ProOrder is stopped every day with the same message.
I have come to conclusion that is a platform’s bug/limit.
Hi Nicolas
May I know is there a way to add a condition to prevent the MFI indicator to calculate when no volumes are present? I mean how can I change my coding to add this condition?
Or
I cannot use MFI anymore for the strategy in HS50 for low timeframe?
Many thanks.