 # Bars Since Bull < bars Since Bear

#### henry1224

##### Active member
VIP
I have 8 conditions, 4 bullish, 4 bearish.
I want the bullish signal to start when all 4 bullish conditions are true, and to continue to show a bullish signal until all 4 bearish conditions are true

How would I go about and code this?
Any ideas?

Thanks

Henry

#### BenTen

Staff member
Staff
VIP
Do you have the script?

#### henry1224

##### Active member
VIP
here is what I have so far

Code:
``````declare Lower;

def R1 = RSI(8);

def R2 = RSI(14);

def R3 = RSI(19);

def ma =Close/ SimpleMovingAvg(close,9);

def Bull = R1 > R2 and R2 > R3 and ma > 1;

def Bear = R3 > R2 and R2 > R1 and ma < 1;

def state = {default init, Bull, Bear};

def Signal;
switch (state) {
case init:
if (!IsNaN(loss)) {
case Bull:
state = state.Bull;

case Bear:
state = state.Bear;
}
} else {
state = state.init;

}
case Bull:
if (Bull == 1) {
state = state.Bull;
} else {
state = state.Bear;
}
case Bear:
if (Bear ==1) {
state = state.Bear;

} else {
state = state.Bull;
}
}
def BuySignal = Crosses(state == state.Bull, 0, CrossingDirection.ABOVE);
def SellSignal = Crosses(state == state.Bear, 0, CrossingDirection.ABOVE);

#################################################``````

what I'm looking for is once the Bull signal fires , I want a +1 to remain true until the Bear signal fires then the bear remains true until the bull fires again

#### KevinSammy

##### Member
VIP
here is what I have so far

Code:
``````declare Lower;

def R1 = RSI(8);

def R2 = RSI(14);

def R3 = RSI(19);

def ma =Close/ SimpleMovingAvg(close,9);

def Bull = R1 > R2 and R2 > R3 and ma > 1;

def Bear = R3 > R2 and R2 > R1 and ma < 1;

def state = {default init, Bull, Bear};

def Signal;
switch (state) {
case init:
if (!IsNaN(loss)) {
case Bull:
state = state.Bull;

case Bear:
state = state.Bear;
}
} else {
state = state.init;

}
case Bull:
if (Bull == 1) {
state = state.Bull;
} else {
state = state.Bear;
}
case Bear:
if (Bear ==1) {
state = state.Bear;

} else {
state = state.Bull;
}
}
def BuySignal = Crosses(state == state.Bull, 0, CrossingDirection.ABOVE);
def SellSignal = Crosses(state == state.Bear, 0, CrossingDirection.ABOVE);

#################################################``````

what I'm looking for is once the Bull signal fires , I want a +1 to remain true until the Bear signal fires then the bear remains true until the bull fires again

Hi - were you able to get this to work?

Thanks