Try Changing: Ref( SyncShort, -1 ) to SyncShort[i-1] Ref( SyncLong, -1 ) to SyncLong[i-1]
Should take care of your errors. On Wed, Jun 10, 2009 at 7:05 AM, lxman77 <[email protected]> wrote: > > > Hello All, > > I am trying to convert the following code to AFL: > > [LegacyColorValue = true]; > > Input: LongLeg(35), ShortLeg(5), MultiLeg(10), MultiW(1); > Var: SyncShort(0), SyncLong(0), SyncMulti(0); > Var: TempSyncS(0), TempSyncL(0), TempSyncM(0), MultiOsc(0); > Var: LongWeight(0), ShortWeight(0), MultiWeight(0), MultiHigh(0), > MultiLow(0); > var: DateLock(980116); > > ShortWeight = 2/(ShortLeg + 1); > LongWeight = 2/(LongLeg + 1); > > if TempSyncS = 0 then Begin > SyncShort = Close; > SyncLong = Close; > end > Else Begin > SyncShort = TempSyncS * (1 - ShortWeight) + (ShortWeight * Close); > SyncLong = TempSyncL * (1 - LongWeight) + (LongWeight * Close); > end; > > TempSyncS = SyncShort; > TempSyncL = SyncLong; > > MultiOsc = (100 * ( (SyncShort / SyncLong) - 1) ); > plot1(MultiOsc, "MO"); > > MultiWeight = 2/(MultiLeg + 1); > > if TempSyncM = 0 then > SyncMulti = MultiOsc > Else > SyncMulti = (AbsValue(TempSyncM) * (1 - MultiWeight)) + (MultiWeight * > MultiOsc); > > TempSyncM = SyncMulti; > > MultiHigh = SyncMulti * MultiW; > MultiLow = -1 * MultiHigh; > > Plot2(MultiHigh,"MH"); > Plot3(MultiLow,"ML"); > > Print("MO:", MultiOsc, " MH: ", MultiHigh, " ML: ", MultiLow); > > I am not sure what the original code is, Metatrader, EasyLanguage, > something like that. Anyway, this is what I have so far: > > _SECTION_BEGIN("Rubber Band Indicator"); > SetChartOptions(0,0,chartGrid30|chartGrid70); > LongLeg = Param( "LongLeg", 35, 1, 200, 1 ); > ShortLeg = Param( "ShortLeg", 5, 1, 200, 1 ); > MultiLeg = Param( "MultiLeg", 10, 1, 200, 1 ); > MultiW = Param( "MultiW", 1, 1, 200, 1 ); > > ShortWeight = 2 / ( ShortLeg + 1 ); > LongWeight = 2 / ( LongLeg + 1 ); > > SyncShort[ 0 ] = Close[ 0 ]; > SyncLong[ 0 ] = Close[ 0 ]; > > for( i = 1; i < BarCount; i++ ) > { > SyncShort[ i ] = Ref( SyncShort, -1 ) * (1 - ShortWeight) + (ShortWeight * > Close[ i ]); > SyncLong[ i ] = Ref( SyncLong, -1 ) * (1 - LongWeight) + (LongWeight * > Close[ i ]); > }; > > MultiOsc = (100 * ( (SyncShort / SyncLong) - 1) ); > > Plot( MultiOsc, _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), > ParamStyle("Style") ); > > MultiWeight = 2/(MultiLeg + 1); > > TempSyncM = MultiOsc; > > SyncMulti = (abs(TempSyncM) * (1 - MultiWeight)) + (MultiWeight * > MultiOsc); > TempSyncM = SyncMulti; > > MultiHigh = SyncMulti * MultiW; > MultiLow = -1 * MultiHigh; > > Plot( MultiHigh, "MH", ParamColor( "Color", colorCycle ), > ParamStyle("Style") ); > Plot( MultiLow, "ML", ParamColor( "Color", colorCycle ), > ParamStyle("Style") ); > _SECTION_END(); > > When I check it, I get the newbie error, Error 8 on lines 16 and 17. I do > not understand why, because I believe I am passing an element, and not an > array through the = operator. > > Help please. Thanks in advance. > > >
