'Any way to make these Boolean options more elegant in pine?

I have written a big IF block to let users define the settings the strategy uses for orders. It consists of three rules for trend definition and four rules to pick the entry.

FHEQ = input.bool(defval=false, title="Equator check?", group='Trend')
FHMA = input.bool(defval=false, title="4H ACC > 4H CR?", group='Trend')
var bool longConditionTrend = na  
if FHTL and FHEQ and FHMA 
    longConditionTrend := FHCheckTL and FHCheckMA and PhaseCheckBull 
else if FHTL
    longConditionTrend := FHCheckTL
else if FHEQ
    longConditionTrend := PhaseCheckBull
else if FHMA 
    longConditionTrend := FHCheckMA 
else if FHTL and FHEQ 
    longConditionTrend := FHCheckTL and PhaseCheckBull 
else if FHTL and FHMA 
    longConditionTrend := FHCheckTL and FHCheckMA 
else if FHMA and FHEQ 
    longConditionTrend := FHCheckMA and PhaseCheckBull 
else 
    longConditionTrend := na 
plotshape(longConditionTrend, color=color.new(color.green, 0), style=shape.arrowup, size=size.normal, location=location.bottom, title='PlotsTrendConditions')
//////////////////////////////////////////////////////////////
///////////////////////Entry Conditions//////////////////////
FHACC = input.bool(defval=false, title="Close > FACC?", group='Entry')
FHCR = input.bool(defval=false, title="Close > FCR?", group='Entry')
FHPB = input.bool(defval=false, title='4H Pinball?', group='Entry')
OHPB = input.bool(defval=false, title="1H Pinball?", group='Entry')

var bool longConditionEntry = na
if FHACC and FHCR and OHPB and FHPB
    longConditionEntry := FHSignalACC and FHSignalCR and OHSignalTLB and FHSignalTLB 
else if FHACC and FHCR and OHPB
    longConditionEntry := FHSignalACC and FHSignalCR and OHSignalTLB
else if FHACC and FHCR and FHPB
    longConditionEntry := FHSignalACC and FHSignalCR and FHSignalTLB
else if FHACC and OHPB and FHPB
    longConditionEntry := FHSignalACC and OHSignalTLB and FHSignalTLB
else if FHACC and OHPB
    longConditionEntry := FHSignalACC and OHSignalTLB 
else if FHACC and FHCR
    longConditionEntry := FHSignalACC and FHSignalCR 
else if FHACC and FHPB
    longConditionEntry := FHSignalACC and FHSignalTLB
else if FHCR and OHPB and FHPB
    longConditionEntry := FHSignalCR and OHSignalTLB and FHSignalTLB
else if FHCR and OHPB
    longConditionEntry := FHSignalCR and OHSignalTLB 
else if FHCR and FHPB
    longConditionEntry := FHSignalCR and FHSignalTLB
else if FHPB and OHPB
    longConditionEntry := FHSignalTLB and OHSignalTLB
else if OHPB 
    longConditionEntry := OHCheckTLB 
else if FHACC
    longConditionEntry := FHSignalACC 
else if FHCR
    longConditionEntry := FHSignalCR
else if FHPB
    longConditionEntry := FHCheckTL
else 
    longConditionEntry := na  
plotshape(longConditionEntry, color=color.new(color.green, 0), style=shape.arrowup, size=size.normal, location=location.top, title='PlotsEntryConditions')

LongCondition = longConditionEntry and longConditionTrend
if strategy.position_size > 0 
    LongCondition := na 

I have tried to write every possible combination in the IF blocks but this gets me very big blocks. I was wondering if there is a more efficient way to do this?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source