VPS Migration failed - failed to load program (546) - page 2

 
Fernando Carreiro #:


Based on all the information you have given, and all the various tests you have faithfully carried out, I can only concluded that something recent on the MetaQuotes side, is now identifying the EA as invalid.

Solving the issue will require the help of a skilled 3rd party to analyse the EA code and maybe see if they can identify some possible issue, and work with you to troubleshoot it.

If you know a highly skilled programmer, ask them to help review the code with you, to discover the cause.

If you don't have anyone, and if you are willing to trust a moderator, I can try do that for you in private and for free.

On a side note, one more thing you can try, is to modify the EA code is some meaningful way, just so that the resulting compilation is different with some significance, to see if it accepts it.

There is not much more I can think of at this point.

Thanks a lot for your help so far.

Since the old version of the EA works but the new doesn't I reverse engineered the code and threw one block after the other out of the code.

At the end I found out that it has something to do with the "inputs" because that's a major difference between the two versions. The old one uses almost the same variables but with "EACustom" I'm able to play around with all the variables as inputs. If I delete all "input" the according variables become unadjustable as settings the EA on charts. But, the EA becomes migratable.

So it seems to me to be an issue with some of the inputs which cannot be used with the latest updates on MQL5-VPS servers.

I found out that not all inputs are effected and I dont want to hard code all my settings into individual EAs in order for them to become migratable.

So I'll continue searching for which inputs are effected at a later point.

 
Dr. Pieter Mergenthaler #:

Thanks a lot for your help so far.

Since the old version of the EA works but the new doesn't I reverse engineered the code and threw one block after the other out of the code.

At the end I found out that it has something to do with the "inputs" because that's a major difference between the two versions. The old one uses almost the same variables but with "EACustom" I'm able to play around with all the variables as inputs. If I delete all "input" the according variables become unadjustable as settings the EA on charts. But, the EA becomes migratable.

So it seems to me to be an issue with some of the inputs which cannot be used with the latest updates on MQL5-VPS servers.

I found out that not all inputs are effected and I dont want to hard code all my settings into individual EAs in order for them to become migratable.

So I'll continue searching for which inputs are effected at a later point.


If you can isolate which inputs or types of inputs are causing the issue, it will be helpful to discuss them here, and prevent other users from having the similar issue.

One thing to check, is that the inputs are being initialised only with literals and not by any function calls (as that is actually incorrect and will cause issues).

 
Fernando Carreiro #:


If you can isolate which inputs or types of inputs are causing the issue, it will be helpful to discuss them here, and prevent other users from having the similar issue.

One thing to check, is that the inputs are being initialised only with literals and not by any function calls (as that is actually incorrect and will cause issues).

Sure, I'll document my findings here.

One thing I isolated was the following for my healthy very old version of the EA.

Without "input" for "Indi" the EA is migratable. 

enum Indi{
EPP=0,      //Entry Point  
Pins=1,     //Naked Trading Setup
Supp=2,     //Support and Resistance
Frac=3,     //Fractals
PZDivergence=4,     //Divergence
DoublePins=5, //Double Pins Setupvar1=MA-Widerstand 
PricePressureIndicator=6, //PricePressureIndicator 
CurrencyStrengthIndex=7, //CurrencyStrengthIndex 
DowHow=8,
};
 Indi Indikator=Pins;

However, including "input" as follows makes it un-migratable..

enum Indi{
EPP=0,      //Entry Point  
Pins=1,     //Naked Trading Setup
Supp=2,     //Support and Resistance
Frac=3,     //Fractals
PZDivergence=4,     //Divergence
DoublePins=5, //Double Pins Setupvar1=MA-Widerstand 
PricePressureIndicator=6, //PricePressureIndicator 
CurrencyStrengthIndex=7, //CurrencyStrengthIndex 
DowHow=8,
};
input Indi Indikator=Pins;

Which is especially strange because I used several other enum{} as inputs in both cases such as e.g. for Entry2:

enum Entry2{
Patterns=0, //Patterns (VCP etc.)
Gaps=1, //Gapfilter
Bollinger=2, //Bollinger Bands or MA 
WaveCount=3, //Wave Count 
XDay=4, //XDay Setup (Setupvariable1)
MarketBreadth=5, // MarketBreadth Backtest mit manuellen Daten aus Tradingview
RangeLeader=6, //Range Leader Candle
FXOpen=7, //FX open
StrategyNo18KevinDavey=8,//Entry #18 Kevin Davey
MACrossing=9,
EntryTwo=10 //Entry3 Setup
};
 input Entry2 Entrystrategie2=2;//Entry2: Entry2 bei Entry1 einstellen

I guess those inputs would be the function calls you mention?

 
Dr. Pieter Mergenthaler #:

Sure, I'll document my findings here.

One thing I isolated was the following for my healthy very old version of the EA.

Without "input" for "Indi" the EA is migratable. 

However, including "input" as follows makes it un-migratable..

Which is especially strange because I used several other enum{} as inputs in both cases such as e.g. for Entry2:

I guess those inputs would be the function calls you mention?

No, there is nothing wrong with using enumerations for inputs, and no they are not function calls.

However, your code is "dangerous". You should always qualify your enumerations to prevent accidental reuse of names, in multiple enumerations, or even variable names, which could cause issues.

That being said, the issue of the "input Indi Indikator=Pins;" may not be directly evident from what you have shown, and there may be a clash with other code not shown.

Here is an example from my own code ...

//--- Enumarations

   // Volume weight enumaraton
      enum EVolumeWeight
      {
         EVW_None = 0,        // No volume weighting
         EVW_TickVolume,      // Tick volume
         EVW_RealVolume,      // Real volume
         EVW_PriceRange       // True price range (pseudo volume)
      };

//--- Parameter settings

   input EVolumeWeight        i_eVolumeWeight = EVW_TickVolume; // Applied volume
Reason: