Select different indicators individually or combined on backtesting

 
hi, I just coded a function for testing my EA by combining different indicators to give me results but my problem is I cannot select individual indicators or combine different indicators to give me results that i want. this function only works on this sequence "ENABLE C1, ENABLE C2, ENABLE BASELINE, ENABLE VOLUME". if i want to test C1 and Volume i must create new condition and that would make my code very long and time consuming. is there any efficient way to select different indicators and test them combined or individually without making my code very long. tradingview has it, i think? thx for the help!   
input bool            InpTesting           =TRUE; //TESTING MODE
input bool            InpEnableC1          =TRUE; //ENABLE C1
input bool            InpEnableC2          =TRUE; //ENABLE C2
input bool            InpEnableBaseline    =TRUE; //ENABLE BASELINE
input bool            InpEnableVolume      =TRUE; //ENABLE VOLUME

void testing(){

        if((InpTesting==true)&&(sum.totaltrade==0))){
            
            //
            //Standard Buy Entry
            //
            //ONLY C1
            if((InpEnableC1==true)&&(InpEnableC2==false)&&(InpEnableBaseline==false)&&(InpEnableVolume==false)
               &&(c1buy>c1sell)&&(lastc1buy<lastc1sell)){
               OpenBuyTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            // C1 AND C2
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==false)&&(InpEnableVolume==false)
               &&(c1buy>c1sell)&&(lastc1buy<lastc1sell)&&(c2buy!=EMPTY_VALUE)){
               OpenBuyTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            // C1, C2, BASELINE,
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==false)
               &&(c1buy>c1sell)&&(lastc1buy<lastc1sell)&&(c2buy!=EMPTY_VALUE)&&(Baseline<Close[1])){
               OpenBuyTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            // C1, C2, BASELINE, VOLUME
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==true)
               &&(c1buy>c1sell)&&(lastc1buy<lastc1sell)&&(c2buy!=EMPTY_VALUE)&&(Baseline<Close[1])
               &&(Volume1!=EMPTY_VALUE)){
               OpenBuyTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            //
            //Standard Sell Entry
            //
            //ONLY C1
            if((InpEnableC1==true)&&(InpEnableC2==false)&&(InpEnableBaseline==false)&&(InpEnableVolume==false)
               &&(c1buy<c1sell)&&(lastc1buy>lastc1sell)){
               OpenSellTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            // C1 AND C2
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==false)&&(InpEnableVolume==false)
               &&(c1buy<c1sell)&&(lastc1buy>lastc1sell)&&(c2sell!=EMPTY_VALUE)){
               OpenSellTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            // C1, C2, BASELINE,
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==false)
               &&(c1buy<c1sell)&&(lastc1buy>lastc1sell)&&(c2sell!=EMPTY_VALUE)&&(Baseline>Close[1])){
               OpenSellTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            // C1, C2, BASELINE, VOLUME
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==true)
               &&(c1buy<c1sell)&&(lastc1buy>lastc1sell)&&(c2sell!=EMPTY_VALUE)&&(Baseline>Close[1])
               &&(Volume1!=EMPTY_VALUE)){
               OpenSellTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            //
            //Baseline Cross Buy Entry
            //

            // C1, C2, BASELINE
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==false)
               &&(Baseline<Close[1])&&(LastBaseline>Close[2])&&(c2buy!=EMPTY_VALUE)&&(c1buy>c1sell)){
               OpenBuyTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else
            // C1, C2, BASELINE, VOLUME
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==true)
               &&(Baseline<Close[1])&&(LastBaseline>Close[2])&&(c2buy!=EMPTY_VALUE)&&(c1buy>c1sell)
               &&(Volume1!=EMPTY_VALUE)){
               OpenBuyTrade();
               LotSave();
               breakeven=0;
            }else
            //
            //Baseline Cross Sell Entry
            //
            // C1, C2, BASELINE
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==false)
               &&(Baseline>Close[1])&&(LastBaseline<Close[2])&&(c2sell!=EMPTY_VALUE)&&(c1buy<c1sell)){
               OpenSellTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }else   
            // C1, C2, BASELINE, VOLUME
            if((InpEnableC1==true)&&(InpEnableC2==true)&&(InpEnableBaseline==true)&&(InpEnableVolume==true)
               &&(Baseline>Close[1])&&(LastBaseline<Close[2])&&(c2sell!=EMPTY_VALUE)&&(c1buy<c1sell)
               &&(Volume1!=EMPTY_VALUE)){
               OpenSellTrade();
               LotSave();
               Orderlots();
               breakeven=0;
            }
            
         
         }  

}