Yes. For using a function inside a DLL, we define the function prototype and use the API macro:

Code:
void __stdcall fastSingular(double* sourceArray,int arraySize, int lag, int numberOfComputationLoops, double* destinationArray);
API(fastSingular,libSSA)



The libSSA.dll must be copied into the Zorro folder.

Next, we're going to reproduce what the EA does. All the complicated stuff with Indexbuffers, loops, ArrayCopy etc. is only required in MQL4, which does not natively support data series. It's not needed in a C script. The only needed part is the code where the data input to the SSA function is calculated:

Code:
double ma    = iMA(NULL,0,SSAPeriodNormalization,0,MODE_SMA,SSAPrice,i);
      double dev   = iStdDev(NULL,0,SSAPeriodNormalization,0,MODE_SMA,SSAPrice,i)*3.0;
      double price = iMA(NULL,0,1,0,MODE_SMA,SSAPrice,i);
             no[i] = (price-ma)/(MathMax(dev,0.000001));


no[i] is normalized data, calculated similar to Zorro's Fisher transform function from Workshop 5. The same code in lite-C:

Code:
vars close = series(priceClose());
var ma = SMA(close,SSAPeriodNormalization);
var dev = StdDev(close,SSAPeriodNormalization,1)*3.0;
vars no = series((close[0]-ma)/max(dev,0.000001));



You can now plot the normalized data for checking if it looks correct:

Code:
plot("Normalized",no[0],NEW,RED);



This is the input to the fastSingular function from the SSA DLL. Unfortunately I just found that the function does not work - it crashes when called. So, either the DLL has a bug, or more likely, fastSingular must be called with different parameters than I expected. It's sort of nontrivial to figure out the parameters of a function without having either the source code of the DLL or a proper documentation of it. But I'll experiment a little and think that I can find the correct parameters for getting the function not to crash.

Anyway, this is the basic way when you want to call functions from an external DLL in Zorro.