Hi John,
With the 1st formula from this post (pre-edit):
http://www.sharewealthsystems.com/forum/index.php/topic,3526.msg16036.html#msg16036The condition is that the 1st RSI has to be greater than 90 AND the 2nd RSI is crossing the value of 10 on the same bar. You are correct that the RSIs both work, but it looks like they oscilate between 0 and 1.
So a small tweak in the criteria gets the formula firing:
{ ---- Criteria ---- }
RSIMH1_UP := RSIMH1 >.9;
RSIMH3_X10 := cross(RSIMH3,.10);
You may have worked this out already it looks like.
With the formula duplication question in the edit - due to the way BCFL is the answer is no. You can put common elements in their OWN formula and then get the result of that formula as part of another.
ie this formula 1 called MACD1 in the left hand side Formula Explorer
{ ---- MACD 1 ---- }
MACD1:= mov(C, 120, E) - mov(C, 260, E);
MACD1sig := mov(MACD1, 90, E);
MACD1hist := (MACD1 - MACD1sig);
{ ---- RSIM Formula --- }
period := 5;
currentValue := MACD1hist;
previousValue := REF(MACD1hist, -5);
change := currentValue - previousValue;
Gain := if(cum(1) > period, sum(If(change>0, change, 0), period), 0);
Loss := if(cum(1) > period, sum(If(change<0, abs(change), 0), period), 0);
Avg_Gain := Gain / period;
Avg_Loss := Loss / period;
Avg_Change := if(Avg_Loss > 0, Avg_Gain / Avg_Loss, PREV);
RSIMH1 := 100-(100/(1+Avg_Change));
RSIMH1;
This is formula 2 called: MACD2
{ ---- MACD 2 ---- }
MACD2:= mov(C, 50, E) - mov(C, 100, E);
MACD2sig := mov(MACD2, 30, E);
MACD2hist := (MACD2 - MACD2sig);
{ ---- RSIM Formula --- }
period := 5;
currentValue := MACD2hist ;
previousValue := REF(MACD2hist, -5);
change := currentValue - previousValue;
Gain := if(cum(1) > period, sum(If(change>0, change, 0), period), 0);
Loss := if(cum(1) > period, sum(If(change<0, abs(change), 0), period), 0);
Avg_Gain := Gain / period;
Avg_Loss := Loss / period;
Avg_Change := if(Avg_Loss > 0, Avg_Gain / Avg_Loss, PREV);
RSIMH2 := 100-(100/(1+Avg_Change));
RSIMH2;
This is another formula that gets both of these * individual * formulas and plots their calculations.
{ New Formula }
RSI1 := FML("MACD1");
RSI2 := FML("MACD2");
RSI1;
RSI2;
The implications of this may be useful for using common calculations to shortern specific formulas (or multiple ones) and you only need to perform edits in a single place.