I am passing arguments by reference so that the function can return multiple values. However in the function I use the "ref" function on these variables so that I can detect a change. This does not seem to work. (I can get around this by loop processing though.)
It does seem that other functions do not work on these variables.
Is this a known limitation of passing arguments by reference or am I doing something wrong?`
function TrendFunction( Array, Lookback, TrendMode, TrendModeChange)
{
Trend = MA( Array, Lookback );
TrendMode = IIf( Trend > Ref(Trend, -1 ), 1, -1 );
TrendModeChange = iif( TrendMode != Ref(TrendMode, -1 ), 1, 0 );
Temp1 = Ref( Trend, -1);
Temp2 = Ref( TrendMode, -1);
for( bar = 0; bar < BarCount; bar++ )
{
if(bar > 10) _TRACE ("#12 bar " + bar + " Trend " + Trend[ bar ]
+ " TrendMode " + TrendMode[ bar ] + " TrendModeChange " + TrendModeChange[ bar ]
+ " Temp1 " + Temp1[ bar ] + " Temp2 " + Temp2[ bar ]
);
}
return Trend;
}
Trend = 0;
TrendMode = 0;
TrendModeChange = 0;
Trend = TrendFunction( Close, 10, &TrendMode, &TrendModeChange );
Temp3 = Ref( Trend, -1);
Temp4 = Ref( TrendMode, -1);
for( bar = 0; bar < BarCount; bar++ )
{
if(bar > 10) _TRACE ("#32 bar " + bar + " Trend " + Trend[ bar ]
+ " TrendMode " + TrendMode[ bar ] + " TrendModeChange " + TrendModeChange[ bar ]
+ " Temp3 " + Temp3[ bar ] + " Temp4 " + Temp4[ bar ]
);
}
Buy = 1;
Sell = 0;