Library · Pine Script v5 · Library

AlertSenderLibrary TradingFinder

by alvinng214· code credited to TFlab

This Pine Script library provides a standardized function to format and send custom trade alerts.

View on GitHub

GitHub stars2on the repository
Pine versionv5runs as is
Lines of code117
Settings0inputs
LicenceNone statedfile: MPL-2.0
Last update2 months ago5 Aug 2026

Add It to Your TradingView Chart

  1. 1Copy the scriptPress Copy script above, or the copy button on the code below.
  2. 2Open the Pine EditorOpen a TradingView chart and choose Pine Editor at the bottom of the screen.
  3. 3Paste over the templateCreate a new library, select all of the template text and paste. Press Save and give it a name.
  4. 4Publish or import itA library draws nothing. Publish it from the editor, then import its functions in your own scripts.

Source Code

117 lines of Pine Script v5 from ICT Balanced Price Range [TradingFinder] BPR FVG + IFVG/TFlabAlertSenderLibrary_TradingFinder1.txt, published under MPL-2.0 (file header). Keep the author's credit and licence lines when you reuse it.

TFlabAlertSenderLibrary_TradingFinder1.txt
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TFlab
//@version=5
// @description TODO: add library description here
library("AlertSenderLibrary_TradingFinder" , overlay = true)


export AlertSender (bool Condition, string Alert, string AlertName, string AlertType, string DetectionType , string SetupData , string Frequncy, string UTC ,string MoreInfo, string Message ,
     float o, float h, float l, float c , float Entry , float TP, float SL ,float Distal, float Proximal ) =>
    bool condition       = Condition
    string alert         = Alert
    string alertname     = AlertName
    string message       = Message
    string alerttype     = AlertType
    string frequncy      = Frequncy 
    string detectiontype = DetectionType
    string moreinfo      = MoreInfo
    float O = o
    float H = h
    float L = l
    float C = c    
    float entry = Entry
    float tp = TP
    float sl = SL
    Time = str.format_time(time, "    yy-MM-dd \n    HH:mm:ss", UTC) 



    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    string Type = if detectiontype == 'Signal' or detectiontype == 'Order Block Signal' or  detectiontype == 'Setup'                           //
        if alerttype == 'Bullish'                                                                                                              // 
            'Long ' + detectiontype                                                                                                            //
        else if alerttype == 'Bearish'                                                                                                         //
            'Short ' + detectiontype                                                                                                           //
    else                                                                                                                                       //
        alerttype+ ' ' +detectiontype                                                                                                          //
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 


    /////////////////////////////////////////////////////////////
    tf = timeframe.period                                      //
    tfcalculator =if str.contains(tf, 'S')                     //
        if  tf == 'S'                                          //
            ' 1 Second'                                        //
        else                                                   //
            str.substring(tf, 0,str.length(tf)-1) + ' Seconds' //
    else if str.contains(tf, 'D')                              //
        if tf == 'D'                                           //
            ' Daily'                                           //
        else                                                   //  
            str.substring(tf, 0,str.length(tf)-1) + ' Days'    //
    else if str.contains(tf, 'W')                              //
        if tf == 'W'                                           //
            ' Weakly'                                          //
        else                                                   //
            str.substring(tf, 0,str.length(tf)-1) + ' Weaks'   //
    else if str.contains(tf, 'M')                              //
        if tf == 'M'                                           //
            ' Monthly'                                         //
        else                                                   //
            str.substring(tf, 0,str.length(tf)-1) + ' Months'  //
    else if str.contains(tf, '')                               //
        if str.tonumber(tf) < 60                               //
            if tf == '1'                                       //
                '1 Minute'                                     //
            else                                               //
                tf + ' Minutes'                                //
        else if str.tonumber(tf) >= 60                         //
            if  tf == '60'                                     //
                ' 1 Hour'                                      //
            else                                               //
                str.tostring(str.tonumber(tf) / 60) + ' Hours' //
    /////////////////////////////////////////////////////////////


    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    messagetext   = if MoreInfo == 'Off'                                                                                                             
        '⏰Alert Name: ' + alertname + '\n‼️Alert Type: ' + Type  + '\n🔠Symbol: ' + syminfo.ticker + '\n📈Time Frame: ' + tfcalculator                
         +  '\n📩Message: ' + message                                                                                                                 
    else if MoreInfo == 'On'                                                                                                                          
        if DetectionType == 'Order Block Signal'                                                                                                      
            '⏰Alert Name: ' + alertname + '\n‼️Alert Type: ' + Type  + '\n🔠Symbol: ' + syminfo.ticker + '\n📈Time Frame: ' + tfcalculator +          
             '\n🕘Time:' + '\n' + Time +                                                                                                               
             '\n🧮Zone Price =>' + '\n     Distal:' + str.tostring(Distal) + '\n     Proximal:' + str.tostring(Proximal)  + '\n📩Message: ' + message  
        else if DetectionType == 'Signal'                                                                                                               
            '⏰Alert Name: ' + alertname + '\n‼️Alert Type: ' + Type  + '\n🔠Symbol: ' + syminfo.ticker + '\n📈Time Frame: ' + tfcalculator +          
             '\n🕘Time:' + '\n' + Time +                                                                                                              
             '\n🧮market price =>' + '\n     Open:' + str.tostring(O) + '\n     High:' + str.tostring(H)  + 
             '\n     Low:' + str.tostring(L) + '\n     Close:' + str.tostring(C)  +'\n📩Message: ' + message 
        else if DetectionType == 'Setup'
            if SetupData == 'Full'     
                '⏰Alert Name: ' + alertname + '\n‼️Alert Type: ' + Type  + '\n🔠Symbol: ' + syminfo.ticker + '\n📈Time Frame: ' + tfcalculator +          
                 '\n🕘Time:' + '\n' + Time +                                                                                                              
                 '\n🧮Setup Price Data =>' + '\n     Entry:' + str.tostring(entry) + '\n     Stop Loss:' + str.tostring(sl)  + 
                 '\n     Take Profit:' + str.tostring(tp)  +'\n📩Message: ' + message 
            else if SetupData == 'Basic'
                '⏰Alert Name: ' + alertname + '\n‼️Alert Type: ' + Type  + '\n🔠Symbol: ' + syminfo.ticker + '\n📈Time Frame: ' + tfcalculator +          
                 '\n🕘Time:' + '\n' + Time +                                                                                                              
                 '\n🧮Setup Price Data =>' + '\n     Entry:' + str.tostring(O) +'\n📩Message: ' +  message 
        else if DetectionType == 'Analysis'                                                                                                             
            '⏰Alert Name: ' + alertname + '\n‼️Alert Type: ' + Type  + '\n🔠Symbol: ' + syminfo.ticker + '\n📈Time Frame: ' + tfcalculator                
             +  '\n📩Message: ' + message 
        else                                                                                                                                          
            '⏰Alert Name: ' + alertname + '\n‼️Alert Type: ' + Type  + '\n🔠Symbol: ' + syminfo.ticker + '\n📈Time Frame: ' + tfcalculator +         
             '\n🕘Time:' + '\n' + Time +  '\n📩Message: ' + message                                                                                   
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    

    if alert == 'On'
        if condition
            if frequncy == 'All'
                alert(messagetext,  alert.freq_all )
            if frequncy == 'Once Per Bar'
                alert(messagetext,  alert.freq_once_per_bar )     
            if frequncy == 'Once Per Bar Close'
                alert(messagetext,  alert.freq_once_per_bar_close )

Overview

AlertSenderLibrary TradingFinder processes incoming parameters such as trade direction, setup types, chart timeframe, and price levels including entry, take profit, and stop loss. The library formats these inputs alongside formatted timestamp strings to trigger structured webhook or message alerts for external integration. It does not plot shapes or lines directly on the price chart.

Details

Published by

alvinng214 on GitHub

Code credit

TFlab, as written in the script's header

Type

Library, Pine Script v5

Draws

Library (no plots)

Markets

Any symbol

Timeframes

Any timeframe

Risk Notes

No repainting, lookahead or stacked entries were found in its code or README. That says nothing about how well it works: test it first.

Third-party code. ForexR did not write, test or endorse this script, and the summary above was generated automatically from its code and README. Indicators describe the past, and a strategy's backtest can look better than live trading, especially when a script repaints. Check it in the Strategy Tester and on a demo account before you rely on it.

Similar Pine Scripts

FunctionLinearRegression

by ricardosantos79
261 stars

This Pine Script v5 library provides functions to calculate and plot linear regression channels using sample point arrays. It evaluates paired X and Y arrays to calculate the regression slope, intercept, fitted values, maximum deviation, minimum deviation, and

Library v5 Trend
Updated 4 years ago · None stated GitHub repository of FunctionLinearRegression

PositionSizing

by iamrichardD
57 stars

This Pine Script v6 library calculates trade position sizes and provides risk management functions for external scripts. It computes position sizes from account equity, percentage risk, and stop-loss distance, and offers dynamic sizing adjustments based on vol

Library v6
Updated 1 year ago · Apache-2.0 GitHub repository of PositionSizing

Chart Patterns

by deepentropy
13 stars

Chart Patterns is a Pine Script v6 library designed to scan for and render technical chart patterns directly on the price chart. It defines custom user-defined types to configure scanning parameters, such as Zigzag pivot offsets, error ratios, flat ratios, and

Library v6 Repaints
Updated 6 months ago · MIT GitHub repository of Chart Patterns

AuthLib

by alboogycOdR
6 stars

AuthLib is a Pine Script utility library providing access control and state management structures for technical indicators. It checks callers against a hardcoded array of authorized TradingView usernames before executing operations. The library exports user-de

Library v5 SMC / ICT / price actionSessions & time
Updated 7 months ago · None stated GitHub repository of AuthLib

WebhookMessageLibrary

by TradersPost
6 stars

WebhookMessageLibrary is a helper library designed to construct structured JSON payload messages for automated trading integrations like TradersPost. It defines custom exported types and constants for trade actions, market sentiments, quantities, limit prices,

Library v5
Updated 1 year ago · None stated GitHub repository of WebhookMessageLibrary

PineDraw

by 345-strategies
5 stars

PineDraw is a Pine Script v6 library that provides object primitives for drawing and updating price levels on the chart. It enables indicators and strategies to maintain lines, boxes, and labels in place by updating existing objects instead of deleting and rec

Library v6 Support & resistance
Updated 2 days ago · MPL-2.0 GitHub repository of PineDraw

More libraries

Trade Your Charts With a Regulated Broker

Compare brokers that connect to TradingView, with spreads, minimum deposits and leverage side by side.

Compare brokers