[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Code Question



PureBytes Links

Trading Reference Links

Bill, is correct that iif is the issue. I think you want to use the Writeif function for what your looking to do. For example adding this bit of code will get you the attached exploration output.

//Exploration Cell colors
PosTxtclr = IIf(PosDiv==1, colorWhite,colorWhite);
Posbkclr = IIf(PosDiv==1, colorLime,colorWhite);
NegTxtclr = IIf(NegDiv==1, colorBlack,colorLime);
Negbkclr = IIf(NegDiv==1, colorRed,colorWhite);

//Turn Signals to Text Cell Output

AddTextColumn(WriteIf(PosDiv==1,"Positive",WriteIf(PosDiv==0,"","")),"Positive",1.2, Postxtclr, Posbkclr);
AddTextColumn(WriteIf(NegDiv==1,"Negative",WriteIf(NegDiv==0,"","")),"Negative",1.2, Negtxtclr, Negbkclr);



Regards,

Duke Jones, CMT

On Sep 22, 2009, at 10:27 PM, wavemechanic wrote:

 

The plots are correct but your IIF() is incorrect (assign it to a variable and it will return the value of the 2nd or 3rd parameter).  I just checked and the code that I listed works as I described so you can start there and modify as desired if this is not what you want.
 
Bill
----- Original Message -----
Sent: September 22, 2009 7:05 PM
Subject: [amibroker] Re: Code Question

Bill, Thanks for taking a look at this for me. I have looked at the section you described but I guess I am a little slow at this. I replaced using == etc but no change. I am not sure if you plotted this but the plots seem correct. The problem is when I use an exploration so I guess I am not making a connection as to where its off. I will go back and re-read that section as see if this thick head can make sense of it.

Thanks
DM

--- In amibroker@xxxxxxxxxps.com, "wavemechanic" <fimdot@xxx> wrote:
>
> You have a problem with the way IIF() is used.  See "Common Coding Mistakes" in the Users Guide.
>
> From your description, I assume that you want to go through your symbols, characterize the last value of the divergence and associate the divergence with a symbol.  If so, a simple way is to replace the code after the Plot() section with the following which will put 1 or 0 in the divergence columns.
>
> addtextcolumn(name(), "symbol", 1.2, colorblack);
> addcolumn(posdiv, "posdiv", 1.2, colorlime);
> addcolumn(negdiv, "negdiv", 1.2, colorred);
> filter = status("lastbarinrange");
>
> Bill
>   ----- Original Message -----
>   From: dmcleod1981
>   To: amibroker@xxxxxxxxxps.com
>   Sent: September 22, 2009 10:55 AM
>   Subject: [amibroker] Code Question
>
>
>   I found this code in the TASC articles in the member section. I was trying to add some code to be able to run an explore to possible divergences. When I plot the indicator it seems to be correct but in the columns both conditions show true. It is a simple code mistake but at the moment it escapes me why. Can anyone point out the obvious to me?
>
>   Thanks
>   DM
>
>   /*TWO-POINT PROBLEM OF THE RATE OF CHANGE
>
>   In the "Two-point problem of the Rate Of Change" article Martti Luoma AND Jussi Nikkinen
>   present the modification of classic ROC indicator that can be constructed two ways in AmiBroker.
>   First way does NOT require writing any single line of code. You can construct ROCadj AND other
>   indicators using AmiBroker's powerful drag AND drop technology. To create ROCadj, select Chart tab,
>   go to Indicators folder, double click on ROC - Rate Of Change - this will create new chart pane with ROC.
>   Then go to Averages folder, click AND drag EMA - Exponential Moving Average onto ROC chart.
>   Your indicator is ready. Now simply adjust ROC period to 1 AND EMA smoothing period to 21 using
>   Parameters window. Second way is to use the formula presented in Listing 1. Just type it into
>   Formula Editor AND press Insert Chart button.
>   */
>
>   periods = Param("Periods", 21, 2, 200, 1 );
>   ROCadj = periods * EMA( ROC( C, 1 ), periods );
>
>   /*Added Divergence to original formula*/
>
>   RocSlope=LinRegSlope(ROC(C,periods),periods);
>   MARocSlope=LinRegSlope(ROCadj,periods);
>   PosDiv=MARocSlope>=RocSlope;
>   NegDiv=MARocSlope<RocSlope;
>
>
>   //Plots
>   Plot( ROCadj, "ROCadj "+periods, colorRed, styleThick );
>   // the line below adds standard ROC overlay
>   Plot( ROC( C, periods ), "ROC "+periods, colorBlue );
>
>   Plot(PosDiv,"Positive",colorLime,styleOwnScale);
>   Plot(NegDiv,"Positive",colorRed,styleOwnScale);
>   IIf(PosDiv>0,AddTextColumn("Positive","Positive Divergence",1.2,colorLime),0);
>   IIf(NegDiv>0,AddTextColumn("Negative","Negative Divergence",1.2,colorRed),0);
>
>   Filter=1;
>   
>