//
// XTAM Short Signal Checking ...
bool XEU5XTAMHasShortSignal()
{
    //
    bool result = false;

    //
    // Validate Args ...
    if (!xEU5MXTAMEnableSignaller ||
        !xEU5MXTAMAllowShortSignals)
    {
        return result;
    }

    //
    result =
        //
        xAMAMaBuffer[1] < xTMMaBuffer[1] &&
        xAMAMaBuffer[2] < xTMMaBuffer[2]
        //
        &&
        //
        xEU5Conditions.isXAMABearish
        //
        &&
        //
        xEU5Conditions.isXTMBearish
        //
        &&
        //
        xEU5Conditions.isXFIUnderZero
        //
        &&
        //
        xEU5Conditions.isXTSCurrentMin
        //
        &&
        //
        xEU5Conditions.isXTSCurrentUnderFarest
        //
        &&
        //
        !xEU5Conditions.isXOBDSwingHigh
        //
        &&
        //
        !(
            //
            xEU5Conditions.isXCHMASCVale &&
            xEU5Conditions.isXCHMAMCVale &&
            xEU5Conditions.isXCHMALCVale
            //
            )
        //
        &&
        //
        (
            //
            (
                (
                    xEU5Conditions.isXTSCurrentUnderNearest ||
                    xEU5Conditions.isXTSCurrentCrossedUnderNearest) ||
                (xEU5Conditions.isXTSCurrentUnderMediest ||
                 xEU5Conditions.isXTSCurrentCrossedUnderMediest))
                ? (
                      //
                      (
                          //
                          (xEU5Conditions.isXLHPriceUnderSignal ||
                           xEU5Conditions.isXLHPriceInSignalRange ||
                           xEU5Conditions.isXLHPriceCrossedUnderSignal)
                              ? !(
                                    (xEU5Conditions.isXLHLowAttachedLL &&
                                     xEU5Conditions.isXLHHHSameInLength &&
                                     xEU5Conditions.isXCHLHSCMCLLSame)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXLHLLDecreased &&
                                     (xEU5Conditions.isXCHLHSCMCLLSame ||
                                      xEU5Conditions.isXCHLHMCLCHHSame))
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHLHSameHHs &&
                                     xEU5Conditions.isXLHHHIncreased)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMALCVale &&
                                     xEU5Conditions.isXCHLHSCMCHHSame)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMAMCVale &&
                                     xEU5Conditions.isXCHMALCVale)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHLHSameLLs ||
                                     xEU5Conditions.isXLHLowAttachedLL ||
                                     xEU5Conditions.isXLHHHSameInLength)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXLHLLSameInLength &&
                                     //
                                     (
                                         //
                                         xEU5Conditions.isXLHHHSameInLength
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXCHMALCTrendsUp &&
                                          xEU5Conditions.isXCHMALCFastOverSlow)
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXCHMASCFastOverSlow &&
                                          xEU5Conditions.isXCHMALCFastOverSlow)
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXCHMASCTrendsDown &&
                                          xEU5Conditions.isXCHMALCTrendsDown &&
                                          xEU5Conditions.isXCHMASCFastUnderSlow &&
                                          xEU5Conditions.isXCHMALCFastUnderSlow)
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXCHMASCOverMax &&
                                          xEU5Conditions.isXCHMASCUnderMax)
                                         //
                                         ||
                                         //
                                         (
                                             xEU5Conditions.isXCHMALCPeak &&
                                             (
                                                 //
                                                 xEU5Conditions.isXCHMAMCVale
                                                 //
                                                 ||
                                                 //
                                                 xEU5Conditions.isXCHMAMCPeak
                                                 //
                                                 ||
                                                 //
                                                 xEU5Conditions.isXLHHHDecreased
                                                 //
                                                 ||
                                                 //
                                                 xEU5Conditions.isXLHLLIncreased
                                                 //
                                                 ||
                                                 //
                                                 (xEU5Conditions.isXCHMALCFastOverSlow &&
                                                  xEU5Conditions.isXCHMASCFastOverSlow)
                                                 //
                                                 ||
                                                 //
                                                 (xEU5Conditions.isXCHMASCFastOverSlow &&
                                                  xEU5Conditions.isXCHMAMCFastOverSlow &&
                                                  xEU5Conditions.isXCHMALCFastOverSlow)
                                                 //
                                                 ||
                                                 //
                                                 (xEU5Conditions.isXCHMALCFastOverSlow &&
                                                  xEU5Conditions.isXTDBullCrossedUnderBear)
                                                 //
                                                 )
                                             //
                                             )
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXCHLHSCMCHHSame &&
                                          (xEU5Conditions.isXTDBullCrossedUnderBear
                                           //
                                           ||
                                           //
                                           (xEU5Conditions.isXCHMAMCFastOverSlow &&
                                            (!xEU5Conditions.isXCHMAMCTrendsUp &&
                                             !xEU5Conditions.isXCHMAMCTrendsDown))
                                           //
                                           )
                                          //
                                          )
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXCHMAMCTrendsUp &&
                                          xEU5Conditions.isXCHMALCTrendsUp &&
                                          xEU5Conditions.isXCHMAMCFastOverSlow &&
                                          xEU5Conditions.isXCHMALCFastOverSlow)
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXCHLHMCLCLLSame &&
                                          xEU5Conditions.isXCHMALCVale &&
                                          xEU5Conditions.isXCHMALCTrendsDown &&
                                          xEU5Conditions.isXCHMALCFastUnderSlow)
                                         //
                                         ||
                                         //
                                         (xEU5Conditions.isXLHHHDecreased &&
                                          (
                                              //
                                              xEU5Conditions.isXRSIVale
                                              //
                                              ||
                                              //
                                              (xEU5Conditions.isXCHMAMCFastOverSlow &&
                                               xEU5Conditions.isXCHMALCFastOverSlow)
                                              //
                                              ||
                                              //
                                              (xEU5Conditions.isXCHMAMCVale &&
                                               xEU5Conditions.isXCHMALCFastOverSlow)
                                              //
                                              )
                                          //
                                          )
                                         //
                                         )
                                     //
                                     )
                                    //
                                    )
                          : (xEU5Conditions.isXLHPriceOverSignal ||
                             xEU5Conditions.isXLHPriceCrossedOverSignal)
                              ? (
                                    !(
                                        xEU5Conditions.isXCHLHSameHHs
                                        //
                                        ||
                                        //
                                        (xEU5Conditions.isXCHMASCOverMin &&
                                         xEU5Conditions.isXCHMASCUnderMin)
                                        //
                                        ||
                                        //
                                        (xEU5Conditions.isXCHMAMCVale &&
                                         xEU5Conditions.isXCHMALCVale &&
                                         xEU5Conditions.isXCHLHSCMCHHSame)
                                        //
                                        ||
                                        //
                                        (xEU5Conditions.isXLHLLIncreased &&
                                         (xEU5Conditions.isXLHHHIncreased
                                          //
                                          ||
                                          //
                                          (xEU5Conditions.isXCHMALCPeak &&
                                           xEU5Conditions.isXLHHHSameInLength &&
                                           xEU5Conditions.isXCHMALCFastOverSlow)))
                                        //
                                        ||
                                        //
                                        (xEU5Conditions.isXLHLLSameInLength &&
                                         (
                                             //
                                             xEU5Conditions.isXLHHHSameInLength
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMAMCPeak &&
                                              xEU5Conditions.isXCHMAMCFastOverSlow)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMAMCVale &&
                                              xEU5Conditions.isXCHMALCVale)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMALCPeak &&
                                              xEU5Conditions.isXCHMALCFastOverSlow)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMALCVale &&
                                              xEU5Conditions.isXTDSignalVale &&
                                              xEU5Conditions.isXTDBullishVale)
                                             //
                                             )
                                         //
                                         )
                                        //
                                        ||
                                        //
                                        (xEU5Conditions.isXLHHHSameInLength &&
                                         (
                                             //
                                             (xEU5Conditions.isXCHMASCOverMax &&
                                              (xEU5Conditions.isXCHMASCUnderMax ||
                                               xEU5Conditions.isXCHMASCCrossedUnderMax))
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMAMCVale &&
                                              xEU5Conditions.isXCHMALCVale)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMASCVale &&
                                              xEU5Conditions.isXCHMAMCPeak &&
                                              xEU5Conditions.isXCHMALCVale)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMAMCPeak &&
                                              xEU5Conditions.isXCHMALCVale)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMALCVale &&
                                              xEU5Conditions.isXTDSignalVale &&
                                              xEU5Conditions.isXTDBullishVale)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMALCVale &&
                                              xEU5Conditions.isXCHMAMCTrendsUp &&
                                              xEU5Conditions.isXCHMALCTrendsDown &&
                                              xEU5Conditions.isXCHMAMCFastOverSlow &&
                                              xEU5Conditions.isXCHMALCFastUnderSlow)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHLHMCLCHHSame ||
                                              (xEU5Conditions.isXCHMAMCPeak &&
                                               xEU5Conditions.isXCHMAMCFastOverSlow))
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXCHMALCPeak &&
                                              xEU5Conditions.isXCHMALCFastOverSlow)
                                             //
                                             ||
                                             //
                                             (xEU5Conditions.isXLHHHIncreased &&
                                              xEU5Conditions.isXCHMASCTrendsDown &&
                                              xEU5Conditions.isXCHMAMCTrendsDown &&
                                              xEU5Conditions.isXCHMASCFastUnderSlow &&
                                              xEU5Conditions.isXCHMAMCFastUnderSlow)
                                             //
                                             )
                                         //
                                         )
                                        //
                                        ||
                                        //
                                        (
                                            xEU5Conditions.isXLHLLSameInLength &&
                                            (
                                                //
                                                (xEU5Conditions.isXCHMASCTrendsDown &&
                                                 xEU5Conditions.isXCHMAMCTrendsDown &&
                                                 xEU5Conditions.isXCHMALCTrendsDown &&
                                                 xEU5Conditions.isXCHMASCFastUnderSlow &&
                                                 xEU5Conditions.isXCHMAMCFastUnderSlow &&
                                                 xEU5Conditions.isXCHMALCFastUnderSlow)
                                                //
                                                ))
                                        //
                                        )
                                    //
                                    )
                          : (
                                !xEU5Conditions.isXLHPriceOverSignal &&
                                !xEU5Conditions.isXLHPriceUnderSignal &&
                                !xEU5Conditions.isXLHPriceInSignalRange &&
                                !xEU5Conditions.isXLHPriceCrossedOverSignal &&
                                !xEU5Conditions.isXLHPriceCrossedUnderSignal)
                              ? !(
                                    //
                                    (xEU5Conditions.isXLHHHSameInLength &&
                                     xEU5Conditions.isXLHLLSameInLength)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMAMCTrendsUp &&
                                     xEU5Conditions.isXCHMALCTrendsUp &&
                                     xEU5Conditions.isXCHMAMCFastOverSlow &&
                                     xEU5Conditions.isXCHMALCFastOverSlow)
                                    //
                                    )
                              : true)
                      //
                      )
                : true
            //
            )
        //
        &&
        //
        (
            //
            (
                (xEU5Conditions.isXTDBullOverBear ||
                 (xEU5Conditions.isXTDBullUnderBear ||
                  xEU5Conditions.isXTDBullCrossedUnderBear)) &&
                (xEU5Conditions.isXTDSignalUnderBear ||
                 xEU5Conditions.isXTDSignalCrossedUnderBear))
                ? !(
                      (xEU5Conditions.isXTMVale &&
                       xEU5Conditions.isXAMAVale)
                      //
                      ||
                      //
                      (xEU5Conditions.isXCHMAMCVale &&
                       xEU5Conditions.isXCHMALCVale &&
                       xEU5Conditions.isXLHLLSameInLength)
                      //
                      ||
                      //
                      (xEU5Conditions.isXTDSignalVale &&
                       xEU5Conditions.isXTDBullishVale &&
                       xEU5Conditions.isXLHLLIncreased &&
                       xEU5Conditions.isXLHHHSameInLength)
                      //
                      ||
                      //
                      (xEU5Conditions.isXLHLLIncreased &&
                       xEU5Conditions.isXLHHHSameInLength &&
                       xEU5Conditions.isXLHPriceCrossedUnderSignal)
                      //
                      )
                : true
            //
            )
        //
        &&
        //
        (
            //
            (xEU5Conditions.isXLHPriceUnderSignal ||
             xEU5Conditions.isXLHPriceCrossedUnderSignal)
                ? !(
                      //
                      (xEU5Conditions.isXLHLLSameInLength &&
                       (
                           //
                           (xEU5Conditions.isXCHMALCFastOverSlow &&
                            (xEU5Conditions.isXCHMALCPeak ||
                             xEU5Conditions.isXCHMAMCVale))
                           //
                           ||
                           //
                           (xEU5Conditions.isXCHMAMCPeak &&
                            xEU5Conditions.isXCHMAMCFastOverSlow)
                           //
                           )
                       //
                       )
                      //
                      ||
                      //
                      (xEU5Conditions.isXLHLowAttachedLL &&
                       xEU5Conditions.isXCHLHSameHHs)
                      //
                      ||
                      //
                      (xEU5Conditions.isXLHHHSameInLength &&
                       (
                           //
                           (xEU5Conditions.isXCHMASCOverMin &&
                            xEU5Conditions.isXCHMASCUnderMin)
                           //
                           ||
                           //
                           (xEU5Conditions.isXCHLHSCMCLLSame &&
                            xEU5Conditions.isXCHLHMCLCHHSame)
                           //
                           ||
                           (
                               //
                               (xEU5Conditions.isXLHLLSameInLength &&
                                //
                                (
                                    (xEU5Conditions.isXCHMAMCFastOverSlow &&
                                     xEU5Conditions.isXCHMALCFastOverSlow)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHLHSCMCHHSame &&
                                     xEU5Conditions.isXCHMAMCFastOverSlow)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHLHSCMCLLSame &&
                                     (xEU5Conditions.isXCHLHMCLCHHSame ||
                                      xEU5Conditions.isXCHMALCFastOverSlow))
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMALCVale &&
                                     xEU5Conditions.isXCHMALCTrendsDown &&
                                     xEU5Conditions.isXCHMALCFastUnderSlow)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMALCVale &&
                                     xEU5Conditions.isXCHMALCTrendsDown &&
                                     xEU5Conditions.isXCHMALCFastUnderSlow)
                                    //
                                    )
                                //
                                )
                               //
                               ||
                               //
                               ((xEU5Conditions.isXTDSignalVale &&
                                 xEU5Conditions.isXTDBullishVale)
                                //
                                ||
                                //
                                (xEU5Conditions.isXCHLHSCMCLLSame &&
                                 xEU5Conditions.isXCHMALCFastOverSlow))
                               //
                               ||
                               //
                               (xEU5Conditions.isXCHMAMCPeak &&
                                xEU5Conditions.isXCHMAMCFastOverSlow)
                               //
                               ||
                               //
                               (xEU5Conditions.isXCHLHSCMCLLSame &&
                                xEU5Conditions.isXLHLowAttachedLL)
                               //
                               ||
                               //
                               (xEU5Conditions.isXCHMALCVale &&
                                (
                                    //
                                    xEU5Conditions.isXCHMAMCVale
                                    //
                                    ||
                                    //
                                    xEU5Conditions.isXCHMASCFastOverSlow
                                    //
                                    )
                                //
                                )
                               //
                               ||
                               //
                               xEU5Conditions.isXCHLHSameLLs
                               //
                               ||
                               //
                               (xEU5Conditions.isXAMAVale &&
                                xEU5Conditions.isXCHMALCPeak &&
                                xEU5Conditions.isXCHLHSCMCLLSame &&
                                xEU5Conditions.isXCHLHMCLCHHSame)
                               //
                               )
                           //
                           ||
                           //
                           (xEU5Conditions.isXCHMALCVale &&
                            xEU5Conditions.isXCHMALCTrendsDown &&
                            xEU5Conditions.isXCHMALCFastUnderSlow)
                           //
                           ))
                      //
                      ||
                      //
                      (xEU5Conditions.isXLHLLIncreased &&
                       xEU5Conditions.isXCHMASCFastOverSlow &&
                       xEU5Conditions.isXCHMAMCFastOverSlow &&
                       xEU5Conditions.isXRSICrossedOverLongExit &&
                       xEU5Conditions.isXLHPriceCrossedUnderSignal)
                      //
                      )
            : xEU5Conditions.isXLHPriceInSignalRange
                ? (
                      //
                      (
                          xEU5Conditions.isXLHHHSameInLength
                              ? !(
                                    //
                                    xEU5Conditions.isXCHLHSameLLs
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMASCVale &&
                                     xEU5Conditions.isXCHMALCVale)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMAMCVale &&
                                     xEU5Conditions.isXCHMALCVale)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXTDSignalVale ||
                                     xEU5Conditions.isXLHLLSameInLength)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMAMCPeak &&
                                     xEU5Conditions.isXCHMALCPeak &&
                                     xEU5Conditions.isXLHHHIncreased &&
                                     xEU5Conditions.isXCHLHMCLCHHSame)
                                    //
                                    ||
                                    //
                                    (xEU5Conditions.isXCHMALCVale &&
                                     ((xEU5Conditions.isXCHMAMCTrendsUp &&
                                       xEU5Conditions.isXCHMAMCFastOverSlow)
                                      //
                                      ||
                                      //
                                      (xEU5Conditions.isXCHMALCTrendsDown &&
                                       xEU5Conditions.isXCHMALCFastUnderSlow)
                                      //
                                      ))
                                    //
                                    )
                              : true
                          //
                          )
                      //
                      )
            : (xEU5Conditions.isXLHPriceOverSignal ||
               xEU5Conditions.isXLHPriceCrossedOverSignal)
                ? !(
                      (xEU5Conditions.isXCHMAMCPeak &&
                       xEU5Conditions.isXCHMALCPeak)
                      //
                      ||
                      //
                      (xEU5Conditions.isXLHHHSameInLength &&
                       (
                           //
                           xEU5Conditions.isXLHLLSameInLength
                           //
                           ||
                           //
                           (xEU5Conditions.isXCHMAMCPeak &&
                            xEU5Conditions.isXCHMALCVale &&
                            xEU5Conditions.isXCHMAMCTrendsUp &&
                            xEU5Conditions.isXCHMAMCFastOverSlow)
                           //
                           )
                       //
                       )
                      //
                      ||
                      //
                      (xEU5Conditions.isXLHLLSameInLength &&
                       (
                           //
                           xEU5Conditions.isXFICrossedUnderZero
                           //
                           ||
                           //
                           xEU5Conditions.isXTDBullCrossedUnderBear
                           //
                           ||
                           //
                           (xEU5Conditions.isXCHMAMCPeak &&
                            xEU5Conditions.isXCHMAMCFastOverSlow)
                           //
                           ||
                           //
                           (xEU5Conditions.isXCHMASCOverMax &&
                            xEU5Conditions.isXCHMASCUnderMax)
                           //
                           ))
                      //
                      )
                : true
            //
            )
        //
        &&
        //
        !(
            //
            xEU5Conditions.isXCHMAMCPeak &&
            xEU5Conditions.isXCHMALCPeak &&
            xEU5Conditions.isXLHHHIncreased &&
            xEU5Conditions.isXLHHHSameInLength &&
            xEU5Conditions.isXLHPriceInSignalRange &&
            xEU5Conditions.isXTSCurrentCrossedUnderFarest
            //
            )
        //
        ;

    //
    return result;
}
