Category Other  Published on 09/11/2017

SK1 - 28 Pairs Volatility -

Description

 

(revised : 09-Nov-2017)

Hi,

this cBot displays 28 Pairs under their MAJOR PAIR.   It shows which Pair is Volatile by comparing :

the 1-min candle (user can change it), total Pips between High and Low   

vs

with  15-min (user can change it) ATR value (in pips).

If a 1-min Pips Value is higher then the 15-min ATR.  It changes color and sounds the alarm.  You can turn "ON" the sound but it makes it very irritating.

No need to change any user-input settings.   This cBOT is also like a template and can be used to display a lot of more information and can be easily converted into a TRADING cBOT.

 

 Let me know if any other information you want to add; like Bollingerbands Signal on 1hr or 4 hr or show Spread also....    all can be done.

Please leave your comments down below. 

Thank you

///S.Khan

 



////////////////////////////////////////////////////////////////////////////////////////////////////////////////

using System.Globalization;
using System.IO;
using System.Threading;
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;


namespace cAlgo
{
    [Robot(TimeZone = TimeZones.WEuropeStandardTime, AccessRights = AccessRights.FullAccess)]

    public class SK1_Volatality_28Pairs : Robot
    {

        ////////////////////////////////////////////////////////////////////////////
        ////----                 USER INPUT         ----////////////////////////////
        ////////////////////////////////////////////////////////////////////////////

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>>>    CBOT : 28-Pair Volatility    <<<<<<<")]
        public string t_cBOTNAME2 { get; set; }

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>>>    C#1. ENTRY CRITERIA    <<<<<<<")]
        public string t_EC_Msg001 { get; set; }

        [Parameter("0. Manual(1) or Auto Start(0) : ", DefaultValue = "0", MinValue = 0, MaxValue = 1)]
        public int p_Manually_Start { get; set; }

        //----------

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>>>    C#2. MANAGE TRADES    <<<<<<<<")]
        public string t_MT_Msg001 { get; set; }

        [Parameter("1a. Scale-IN - ON(1), OFF(0)", DefaultValue = 1, MinValue = 0, MaxValue = 1)]
        public int p_SCALE_IN_ON_OFF { get; set; }

        //----------

        [Parameter("2a. No of Max. Pos to Open", DefaultValue = 6, MinValue = 0, MaxValue = 20)]
        public int p_SI_Max_No_of_Pos { get; set; }

        //----------

        [Parameter("3a. TRAILING STOP LOSS - ON(1), OFF(0)", DefaultValue = 1, MinValue = 0, MaxValue = 1)]
        public int p_Trailing_SL_ON_OFF { get; set; }

        //----------

        [Parameter("4a. PIPS BREAK-EVEN - ON(1), OFF(0)", DefaultValue = 1, MinValue = 0, MaxValue = 1)]
        public int p_Break_Even_SL_ON_OFF { get; set; }

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>>>    C#4. CONTROL STRATEGIES    <<<<<<<")]
        public string t_Msg_10 { get; set; }

        [Parameter("1. Max. No of Positions to be opened : ", DefaultValue = 20, MinValue = 10, MaxValue = 100)]
        public int p_Max_No_of_Positions_to_Open { get; set; }

        //----------

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>>>    SETTINGS BUY SELL VOL    <<<<<<<")]
        public string temp01 { get; set; }

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>>>    C#3. EXIT STRATEGIES    <<<<<<<")]
        public string t_ES_Msg001 { get; set; }

        [Parameter("1a. Equity Manager (0)No, (1)Yes", DefaultValue = 1, MinValue = 0, MaxValue = 1)]
        public int p_Equity_Manager { get; set; }

        [Parameter("2a. (Single Pair) PROFIT Lock_IN (0)No, (1)Yes", DefaultValue = 1, MinValue = 0, MaxValue = 1)]
        public int p_LOCK_IN_PORIFT_ON_OFF { get; set; }

        [Parameter("3a. Close Single Pair, if Target NET PL Reached.  ON(1), OFF(0)", DefaultValue = 1, MinValue = 0, MaxValue = 1)]
        public int p_Target_NETPL_ON_OFF { get; set; }

        //----------

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>>>    C#5. OTHER SETTINGS    <<<<<<<")]
        public string t_OS_Msg001 { get; set; }

        //----------

        [Parameter("1. Timer Sec", DefaultValue = 5, MinValue = 0)]
        public int p_TimerSec { get; set; }

        [Parameter("2. Volitality, Time Frame", DefaultValue = "Minute15")]
        public TimeFrame p_Volitality_TF_01 { get; set; }

        [Parameter("3. ATR, Time Frame", DefaultValue = "Hour4")]
        public TimeFrame p_ATR_TF_01 { get; set; }

        [Parameter("4. ATR, Period", DefaultValue = 4, MinValue = 2, MaxValue = 300)]
        public int p_ATR_Period { get; set; }

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>  TRADING TIME BASED ON UTC +0   <<<<")]
        public string t_TTBMsg001 { get; set; }

        [Parameter("1. Enable Trading Time (1)ON,  (0)OFF", DefaultValue = 1, MinValue = 0, Step = 1, MaxValue = 1)]
        public int p_Trading_Time_ON_OFF { get; set; }

        //////-------------------------------------------------------
        //////-------------------------------------------------------

        [Parameter(">>>>>    ALERTS    <<<<<")]
        public string t_Msg0019 { get; set; }

        [Parameter("1. Sound Alerts (1)ON,  (0)OFF", DefaultValue = 0, MinValue = 0, Step = 1, MaxValue = 1)]
        public int p_Sound_ALerts_ON_OFF { get; set; }

        [Parameter("Media File", DefaultValue = "c:\\windows\\media\\ringout.wav")]
        public string p_MediaFile { get; set; }

        [Parameter("")]
        public string t_Blan08 { get; set; }

        ////----   END OF USER INPUT   ----////


        ////////////////////////////////////////////////////////////////////////////
        ////----   GLOBAL VARIABLES       ----//////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////


        ///----------------------------------------------------
        ///----   MARGIN LEVELS                ----------------
        ///----   FOR NEW TRADES
        private int p_Min_Margin_Level_01 = 1100;
        ///----   FOR ADDITIONAL TRADES
        private int p_Min_Margin_Level_02 = 700;


        ///---   USED IN DISPLAYING MOVING STATUS
        private int Count_Timer = 1;

        ///----------------------------------------------------
        ///----   DISPLAY FIX VALUES           ----------------
        int St_Line_No = 0, St_Col_No = 0;
        ////----   FOR MAJOR PAIRS LISTING ALL 56 PAIRS
        private int Col_Offset = 8;
        private int Line_Offset = 4;


        ///----------------------------------------------------
        ////----   COLORS            --------------------------
        private Colors Clr_Bk_1 = Colors.DimGray;

        private Colors Clr_Heading_1 = Colors.LightPink;
        private Colors Clr_Heading_2 = Colors.LightSeaGreen;
        private Colors Clr_Heading_3 = Colors.Tomato;

        private Colors Clr_PairListing = Colors.DarkOrange;

        private Colors Clr_Positive = Colors.CornflowerBlue;
        private Colors Clr_Negative = Colors.IndianRed;

        private Colors Clr_True = Colors.LimeGreen;
        private Colors Clr_False = Colors.Crimson;

        private Colors Clr_Signal_Buy = Colors.CornflowerBlue;
        private Colors Clr_Signal_Sell = Colors.Yellow;

        private Colors Clr_Value_01 = Colors.DimGray;
        private Colors Clr_Value_02 = Colors.AliceBlue;

        private Colors Clr_Border_01 = Colors.LightGray;
        private Colors Clr_Border_02 = Colors.SlateGray;

        private Colors Clr_Signal_Hold = Colors.OrangeRed;
        private Colors Clr_Signal_Ntrl = Colors.DimGray;

        private Colors Clr_Warning = Colors.MediumVioletRed;


        ///----------------------------------------------------
        ///---  RECORD HOUR, DAY, WEEK, MONTH    --------------
        private int Hour_01 = 0;
        private int Hour_02 = 0;
        private int Day_01 = 0;
        private int Day_02 = 0;
        private int Week_01 = 0;
        private int Week_02 = 0;
        private int Month_01 = 0;
        private int Month_02 = 0;

        ///----------------------------------------------------
        ///---  FLAG TO DISABLE TRADING          --------------
        private bool Flag_Trading_Till_Next_Hr = true;
        private bool Flag_Trading_Till_Next_Dy = true;
        private bool Flag_Trading_Till_Next_Wk = true;

        ///----------------------------------------------------
        ///---   FLAG ONE TIME              -------------------
        private bool Flag_One_Time_01 = false;

        ///----------------------------------------------------
        ///---  EXCLUSIVE METHOD CONTROL FLAGS        ---------
        private bool Flag_isExecuting_01 = false;
        private bool Flag_isExecuting_02 = false;
        private bool Flag_isExecuting_03 = false;
        private bool Flag_isExecuting_04 = false;
        private bool Flag_isExecuting_05 = false;
        private bool Flag_isExecuting_06 = false;

        private bool Flag_isExecuting_10 = false;
        private bool Flag_isExecuting_11 = false;
        private bool Flag_isExecuting_12 = false;
        private bool Flag_isExecuting_13 = false;
        private bool Flag_isExecuting_14 = false;

        private bool Flag_isExecuting_20 = false;
        private bool Flag_isExecuting_21 = false;
        private bool Flag_isExecuting_22 = false;
        private bool Flag_isExecuting_23 = false;



        ///----------------------------------------------------
        ///---  8 MAJOR PAIRS :               -----------------
        private string[] MP_Main_Heading;
        private string[,] MP_Sub_Heading;
        private string[,] MajorP_of_28Pair;
        private string[,] MajorPair_Symbol;
        private int[,] Base_Currency;

        ///----------------------------------------------------
        ///---   28 PAIRS :                    ----------------
        private double[] All_28_Pair_Pip_Size;
        private double[] All_28_Pair_Pip_Value;
        private double[] All_28_Pair_Margin;
        private string[] All_28_Pair_Symbol_Code;

        private double[] All_28_Pair_Ask_Price;
        private double[] All_28_Pair_Bid_Price;


        ///----------------------------------------------------
        ///---   A/C BALANCE AND EQUITY        ----------------
        private double Start_Equity = 0;

        ///----------------------------------------------------
        ///---   TODAY's DATE            ----------------------
        private string Todays_Date = "";
        private bool Trading_Time = false;


        ///----------------------------------------------------
        ///---   POSITION DETAILS         ---------------------

        ///---   LABELS
        private string Label_1st_Buy = "1st_Buy";
        //private string Label_Buy_SI = "Buy_SI";
        private string Label_1st_Sell = "1st_Sell";
        //private string Label_Sell_SI = "Sell_SI";


        ///---  PIP COST
        private int Total_Account_Pos_Count = 0;

        ///---  FLAGS FOR A/C MARGINS
        bool Flag_Acc_Margin_Level_01 = false;
        bool Flag_Acc_Margin_Level_02 = false;


        ///--------------------------------------------------
        ///---   MARKET PRICES            -------------------
        MarketSeries[] MrktSries_Price_01_min;
        MarketSeries[] MrktSries_Price_15min;
        private double[] All_28_Pair_Daily_Candle_High_Price;
        private double[] All_28_Pair_Daily_Candle_Low_Price;
        private double[] All_28_Pair_Volitality;
        private double[] All_28_Pair_15min_Pips;
        private double[] All_28_Pair_Tick_Volume;


        ///--------------------------------------------------
        ///---   INDICATORS               -------------------

        ///---  28 PAIRS ATR
        private AverageTrueRange[] Indi_ATR_28P_15mins;
        private MarketSeries[] MrktSeries_ATR_15mins;
        private double[] All_28P_ATR_Value_15mins;

        ///-  8 MAJOR PAIR TOTAL PIPS / ATR INDICATOR
        MarketSeries[] MrktSries_Price_01_Hour;
        MarketSeries[] MrktSries_Price_04_Hour;
        private Indicators.MajorPair_Total_Pips_Single_Pair_ATR[] Indi_MP_ATR_1Hour;
        private Indicators.MajorPair_Total_Pips_Single_Pair_ATR[] Indi_MP_ATR_4Hour;
        private double[] All_28P_TPIPS_ATR_Val_Hour;
        private double[] All_28P_TPIPS_ATR_Val_4Hour;


        ////----  END OF GLOBAL VARIABLES   ----////


        ////////////////////////////////////////////////////////////////////////////
        ////----   ON START         ----////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        protected override void OnStart()
        {
            ///---  DISPLAY START DATE AND TIME
            string t_Date = string.Format("{0:ddd-d-MMMM-y,h:mm tt}", Server.Time);
            Print("cBOT Start Date & Time : " + t_Date);
            Print("");

            /// INITIALIZE TIMER ON EVERY x SECONDS
            Timer.Start(p_TimerSec);

            ///-------------------------------------------------------------------
            ///--- DISPLAY CBOT NAME and USER INPUT VALUES ON CHART   ------------
            Display_BOT_NAME();
            Print("1/8  OnStart. Display User Input Values on Chart");
            Display_Input_Values_OnChart();

            ///--------------------------------------------------
            ///---  SET THE LABEL OF THE CBOT  ------------------

            ///---------------------------------------
            ///---  ARRAYS    ------------------------
            Print("2/8  OnStart. Declaring & Initializing Arrays");
            Declare_All_Arrays();
            Initialize_Array_OnStart_Only();

            ///---------------------------------------
            ///---  INITIALIZE INDICATORS    ---------
            Print("3/8  OnStart. Initializing INDICATORS");
            Initialize_Indicators();

            ///-----------------------------------------------------------------
            ///---  RESET DATA ON START AND ON CHANGE OF TIME    ---------------
            Print("4/8  OnStart. Get Pos Count, Vol, PipCost and Resetting of Arrays to 0");
            Get_Positions_Count_Volume_PipCost();
            Reset_Arrays_on_Day_Change();

            ///---------------------------------------
            ///---   SET FEW DEFAULT VALUES   --------
            Print("5/8  OnStart. Set Few Default Values on Start of cBOT");
            Set_Few_Default_Value_On_Start();

            ///---------------------------------------
            ///---  GET METHOD DATA    ---------------
            Print("6/8  OnStart. Call of Methods that will Run on Bar");
            Update_Methods_Data_OnBAR();

            ///---  CALL ONCE THIS MEHTOD ON START 
            Print("7/8  OnStart. Update Values on Timer Function");
            Upate_Dynamic_Values_On_Timer();


            ///---  DISPLAY ROW COL   AND   COLORS LIST ON CHARTS
            Print("8/8  OnStart. Draw on Screen : Row, col, Colors, Table");
            Display_RowColumn();
            Display_Color_Test();

            ///---  WRITE DATA IN CSV FORMAT   ---------
            // if (p_Flag_Create_CSV_File == true)
            //    Write_To_CSV_File();

            ///---  DRAW TABLE 
            Display_TABLE();

            ///---  UPDATE WAIT FOR BUY OR SELL SIGNAL   ---------
            //OnStart_Change_in_ATR_Buy_Sell_Signal();

            // ----------------------------------------------


        }
        //END METHOD OnStart()

        ////////////////////////////////////////////////////////////////////////////
        ////----   ON BAR           ----////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        protected override void OnBar()
        {
            ///---  METHOD EXCLUSIVE CONTROL FLAG
            if (Flag_isExecuting_01 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_01 = true;

                Print("OnBar. UPDATE METHODS DATA ON_BAR");
                ///-------------------------------
                ///---  GET METHOD DATA  ---------
                Update_Methods_Data_OnBAR();

                ///--- RESET THE FLAG
                Flag_isExecuting_01 = false;
            }
            //END if (Flag_isExecuting_01 == false)

        }
        //END METHOD OnBar()


        ////////////////////////////////////////////////////////////////////////////
        ////----   ON TICK           ----///////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        protected override void OnTick()
        {
            ///---    METHOD EXCLUSIVE CONTROL FLAG 
            ///---  ONBAR AND ONTICK DON'T EXECUTE TOGETHER
            if (Flag_isExecuting_01 == false)
            {
                // METHOD EXCLUSIVE CONTROL FLAG ---------------------------
                if (Flag_isExecuting_02 == false)
                {
                    // SET THE FLAG
                    Flag_isExecuting_02 = true;


                    // RESET THE FLAG
                    Flag_isExecuting_02 = false;
                }
                //END if (Flag_isExecuting_02 == false)
            }
            //END IF    
        }
        //END METHOD OnTick()

        ////////////////////////////////////////////////////////////////////////////
        ////----   ON   TIMER          ----/////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        protected override void OnTimer()
        {
            ///---   METHOD EXCLUSIVE CONTROL FLAG 
            ///---   ONBAR AND ONTIMER DON'T EXECUTE TOGETHER
            if (Flag_isExecuting_01 == false)
            {
                // METHOD EXCLUSIVE CONTROL FLAG ---------------------------
                if (Flag_isExecuting_03 == false)
                {
                    // SET THE FLAG
                    Flag_isExecuting_03 = true;

                    ///---   START REFRESHING / UPDATING
                    Draw_OnChart_C2("DBN134", 1, (1 + Count_Timer), Count_Timer.ToString() + "." + "Updating", Clr_True);

                    Print("OnTimer:  Upate Dynamic Values On_Timer ");

                    ///---  METHOD TO CALL OTHER METHODS
                    Upate_Dynamic_Values_On_Timer();

                    // INC THE COUNT
                    Count_Timer += 1;

                    // RESET THE FLAG
                    Flag_isExecuting_03 = false;
                }
                //END IF (Flag_isExecuting_03 == false)
            }
            //END IF

            if (Count_Timer == 4)
                Count_Timer = 1;


        }
        //End FUNCTION On_Timer

        ////////////////////////////////////////////////////////////////////////////
        ////----   ON STOP           ----///////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        protected override void OnStop()
        {


            //BLANK LINE
            Print("");
            Print("Method : OnStop() '':   Date & time : " + Server.Time);
        }
        //END METHOD OnStop()

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    TEST_FUNCTION                                        ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Test_Function()
        {
            // Put your core logic here
        }
        ////----  END METHOD Test_Function()


        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----     Display_28_Pair_Pairs_Name_01                                         ----////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_28_Pair_Pairs_Name_01(int t_Row, int t_Col)
        {
            int t_Line_no = 0, t_Col_no = 0;
            Colors t_Clr = Clr_Signal_Ntrl;
            Symbol t_Symbol;
            string tstr_Symbol_Code;


            // COPY ROW COL POSITION 
            t_Line_no = t_Row;
            t_Col_no = t_Col - 2;
            //t_Offset = 2;

            ///---   TABLE HEADING
            // HEADINGS ---------------------
            Draw_OnChart_C1("D28PEV01", t_Line_no - 3, t_Col_no + 0, "", Clr_Value_01);
            Draw_OnChart_C1("D28PEV01", t_Line_no - 2, t_Col_no + 0, "Pair", Clr_Heading_1);
            Draw_OnChart_C1("D28PEV01", t_Line_no - 1, t_Col_no + 0, "Name", Clr_Heading_1);

            //LOOP FOR 28 PAIRS
            for (int i = 0; i < 28; i++)
            {
                t_Clr = Clr_Signal_Ntrl;

                // GET SYMBOL
                t_Symbol = Get_28Pair_Symbol(i);
                tstr_Symbol_Code = t_Symbol.Code.ToString();

                ///---  SET THE COLOR

                // PAIR NAME 
                Draw_OnChart_C1("D28PEV01", t_Line_no, t_Col_no + 0, (i + 1).ToString("0") + ". " + tstr_Symbol_Code, t_Clr);

                ///INC ROW 
                t_Line_no += 1;
                ///--  EXTRA ROW
                if (i == 6 || i == 12 || i == 17 || i == 21 || i == 24)
                    t_Line_no += 1;
            }
            //END FOR
        }
        ////----  END METHOD     Display_28_Pair_Pairs_Name_01()


        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----     Display_Heading_All_MajorPair_AND_Sub_Pair                          ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Heading_All_MajorPair_AND_Sub_Pair(int t_Row, int t_Col)
        {
            int t_index = 0;
            int t_Line_no = 0, t_Col_no = 0;
            string tstr_Symbol_Code = "", tstr_Pair = "", tstr_MP = "";

            // COPY ROW COL POSITION 
            t_Line_no = t_Row;
            t_Col_no = t_Col;
            //t_Offset = 2;

            // LOOP FOR 8-MAJOR PAIRS
            for (int i = 0; i < 8; i++)
            {
                // MAJOR PAIR NAME ABOVE 7-SUB PAIR NAMES
                tstr_MP = MP_Main_Heading[i];
                Draw_OnChart_C1("DH8MP01", t_Line_no - 1, t_Col_no, (i + 1).ToString("0") + "." + tstr_MP, Clr_Heading_2);

                // LOOP FOR 7-TIME FRAME   
                for (int j = 0; j < 7; j++)
                {
                    // GET PAIR SYMBOL CODE
                    tstr_Symbol_Code = MajorPair_Symbol[i, j];

                    // MEHTOD TO FIND THE SEARCH INDEX
                    t_index = Return_Pair_Index_Position(tstr_Symbol_Code);

                    //GET SUB-PAIR DISPLAY NAME
                    tstr_Pair = MP_Sub_Heading[i, j];
                    Draw_OnChart_C1("DH8MP01", t_Line_no, t_Col_no, tstr_Pair, Clr_PairListing);

                    ///INC ROW 
                    t_Line_no += 1;
                }
                //END FOR
                Draw_OnChart_C1("DH8MP01", t_Line_no, t_Col_no + 1, "TOTAL", Clr_Heading_2);

                ///INC ROW 
                t_Line_no += Line_Offset;

                // SHIFT COL AND RESET ROW 
                if (i == 3)
                {
                    t_Col_no += Col_Offset;
                    t_Line_no = t_Row;
                }
                //END IF
            }
            //END FOR
        }
        ////----  END METHOD Display_Heading_All_MajorPair_AND_Sub_Pair()

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----               Display_Volitatlity_and_ATR                               ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Volitatlity_and_ATR(int t_Row, int t_Col)
        {
            int t_index = 0;
            int t_Line_no = 0, t_Col_no = 0;
            string tstr_Symbol_Code = "";
            double t_Value_01 = 0, t_Value_02 = 0, t_Value_03 = 0;

            Colors t_Clr_01 = Clr_Value_01, t_Clr_02 = Clr_Value_02;

            // COPY ROW COL POSITION 
            t_Line_no = t_Row;
            t_Col_no = t_Col;
            //t_Offset = 2;

            string str_TF01 = TimeFrameToShortName(p_Volitality_TF_01);
            string str_TF02 = TimeFrameToShortName(p_ATR_TF_01);

            // LOOP FOR 8-MAJOR PAIRS
            for (int i = 0; i < 8; i++)
            {


                //--  1ST COL HEADING
                Draw_OnChart_C1("DH8MP001", t_Line_no - 3, t_Col_no + 0, str_TF01, Clr_Heading_2);
                Draw_OnChart_C1("DH8MP001", t_Line_no - 2, t_Col_no + 0, "Hi-Lo", Clr_Heading_2);
                Draw_OnChart_C1("DH8MP001", t_Line_no - 1, t_Col_no + 0, "Volit", Clr_Heading_2);
                //--  2ND COL HEADING
                Draw_OnChart_C1("DH8MP011", t_Line_no - 3, t_Col_no + 1, "P=" + p_ATR_Period.ToString(), Clr_Heading_2);
                Draw_OnChart_C1("DH8MP011", t_Line_no - 2, t_Col_no + 1, str_TF02, Clr_Heading_2);
                Draw_OnChart_C1("DH8MP011", t_Line_no - 1, t_Col_no + 1, "ATR", Clr_Heading_2);
                //--  3rd HEADING
                Draw_OnChart_C1("DH8MP021", t_Line_no - 2, t_Col_no + 2, str_TF02, Clr_Heading_2);
                Draw_OnChart_C1("DH8MP021", t_Line_no - 1, t_Col_no + 2, "TPips", Clr_Heading_2);



                // LOOP FOR 7-TIME FRAME   
                for (int j = 0; j < 7; j++)
                {
                    // GET PAIR SYMBOL CODE
                    tstr_Symbol_Code = MajorPair_Symbol[i, j];
                    int t_BsQt = Base_Currency[i, j];

                    // MEHTOD TO FIND THE SEARCH INDEX
                    t_index = Return_Pair_Index_Position(tstr_Symbol_Code);

                    // GET VALUES FROM ARRAY
                    t_Value_01 = All_28_Pair_Volitality[t_index];
                    t_Value_02 = All_28P_ATR_Value_15mins[t_index];
                    //  GET THE PIPS +/- VALUE AND MULTIPLY BY BaseQuote
                    t_Value_03 = All_28_Pair_15min_Pips[t_index] * t_BsQt;


                    //Print("i= " + i.ToString() + ",  j= " + j.ToString() + ",  t_index= " + t_index.ToString() + ",  " + tstr_Symbol_Code);

                    // DISPLAY
                    string str_1 = t_Value_01.ToString("0.0");
                    string str_2 = t_Value_02.ToString("0.0");
                    string str_3 = t_Value_03.ToString("0");


                    //  SET DISPLAY COLOR
                    //  since Tick Vol has been normalized by subtracting by the lowest;
                    //  therefore, a value greater then 500 is enough to point out the outstanding pair.
                    if (Math.Abs(t_Value_01) >= t_Value_02 || Math.Abs(t_Value_03) > t_Value_02)
                    {
                        if (t_Value_03 > 0)
                        {
                            t_Clr_01 = Clr_Positive;
                            t_Clr_02 = Clr_Positive;
                        }
                        if (t_Value_03 < 0)
                        {
                            t_Clr_01 = Clr_Negative;
                            t_Clr_02 = Clr_Negative;
                        }
                        //  ALERT/PLAY SOUND
                        Play_Sound_on_Signal();
                    }
                    else
                    {
                        t_Clr_01 = Clr_Value_01;

                        ///  SHOW PIPS COLOR in +ve or -ve color always
                        if (t_Value_03 > 0)
                            t_Clr_02 = Clr_Positive;
                        else
                            t_Clr_02 = Clr_Negative;
                    }


                    Draw_OnChart_C1("DH8MP01", t_Line_no, t_Col_no + 0, str_1, t_Clr_01);
                    Draw_OnChart_C1("DH8MP02", t_Line_no, t_Col_no + 1, str_2, t_Clr_01);
                    Draw_OnChart_C1("DH8MP03", t_Line_no, t_Col_no + 2, str_3, t_Clr_02);



                    ///INC ROW 
                    t_Line_no += 1;
                }
                //END FOR

                ///INC ROW 
                t_Line_no += Line_Offset;

                // SHIFT COL AND RESET ROW 
                if (i == 3)
                {
                    t_Col_no += Col_Offset;
                    t_Line_no = t_Row;
                }
                //END IF
            }
            //END FOR
        }
        ////----  END METHOD  Display_Volitatlity_and_ATR()
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----               Display_Volitatlity_and_ATR_with_TICK_Volume              ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Volitatlity_and_ATR_with_TICK_Volume(int t_Row, int t_Col)
        {
            int t_index = 0;
            int t_Line_no = 0, t_Col_no = 0;
            string tstr_Symbol_Code = "";
            double t_Value_01 = 0, t_Value_02 = 0, t_Value_03 = 0, t_Value_04 = 0;

            Colors t_Clr_01 = Clr_Value_01, t_Clr_02 = Clr_Value_02;

            // COPY ROW COL POSITION 
            t_Line_no = t_Row;
            t_Col_no = t_Col;
            //t_Offset = 2;



            // LOOP FOR 8-MAJOR PAIRS
            for (int i = 0; i < 8; i++)
            {
                //--  1ST COL HEADING
                Draw_OnChart_C1("DH8MP001", t_Line_no - 3, t_Col_no + 0, p_Volitality_TF_01.ToString(), Clr_Heading_2);
                Draw_OnChart_C1("DH8MP001", t_Line_no - 2, t_Col_no + 0, "Hi-Lo", Clr_Heading_2);
                Draw_OnChart_C1("DH8MP001", t_Line_no - 1, t_Col_no + 0, "Volit", Clr_Heading_2);
                //--  2ND COL HEADING
                Draw_OnChart_C1("DH8MP011", t_Line_no - 3, t_Col_no + 1, "P=" + p_ATR_Period.ToString(), Clr_Heading_2);
                Draw_OnChart_C1("DH8MP011", t_Line_no - 2, t_Col_no + 1, p_ATR_TF_01.ToString(), Clr_Heading_2);
                Draw_OnChart_C1("DH8MP011", t_Line_no - 1, t_Col_no + 1, "ATR", Clr_Heading_2);
                //--  3rd HEADING
                Draw_OnChart_C1("DH8MP021", t_Line_no - 2, t_Col_no + 2, p_ATR_TF_01.ToString(), Clr_Heading_2);
                Draw_OnChart_C1("DH8MP021", t_Line_no - 1, t_Col_no + 2, "TPips", Clr_Heading_2);
                //--  4TH HEADING
                Draw_OnChart_C1("DH8MP031", t_Line_no - 2, t_Col_no + 3, p_ATR_TF_01.ToString(), Clr_Heading_2);
                Draw_OnChart_C1("DH8MP031", t_Line_no - 1, t_Col_no + 3, "TK.Vol", Clr_Heading_2);


                // LOOP FOR 7-TIME FRAME   
                for (int j = 0; j < 7; j++)
                {
                    // GET PAIR SYMBOL CODE
                    tstr_Symbol_Code = MajorPair_Symbol[i, j];
                    int t_BsQt = Base_Currency[i, j];

                    // MEHTOD TO FIND THE SEARCH INDEX
                    t_index = Return_Pair_Index_Position(tstr_Symbol_Code);

                    // GET VALUES FROM ARRAY
                    t_Value_01 = All_28_Pair_Volitality[t_index];
                    t_Value_02 = All_28P_ATR_Value_15mins[t_index];
                    //  GET THE PIPS +/- VALUE AND MULTIPLY BY BaseQuote
                    t_Value_03 = All_28_Pair_15min_Pips[t_index] * t_BsQt;
                    // TICK VOL COUNT
                    t_Value_04 = All_28_Pair_Tick_Volume[t_index];


                    //Print("i= " + i.ToString() + ",  j= " + j.ToString() + ",  t_index= " + t_index.ToString() + ",  " + tstr_Symbol_Code);

                    // DISPLAY
                    string str_1 = t_Value_01.ToString("0.0");
                    string str_2 = t_Value_02.ToString("0.0");
                    string str_3 = t_Value_03.ToString("0");
                    string str_4 = t_Value_04.ToString("0");



                    //  SET DISPLAY COLOR
                    //  since Tick Vol has been normalized by subtracting by the lowest;
                    //  therefore, a value greater then 500 is enough to point out the outstanding pair.
                    if (t_Value_01 >= t_Value_02 || t_Value_03 > t_Value_02)
                    {
                        if (t_Value_03 > 0)
                        {
                            t_Clr_01 = Clr_Positive;
                            t_Clr_02 = Clr_Positive;
                        }
                        if (t_Value_03 < 0)
                        {
                            t_Clr_01 = Clr_Negative;
                            t_Clr_02 = Clr_Negative;
                        }
                        //  ALERT/PLAY SOUND
                        Play_Sound_on_Signal();
                    }
                    else
                    {
                        t_Clr_01 = Clr_Value_01;

                        ///  SHOW PIPS COLOR in +ve or -ve color always
                        if (t_Value_03 > 0)
                            t_Clr_02 = Clr_Positive;
                        else
                            t_Clr_02 = Clr_Negative;
                    }


                    Draw_OnChart_C1("DH8MP01", t_Line_no, t_Col_no + 0, str_1, t_Clr_01);
                    Draw_OnChart_C1("DH8MP02", t_Line_no, t_Col_no + 1, str_2, t_Clr_01);
                    Draw_OnChart_C1("DH8MP03", t_Line_no, t_Col_no + 2, str_3, t_Clr_02);
                    Draw_OnChart_C1("DH8MP04", t_Line_no, t_Col_no + 3, str_4, t_Clr_01);



                    ///INC ROW 
                    t_Line_no += 1;
                }
                //END FOR

                ///INC ROW 
                t_Line_no += Line_Offset;

                // SHIFT COL AND RESET ROW 
                if (i == 3)
                {
                    t_Col_no += Col_Offset;
                    t_Line_no = t_Row;
                }
                //END IF
            }
            //END FOR
        }
        ////----  END METHOD  Display_Volitatlity_and_ATR_with_TICK_Volume()

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----               Display_Total_Pips_ATR_Values_Hourly                      ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Total_Pips_ATR_Values_Hourly(int t_Row, int t_Col)
        {
            int t_index = 0;
            int t_Line_no = 0, t_Col_no = 0;
            string tstr_Symbol_Code = "";
            double t_Value_05 = 0;

            Colors t_Clr_01 = Clr_Value_01, t_Clr_02 = Clr_Value_02;

            // COPY ROW COL POSITION 
            t_Line_no = t_Row;
            t_Col_no = t_Col;
            //t_Offset = 2;

            string str_TF01 = TimeFrameToShortName(TimeFrame.Hour);

            // LOOP FOR 8-MAJOR PAIRS
            for (int i = 0; i < 8; i++)
            {
                //--  1st HEADING
                Draw_OnChart_C1("DH8MP031", t_Line_no - 3, t_Col_no + 0, "T.Pips", Clr_Heading_2);
                Draw_OnChart_C1("DH8MP031", t_Line_no - 2, t_Col_no + 0, "/ ATR", Clr_Heading_2);
                Draw_OnChart_C1("DH8MP031", t_Line_no - 1, t_Col_no + 0, str_TF01, Clr_Heading_2);


                // LOOP FOR 7-TIME FRAME   
                for (int j = 0; j < 7; j++)
                {
                    // GET PAIR SYMBOL CODE
                    tstr_Symbol_Code = MajorPair_Symbol[i, j];
                    int t_BsQt = Base_Currency[i, j];

                    // MEHTOD TO FIND THE SEARCH INDEX
                    t_index = Return_Pair_Index_Position(tstr_Symbol_Code);

                    //  T.PIPS / ATR VALUES 
                    t_Value_05 = All_28P_TPIPS_ATR_Val_Hour[t_index];


                    //Print("i= " + i.ToString() + ",  j= " + j.ToString() + ",  t_index= " + t_index.ToString() + ",  " + tstr_Symbol_Code);

                    // DISPLAY
                    string str_5 = t_Value_05.ToString("0.0");

                    //  SET DISPLAY COLOR
                    if (Math.Abs(t_Value_05) >= 4)
                    {
                        t_Clr_01 = Clr_True;

                        //  ALERT/PLAY SOUND
                        Play_Sound_on_Signal();

                    }
                    else
                    {
                        t_Clr_01 = Clr_Value_01;
                    }

                    Draw_OnChart_C1("DH8MP05", t_Line_no, t_Col_no + 0, str_5, t_Clr_01);


                    ///INC ROW 
                    t_Line_no += 1;
                }
                //END FOR

                ///INC ROW 
                t_Line_no += Line_Offset;

                // SHIFT COL AND RESET ROW 
                if (i == 3)
                {
                    t_Col_no += Col_Offset;
                    t_Line_no = t_Row;
                }
                //END IF
            }
            //END FOR
        }
        ////----  END METHOD  Display_Total_Pips_ATR_Values_Hourly()

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----               Display_Total_Pips_ATR_Values_4_Huorly                    ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Total_Pips_ATR_Values_4_Huorly(int t_Row, int t_Col)
        {
            int t_index = 0;
            int t_Line_no = 0, t_Col_no = 0;
            string tstr_Symbol_Code = "";
            double t_Value_06 = 0;

            Colors t_Clr_01 = Clr_Value_01, t_Clr_02 = Clr_Value_02;

            // COPY ROW COL POSITION 
            t_Line_no = t_Row;
            t_Col_no = t_Col;
            //t_Offset = 2;

            string str_TF01 = TimeFrameToShortName(TimeFrame.Hour4);

            // LOOP FOR 8-MAJOR PAIRS
            for (int i = 0; i < 8; i++)
            {
                //--  1st HEADING
                Draw_OnChart_C1("DH8MP031", t_Line_no - 3, t_Col_no + 0, "T.Pips", Clr_Heading_2);
                Draw_OnChart_C1("DH8MP031", t_Line_no - 2, t_Col_no + 0, "/ATR", Clr_Heading_2);
                Draw_OnChart_C1("DH8MP031", t_Line_no - 1, t_Col_no + 0, str_TF01, Clr_Heading_2);

                // LOOP FOR 7-TIME FRAME   
                for (int j = 0; j < 7; j++)
                {
                    // GET PAIR SYMBOL CODE
                    tstr_Symbol_Code = MajorPair_Symbol[i, j];
                    int t_BsQt = Base_Currency[i, j];

                    // MEHTOD TO FIND THE SEARCH INDEX
                    t_index = Return_Pair_Index_Position(tstr_Symbol_Code);

                    //  T.PIPS / ATR VALUES 
                    t_Value_06 = All_28P_TPIPS_ATR_Val_4Hour[t_index];

                    //Print("i= " + i.ToString() + ",  j= " + j.ToString() + ",  t_index= " + t_index.ToString() + ",  " + tstr_Symbol_Code);

                    // DISPLAY
                    string str_6 = t_Value_06.ToString("0.0");

                    //  SET DISPLAY COLOR
                    if (Math.Abs(t_Value_06) >= 1.2)
                    {
                        t_Clr_01 = Clr_True;

                        //  ALERT/PLAY SOUND
                        Play_Sound_on_Signal();

                    }
                    else
                    {
                        t_Clr_01 = Clr_Value_01;
                    }

                    Draw_OnChart_C1("DH8MP06", t_Line_no, t_Col_no + 0, str_6, t_Clr_01);


                    ///INC ROW 
                    t_Line_no += 1;
                }
                //END FOR

                ///INC ROW 
                t_Line_no += Line_Offset;

                // SHIFT COL AND RESET ROW 
                if (i == 3)
                {
                    t_Col_no += Col_Offset;
                    t_Line_no = t_Row;
                }
                //END IF
            }
            //END FOR
        }
        ////----  END METHOD  Display_Total_Pips_ATR_Values_4_Huorly()



        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    Main_cBOT_Logic                                      ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Main_cBOT_Logic()
        {

            ////---------------------------------------
            ////---   AUTO OR MANUAL TRADE     --------
            bool t_Condition_01 = false;
            /// MANUAL OR AUTO TRADING
            if (p_Manually_Start == 1)
            {
                /// USER TO MAKE FIRST TRADE
                if (Positions.Count >= 1)
                    t_Condition_01 = true;
            }
            ///----    IF AUTO TRADE
            if (p_Manually_Start == 0)
            {
                t_Condition_01 = true;
            }
            ///END IF


            ///-----------------------------------------------------------------
            ///---   TRADING TIME RANGE DURING THE DAY IS TRUE    --------------
            if (Trading_Time == true && t_Condition_01 == true)
            {
                ///-  CHECK MAX NO OF OPEN POSITIONS
                if (Total_Account_Pos_Count <= p_Max_No_of_Positions_to_Open)
                {
                    ///- HOUR   -DAY   -WEEK  TRADING IS TRUE
                    if (Flag_Trading_Till_Next_Hr == true && Flag_Trading_Till_Next_Dy == true && Flag_Trading_Till_Next_Wk == true)
                    {
                        Entry_Trades_Orignal_Logic_01();
                    }
                    // END IF
                }
                // END IF
            }
            // END IF
        }
        ////----  END METHOD Main_cBOT_Logic()

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                                    Manage_Open_Trades                                            //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Manage_Open_Trades()
        {

            // METHOD EXCLUSIVE CONTROL FLAG
            if (Flag_isExecuting_10 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_10 = true;


                // SCALING ON OFF  -  ADD TO WINNERS ONLY
                //  CHECK FOR MARGIN LEVEL
                if (p_SCALE_IN_ON_OFF == 1 && Total_Account_Pos_Count <= p_Max_No_of_Positions_to_Open)
                {
                    Manage_Trades_By_Scale_IN();
                }

                // BREAK EVEN
                if (p_Break_Even_SL_ON_OFF == 1)
                {
                    Adjust_Stop_Loss_To_Break_Even();
                }

                // TRAILING STOP LOSS
                if (p_Trailing_SL_ON_OFF == 1)
                {
                    Adjust_Trailing_Stop_Loss();
                }

                // RESET THE FLAG
                Flag_isExecuting_10 = false;
            }
            //END IF (Flag_isExecuting_10 = false)

        }
        // END METHOD Manage_Open_Trades

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                                    Control_Strategies                                            //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Control_Strategies()
        {

        }
        // END METHOD Control_Strategies

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                                    Exit_Strategies                                               //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Exit_Strategies()
        {
            // EQ MANAGER
            if (p_Equity_Manager == 1)
            {
                //Get_Equity_Manager();
            }

            //  IF CONDITION IS SET TO TRUE
            if (p_Target_NETPL_ON_OFF == 1)
            {
                //Check_NetPL_Single_Pair();
            }

            //  IF CONDITION IS SET TO TRUE
            if (p_LOCK_IN_PORIFT_ON_OFF == 1)
            {
                //Adjust_28Pair_Profit_Lock_IN();
            }

        }
        // END METHOD Exit_Strategies

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                             Entry_Trades_Orignal_Logic_01                                        //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Entry_Trades_Orignal_Logic_01()
        {

            ///-- EXCLUSIVE METHOD CONTROL
            if (Flag_isExecuting_11 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_11 = true;

                Symbol t_Symbol;
                string tstr_Symbol_Code;

                //LOOP FOR 28 PAIRS
                for (int i = 0; i < 28; i++)
                {
                    // GET SYMBOL
                    t_Symbol = Get_28Pair_Symbol(i);
                    tstr_Symbol_Code = t_Symbol.Code.ToString();

                    ///--  GET UPDATED MARGIN LEVEL
                    Get_Account_Margin_Level();

                    ///-- ONLY IF ENOUGH MARGIN LEVEL 
                    if (Flag_Acc_Margin_Level_01 == true)
                    {


                    }
                    //END IF (Flag_Acc_Margin_Level_01 == true)
                }
                ///-- END FOR


                // RESET THE FLAG
                Flag_isExecuting_11 = false;
            }
            //END IF (Flag_isExecuting_11 = false)

        }
        //END METHOD     Entry_Trades_Orignal_Logic_01



        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                             Manage_Trades_By_Scale_IN                                            //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Manage_Trades_By_Scale_IN()
        {
            ///--  EXCLUSIVE METHOD CONTROL
            ///--  Flag_isExecuting_20 IS CONTROL FLAG USED IN 
            ///--  METHOD ON_POSITIONS_CLOSED. SO IF TRUE THEN HOLD ON TO SCALE IN
            if (Flag_isExecuting_12 == false && Flag_isExecuting_20 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_12 = true;

                ///--  GET UPDATED MARGIN LEVEL
                Get_Account_Margin_Level();

                ///-- ONLY IF ENOUGH MARGIN LEVEL >= 300
                if (Flag_Acc_Margin_Level_02 == true)
                {

                }
                //END IF  (Flag_Acc_Margin_Level_02 == true)


                // RESET THE FLAG
                Flag_isExecuting_12 = false;
            }
            //END IF (Flag_isExecuting_12 = false)
        }
        //END METHOD     Manage_Trades_By_Scale_IN



        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                             Adjust_Stop_Loss_To_Break_Even                                       //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Adjust_Stop_Loss_To_Break_Even()
        {

            ///-- EXCLUSIVE METHOD CONTROL
            if (Flag_isExecuting_21 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_21 = true;

                // RESET THE FLAG
                Flag_isExecuting_21 = false;
            }
            //END IF (Flag_isExecuting_21 = false)
        }
        //END METHOD     Adjust_Stop_Loss_To_Break_Even

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                             Adjust_Trailing_Stop_Loss                                            //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Adjust_Trailing_Stop_Loss()
        {

            ///-- EXCLUSIVE METHOD CONTROL
            if (Flag_isExecuting_22 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_22 = true;

                // RESET THE FLAG
                Flag_isExecuting_22 = false;
            }
            //END IF (Flag_isExecuting_22 = false)
        }
        //END METHOD     Adjust_Trailing_Stop_Loss


        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    On_Change_of_Time                                    ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        protected void On_Change_of_Time()
        {
            // ADD ANY LOGIC TO BELOW IF CLAUSE

            ///------------------------------------------------
            ///---   GET CURRENT DIFFERENT TIME     -----------
            Hour_01 = (int)Server.Time.Hour;
            Day_01 = (int)Server.Time.Day;
            Week_01 = (int)Server.Time.DayOfWeek;
            Month_01 = (int)Server.Time.Month;


            ///-----------------------------------------------
            // CHECK CHANGE OF HOUR --------------------------
            if (Hour_01 != Hour_02)
            {
                ///--- RESET
                Flag_Trading_Till_Next_Hr = true;
            }
            //END IF

            // CHECK CHANGE OF DAY --------------------------
            if (Day_01 != Day_02)
            {
                /// -INITIALIZE INDICATOR ON DAY CHANGE
                Initialize_Indicators();

                //RESET ARRAYS ON DAY CHANGE OR WHEN cBOT STARTS
                Reset_Arrays_on_Day_Change();

                //RESET DATA ON DAY CHANGE
                Reset_Data_on_Day_Change();

                ///--- RESET
                Flag_Trading_Till_Next_Dy = true;
            }
            //END IF 

            // CHECK CHANGE OF WEEK ------------------------
            if (Week_01 != Week_02)
            {
                ///--- RESET
                Flag_Trading_Till_Next_Wk = true;
            }
            //END IF 

            // CHECK CHANGE OF MONTH ------------------------
            if (Month_01 != Month_02)
            {

            }
            //END IF 


            ///--------------------------
            ///--- MAKE COPY ------------
            Hour_02 = Hour_01;
            Day_02 = Day_01;
            Week_02 = Week_01;
            Month_02 = Month_01;
        }
        ////----  END METHOD On_Change_of_Time()

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                             Reset_Arrays_on_Day_Change                                           //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Reset_Arrays_on_Day_Change()
        {

        }
        ////----  END METHOD Reset_Arrays_on_Day_Change()

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                             Reset_Data_on_Day_Change                                             //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Reset_Data_on_Day_Change()
        {

        }
        ////----  END METHOD Reset_Data_on_Day_Change()

        //////////////////////////////////////////////////////////////////////////////
        ////----   Update_Methods_Data_OnBAR                     ----/////////////////
        //////////////////////////////////////////////////////////////////////////////
        private void Update_Methods_Data_OnBAR()
        {

            // METHOD EXCLUSIVE CONTROL FLAG
            if (Flag_isExecuting_04 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_04 = true;

                ///--- ATR VALUES
                Print("5A. : Get 28P & 8MPairs ATR Values");
                Get_ATR_Values();

                // RESET THE FLAG
                Flag_isExecuting_04 = false;
            }
            //END if (Flag_isExecuting_04 == false)

        }
        ////----  END METHOD Update_Methods_Data_OnBAR()


        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    Upate_Dynamic_Values_On_Tick                                 ----//////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Upate_Dynamic_Values_On_Tick()
        {

            ///-- EXCLUSIVE METHOD CONTROL
            if (Flag_isExecuting_05 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_05 = true;


                // RESET THE FLAG
                Flag_isExecuting_05 = false;
            }
            //END if (Flag_isExecuting_05 == false)
        }
        ////----  END METHOD Upate_Dynamic_Values_On_Tick()

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    Upate_Dynamic_Values_On_Timer                                ----//////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Upate_Dynamic_Values_On_Timer()
        {
            if (Flag_isExecuting_06 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_06 = true;

                ///----------------------------------------
                ///---   GET CANDLES VOLITALITY     -------
                Get_28Pair_Candle_Volitatlity();

                ////////////////////////////////////
                ///-----  GROUP # 02 --------------
                int c2_Col = 1;
                int r2_Row = 7;


                ///---   MAJOR PAIR WITH SUB PAIR
                Display_Heading_All_MajorPair_AND_Sub_Pair((St_Line_No + r2_Row), (St_Col_No + c2_Col));

                Print("Check Level 02");
                ///---   VOLITALITY 1 MIN CANDLE  ++  ATR OF 15MIN TIME FRAME
                Display_Volitatlity_and_ATR((St_Line_No + r2_Row), (St_Col_No + c2_Col + 2));

                ///---   1-Hour - T.PIPS / ATR INDICATOR VALUES
                Display_Total_Pips_ATR_Values_Hourly((St_Line_No + r2_Row), (St_Col_No + c2_Col + 5));
                ///---   4-Hour - T.PIPS / ATR INDICATOR VALUES
                Display_Total_Pips_ATR_Values_4_Huorly((St_Line_No + r2_Row), (St_Col_No + c2_Col + 6));


                ////////////////////////////////////
                ///-----  GROUP # 03 --------------
                int c3_Col = 23;
                int r3_Row = 9;

                Print("Check Level 03");
                ///--   PAIR NAME
                Display_28_Pair_Pairs_Name_01((St_Line_No + r3_Row), (St_Col_No + c3_Col));




                // RESET THE FLAG
                Flag_isExecuting_06 = false;
            }
            //END if (Flag_isExecuting_06 == false)
        }
        ////----  END METHOD Upate_Dynamic_Values_On_Timer()


        ////////////////////////////////////////////////////////////////////////////////////////////
        ////---                        Close_Positions_with_Trade_Type                   ///////////
        ////////////////////////////////////////////////////////////////////////////////////////////        
        private void Close_Positions_with_Trade_Type(TradeType tradeType)
        {
            foreach (var pos in Positions)
            {
                if (pos.TradeType == tradeType)
                {
                    ClosePosition(pos);
                }
                //END IF
            }
            //END FOR-EACH
        }
        //END METHOD Close_Positions_with_Trade_Type

        ////////////////////////////////////////////////////////////////////////////////////////////
        ////---                      Close_Positions_with_Label                           //////////
        ////////////////////////////////////////////////////////////////////////////////////////////        
        private void Close_Positions_with_Label(string label)
        {
            foreach (var pos in Positions)
            {
                if (pos.Label == label)
                {
                    ClosePosition(pos);
                }
                //END IF
            }
            //END FOR-EACH
        }
        //END METHOD CloseAll_Positions_with_Label

        ////////////////////////////////////////////////////////////////////////////////////////////
        ////---                Close_Positions_with_Symbol_Trade_Type               ////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////        
        private void Close_Positions_with_Symbol_Trade_Type(string t_Symbol_Code, TradeType t_TradeType)
        {
            foreach (var pos in Positions)
            {
                if (pos.SymbolCode == t_Symbol_Code && pos.TradeType == t_TradeType)
                {
                    ClosePosition(pos);
                }
                //END IF
            }
            //END FOR-EACH
        }
        //END METHOD  Close_Positions_with_Symbol_Trade_Type

        ////////////////////////////////////////////////////////////////////////////////////////////
        ////---                   Close_Positions_with_Symbol_Trade_Type            ////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////        
        private void Close_Positions_with_Symbol_Trade_Type_and_Pips(string t_Symbol_Code, TradeType t_TradeType, int t_Pips)
        {
            foreach (var pos in Positions)
            {
                if (pos.SymbolCode == t_Symbol_Code && pos.TradeType == t_TradeType && pos.Pips < t_Pips)
                {
                    ClosePosition(pos);
                }
                //END IF
            }
            //END FOR-EACH
        }
        //END METHOD  Close_Positions_with_Symbol_Trade_Type

        ////////////////////////////////////////////////////////////////////////////////////////////
        ////---                    Close_Positions_with_Symbol                         /////////////
        ////////////////////////////////////////////////////////////////////////////////////////////        
        private void Close_Positions_with_Symbol(Symbol t_Symbol)
        {
            foreach (var pos in Positions)
            {
                if (pos.SymbolCode == t_Symbol.Code)
                {
                    ClosePosition(pos);
                }
                //END IF
            }
            //END FOR-EACH
        }
        //END METHOD  Close_Positions_with_Symbol


        ////////////////////////////////////////////////////////////////////////////////////////////
        ////---                   Close_Positions_Amount                              //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////        
        private void Close_Positions_Amount(int t_Amount)
        {
            ///-----
            // CLOSE THAT ARE ABOVE/BELOW THE AMOUNT VALUE (t_Amount )
            ///-----

            foreach (var pos in Positions)
            {
                //IF POSITIVE VALUE
                if (t_Amount >= 0)
                    if (pos.NetProfit >= t_Amount)
                        ClosePositionAsync(pos);

                //IF NEGATIVE VALUE
                if (t_Amount < 0)
                    if (pos.NetProfit <= t_Amount)
                        ClosePositionAsync(pos);
            }
            //END FOR-EACH
        }
        //END FUNCTION Close_Positions_Amount

        ////////////////////////////////////////////////////////////////////////////////////////////
        ////-----                        CloseAll_Every_Position                    ////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////        
        private void CloseAll_Every_Position()
        {
            // LOOP TO GET ALL POSITIONS
            foreach (var pos in Positions)
            {
                ClosePosition(pos);
            }
            //END FOR-EACH
        }
        //END METHOD CloseAll_Every_Position

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////---                                 OnPositionsOpened                                             //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void OnPositionsOpened(PositionOpenedEventArgs args)
        {

            Print("\n---------#####    ON_POSITION___OPENED  #####---------");

            var pos = args.Position;


            ///--- UPDATE POSITIONS COUNTS
            Get_Positions_Count_Volume_PipCost();


        }
        //END METHOD OnPositionsOpened

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////---                                    OnPositionsClosed                                          //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void OnPositionsClosed(PositionClosedEventArgs args)
        {

            Print("\n---------#####    ON_POSITION_CLOSED  #####---------");

            var pos = args.Position;

            ////--------------------------------------------------------
            ////---  CLOSE IF FIRST POSITION IS CLOSED

            // CLOSE IF BUY ORDER AND THAT ALSO FIRST BUY ORDER
            if (pos.TradeType == TradeType.Buy)
            {
                if (pos.Label == Label_1st_Buy)
                {
                    // CONTROL FLAG FOR SCALE-IN METHOD SO IT DOES NOT
                    // OPEN NEW ORDERS -----------------------------------
                    Flag_isExecuting_20 = true;

                    //Close_Positions_with_Symbol_Trade_Type(pos.SymbolCode, TradeType.Buy);

                    Flag_isExecuting_20 = false;
                }
            }
            //END IF

            // CIF SELL ORDER AND THAT ALSO FIRST SELL ORDER
            if (pos.TradeType == TradeType.Sell)
            {
                if (pos.Label == Label_1st_Sell)
                {
                    // CONTROL FLAG FOR SCALE-IN METHOD SO IT DOES NOT
                    // OPEN NEW ORDERS -----------------------------------
                    Flag_isExecuting_20 = true;

                    //Close_Positions_with_Symbol_Trade_Type(pos.SymbolCode, TradeType.Sell);

                    Flag_isExecuting_20 = false;
                }
            }
            //END IF

            ///--- UPDATE POSITIONS COUNTS
            Get_Positions_Count_Volume_PipCost();

        }
        //END METHOD PositionsOnClosed




        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    Get_Account_Margin_Level                             ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Get_Account_Margin_Level()
        {

            ///-------------------------------------------------------
            // CHECK FOR MARGIN LEVEL CONDITION
            // CHECK IF THERE IS ATLEAST 1 POSITION OPENED OR NOT.
            if (Positions.Count > 0)
            {
                // IF 1 OR MORE POSITION OPENED THEN CHECK FOR MARGIN LEVEL
                if (Account.MarginLevel > p_Min_Margin_Level_01)
                    Flag_Acc_Margin_Level_01 = true;
                else
                    Flag_Acc_Margin_Level_01 = false;

                // IF 1 OR MORE POSITION OPENED THEN CHECK FOR MARGIN LEVEL
                if (Account.MarginLevel > p_Min_Margin_Level_02)
                    Flag_Acc_Margin_Level_02 = true;
                else
                    Flag_Acc_Margin_Level_02 = false;
            }
            else
            {
                Flag_Acc_Margin_Level_01 = true;
                Flag_Acc_Margin_Level_02 = true;
            }
            // END IF ELSE
        }
        ////----  END METHOD Get_Account_Margin_Level()

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                             Get_Positions_Count_Volume_PipCost                                   //////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Get_Positions_Count_Volume_PipCost()
        {

            // METHOD EXCLUSIVE CONTROL FLAG
            if (Flag_isExecuting_23 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_23 = true;



                // RESET THE FLAG
                Flag_isExecuting_23 = false;
            }
            //END IF (Flag_isExecuting_23 == false)


        }
        ////----  END METHOD Get_Positions_Count_Volume_PipCost()

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    Set_Few_Default_Value_On_Start                        ----/////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Set_Few_Default_Value_On_Start()
        {
            ///-------------------------------------------------------
            ///--- INITIALIZE "onPositionClosed/Opened" --------------
            Positions.Closed += OnPositionsClosed;
            Positions.Opened += OnPositionsOpened;


            ///--------------------------------------------------------
            ///--- TODAY's DATE ---------------------------------------
            Todays_Date = string.Format("{0:d}", Server.Time);

            ///--------------------------------------------------------
            //   EQUITY REFERENCE VALUE         -----------------------
            Start_Equity = (int)Account.Equity;


            ///---------------------------------------------
            ///---    GET DAY OF THE WEEK ------------------
            Hour_01 = (int)Server.Time.Hour;
            Day_01 = (int)Server.Time.Day;
            Week_01 = (int)Server.Time.DayOfWeek;
            Month_01 = (int)Server.Time.Month;
            // MAKE COPY
            Hour_02 = Hour_01;
            Day_02 = Day_01;
            Week_02 = Week_01;
            Month_02 = Month_01;



        }
        ////----  END METHOD Set_Few_Default_Value_On_Start()

        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////---                             Get_28Pair_Candle_Volitatlity                      ///////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Get_28Pair_Candle_Volitatlity()
        {

            ///-- EXCLUSIVE METHOD CONTROL
            if (Flag_isExecuting_14 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_14 = true;

                Symbol t_Symbol;
                string tstr_Symbol_Code;
                double t_PipSize = 0;

                //LOOP FOR 28 PAIRS
                for (int i = 0; i < 28; i++)
                {
                    // GET SYMBOL
                    t_Symbol = Get_28Pair_Symbol(i);
                    tstr_Symbol_Code = t_Symbol.Code.ToString();
                    t_PipSize = t_Symbol.PipSize;

                    All_28_Pair_Ask_Price[i] = t_Symbol.Ask;
                    All_28_Pair_Bid_Price[i] = t_Symbol.Bid;

                    double t_High_Price = MrktSries_Price_01_min[i].High.LastValue;
                    double t_Low_Price = MrktSries_Price_01_min[i].Low.LastValue;
                    double t_Volitality = (t_High_Price - t_Low_Price) / t_PipSize;

                    double t_Close = MrktSries_Price_15min[i].Close.LastValue;
                    double t_Open = MrktSries_Price_15min[i].Open.LastValue;
                    double t_Pips = (t_Close - t_Open) / t_PipSize;

                    ///---  STORE VALUE IN ARRAY
                    All_28_Pair_Volitality[i] = t_Volitality;
                    All_28_Pair_15min_Pips[i] = t_Pips;

                    All_28_Pair_Tick_Volume[i] = MrktSries_Price_15min[i].TickVolume.Count;

                    Normalize_Tick_Volume();

                    /// GET T.PIPS / ATR VALUES 
                    Print("Check Level 03");
                    All_28P_TPIPS_ATR_Val_Hour[i] = Indi_MP_ATR_1Hour[i].Close_Value(0);
                    All_28P_TPIPS_ATR_Val_4Hour[i] = Indi_MP_ATR_4Hour[i].Close_Value(0);

                }
                ///-- END FOR

                // RESET THE FLAG
                Flag_isExecuting_14 = false;
            }
            //END IF (Flag_isExecuting_14 = false)

        }
        //END MEHTOD Get_28Pair_Candle_Volitatlity

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////----                    TEST_FUNCTION                                        ----//////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Normalize_Tick_Volume()
        {

            double t_Lowest = 0;

            // FIND THE HIGHEST VALUE
            t_Lowest = All_28_Pair_Tick_Volume[0];
            //LOOP FOR 28 PAIRS
            for (int i = 0; i < 28; i++)
            {
                if (All_28_Pair_Tick_Volume[i] <= t_Lowest)
                    t_Lowest = All_28_Pair_Tick_Volume[i];
            }


            // NORMALIZE THE OTHER PAIR TICK VOLUME COUNT
            // BY SUBTRACTING THE LOWEST VALUE FROM EACH
            //LOOP FOR 28 PAIRS
            for (int i = 0; i < 28; i++)
            {
                All_28_Pair_Tick_Volume[i] = All_28_Pair_Tick_Volume[i] - t_Lowest;
            }


        }
        ////----  END METHOD Test_Function()




        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////---                                 Get_ATR_Values                                 ///////////////////////////
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Get_ATR_Values()
        {

            ///-- EXCLUSIVE METHOD CONTROL
            if (Flag_isExecuting_13 == false)
            {
                // SET THE FLAG
                Flag_isExecuting_13 = true;

                Symbol t_Symbol;
                string tstr_Symbol_Code;
                double t_PipSize = 0;

                //LOOP FOR 28 PAIRS
                for (int i = 0; i < 28; i++)
                {
                    // GET SYMBOL
                    t_Symbol = Get_28Pair_Symbol(i);
                    tstr_Symbol_Code = t_Symbol.Code.ToString();
                    t_PipSize = t_Symbol.PipSize;

                    ///-------------------------------------------
                    ///---   GET ATR VALUE  ----------------------
                    ///--- 15-MIN ATR
                    int t_G1 = (int)(Indi_ATR_28P_15mins[i].Result.Last(1) / t_PipSize);


                    ///---------------------------------------------------
                    ///---   STORE IN ARRAY         ----------------------
                    ///--- 15-MIN ATR
                    All_28P_ATR_Value_15mins[i] = t_G1;


                }
                ///-- END FOR

                // RESET THE FLAG
                Flag_isExecuting_13 = false;
            }
            //END IF (Flag_isExecuting_13 = false)

        }
        //END MEHTOD Get_ATR_Values




        ///////////////////////////////////////////////////////////////////////////////////////////
        ////---                Initialize_Indicators                          /////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////
        private void Initialize_Indicators()
        {
            double t_PipSize = 0;
            Symbol t_Symbol;
            string tstr_Symbol_Code;

            // ---------------------------------------------
            //LOOP FOR 28 PAIRS
            for (int i = 0; i < 28; i++)
            {
                // GET SYMBOL
                t_Symbol = Get_28Pair_Symbol(i);
                tstr_Symbol_Code = t_Symbol.Code.ToString();
                t_PipSize = t_Symbol.PipSize;


                ///-------------------------------------------------------
                ///---   CANDLE PRICES          --------------------------
                ///---   15MIN CANDLE - HIGH LOW PRICE  
                MrktSries_Price_15min[i] = MarketData.GetSeries(tstr_Symbol_Code, p_ATR_TF_01);
                ///---   01-MIN CANDLE - HIGH LOW PRICE  
                MrktSries_Price_01_min[i] = MarketData.GetSeries(tstr_Symbol_Code, p_Volitality_TF_01);

                ///--------------------------------------------------
                ///----   ATR 28 PAIRS      --------------------------
                ///---  15min ATR, P = 10
                MrktSeries_ATR_15mins[i] = MarketData.GetSeries(tstr_Symbol_Code, p_ATR_TF_01);
                Indi_ATR_28P_15mins[i] = Indicators.AverageTrueRange(MrktSeries_ATR_15mins[i], p_ATR_Period, MovingAverageType.Exponential);

                MrktSries_Price_01_Hour[i] = MarketData.GetSeries(tstr_Symbol_Code, TimeFrame.Hour);
                MrktSries_Price_04_Hour[i] = MarketData.GetSeries(tstr_Symbol_Code, TimeFrame.Hour4);

                Indi_MP_ATR_1Hour[i] = Indicators.GetIndicator<MajorPair_Total_Pips_Single_Pair_ATR>(MrktSries_Price_01_Hour[i], tstr_Symbol_Code, TimeFrame.Weekly, 0, 3, false, 50, 1.6);
                Indi_MP_ATR_4Hour[i] = Indicators.GetIndicator<MajorPair_Total_Pips_Single_Pair_ATR>(MrktSries_Price_04_Hour[i], tstr_Symbol_Code, TimeFrame.Weekly, 0, 3, false, 50, 1.6);

                Print((i + 1).ToString() + ". " + tstr_Symbol_Code);

            }
            //END FOR LOOP


            string tstr_MP = "";
            //LOOP FOR 8 MAJOR PAIRS
            for (int i = 0; i < 8; i++)
            {
                // MAJOR PAIR NAME ABOVE 7-SUB PAIR NAMES        -------------------
                tstr_MP = MP_Main_Heading[i];

            }
            //END FOR 8 MP LOOP

        }
        //END MEHTOD Initialize_Indicators

        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        ////---                                      Declare_All_Arrays                    ////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Declare_All_Arrays()
        {

            ///-------------------------------------------------------
            ///---   8-MAJOR & 7-Sub PAIRS Headings       -----------   
            MP_Main_Heading = new string[8];
            MP_Sub_Heading = new string[8, 7];
            ///---   MAJOR PAIR OF THE 28 PAIR
            MajorP_of_28Pair = new string[28, 3];

            ///---------------------------------------------------
            ///---   FULL MAJOR SYMBOL NAME          -------------
            MajorPair_Symbol = new string[8, 7];
            Base_Currency = new int[8, 7];

            ///------------------------------------------------------
            ///---   28-PAIR  CODE PIP SIZE VALUE MARGIN   ----------
            All_28_Pair_Symbol_Code = new string[28];
            All_28_Pair_Pip_Size = new double[28];
            All_28_Pair_Pip_Value = new double[28];
            All_28_Pair_Margin = new double[28];

            All_28_Pair_Ask_Price = new double[28];
            All_28_Pair_Bid_Price = new double[28];

            ///--------------------------------------------------
            ///---   MARKET PRICES            -------------------
            MrktSries_Price_01_min = new MarketSeries[28];
            MrktSries_Price_15min = new MarketSeries[28];
            All_28_Pair_Daily_Candle_High_Price = new double[28];
            All_28_Pair_Daily_Candle_Low_Price = new double[28];
            All_28_Pair_Volitality = new double[28];
            All_28_Pair_15min_Pips = new double[28];
            All_28_Pair_Tick_Volume = new double[28];

            ///--------------------------------------------------
            ///---   INDICATORS               -------------------

            ///---  28 PAIRS ATR
            Indi_ATR_28P_15mins = new AverageTrueRange[28];
            MrktSeries_ATR_15mins = new MarketSeries[28];
            All_28P_ATR_Value_15mins = new double[28];

            ///-  8 MAJOR PAIR TOTAL PIPS / ATR INDICATOR
            MrktSries_Price_01_Hour = new MarketSeries[28];
            MrktSries_Price_04_Hour = new MarketSeries[28];
            Indi_MP_ATR_1Hour = new Indicators.MajorPair_Total_Pips_Single_Pair_ATR[28];
            Indi_MP_ATR_4Hour = new Indicators.MajorPair_Total_Pips_Single_Pair_ATR[28];
            All_28P_TPIPS_ATR_Val_Hour = new double[28];
            All_28P_TPIPS_ATR_Val_4Hour = new double[28];
        }
        ////----  END METHOD Declare_All_Arrays()


        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        ////---                           Initialize_Array_OnStart_Only                     ///////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Initialize_Array_OnStart_Only()
        {

            ////-------------------------------------------------
            ///---   IMPORTANT  INPUT  SETTINGS  ----------------

            //INITIALIZATION OF MAJOR PAIR NAMES
            MP_Main_Heading[0] = "GBP";
            MP_Main_Heading[1] = "EUR";
            MP_Main_Heading[2] = "USD";
            MP_Main_Heading[3] = "JPY";
            MP_Main_Heading[4] = "AUD";
            MP_Main_Heading[5] = "NZD";
            MP_Main_Heading[6] = "CAD";
            MP_Main_Heading[7] = "CHF";

            // 1-GBP PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[0, 0] = "11. GBP-JPY";
            MP_Sub_Heading[0, 1] = "12. GBP-USD";
            MP_Sub_Heading[0, 2] = "13. GBP-AUD";
            MP_Sub_Heading[0, 3] = "14. GBP-NZD";
            MP_Sub_Heading[0, 4] = "15. GBP-CAD";
            MP_Sub_Heading[0, 5] = "16. GBP-CHF";
            MP_Sub_Heading[0, 6] = "17. EUR-GBP";

            // 2-EURO PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[1, 0] = "21. EUR-USD";
            MP_Sub_Heading[1, 1] = "22. EUR-JPY";
            MP_Sub_Heading[1, 2] = "23. EUR-GBP";
            MP_Sub_Heading[1, 3] = "24. EUR-AUD";
            MP_Sub_Heading[1, 4] = "25. EUR-NZD";
            MP_Sub_Heading[1, 5] = "26. EUR-CAD";
            MP_Sub_Heading[1, 6] = "27. EUR-CHF";

            // 3-USD PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[2, 0] = "31. USD-JPY";
            MP_Sub_Heading[2, 1] = "32. USD-CAD";
            MP_Sub_Heading[2, 2] = "33. USD-CHF";
            MP_Sub_Heading[2, 3] = "34. EUR-USD";
            MP_Sub_Heading[2, 4] = "35. GBP-USD";
            MP_Sub_Heading[2, 5] = "36. AUD-USD";
            MP_Sub_Heading[2, 6] = "37. NZD-USD";

            // 4-JPY PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[3, 0] = "41. USD-JPY";
            MP_Sub_Heading[3, 1] = "42. GBP-JPY";
            MP_Sub_Heading[3, 2] = "43. EUR-JPY";
            MP_Sub_Heading[3, 3] = "44. AUD-JPY";
            MP_Sub_Heading[3, 4] = "45. NZD-JPY";
            MP_Sub_Heading[3, 5] = "46. CAD-JPY";
            MP_Sub_Heading[3, 6] = "47. CHF-JPY";


            // 4-AUD PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[4, 0] = "51. AUD-JPY";
            MP_Sub_Heading[4, 1] = "52. AUD-USD";
            MP_Sub_Heading[4, 2] = "53. AUD-NZD";
            MP_Sub_Heading[4, 3] = "54. AUD-CAD";
            MP_Sub_Heading[4, 4] = "55. AUD-CHF";
            MP_Sub_Heading[4, 5] = "56. GBP-AUD";
            MP_Sub_Heading[4, 6] = "57. EUR-AUD";

            // 5-NZD PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[5, 0] = "61. NZD-USD";
            MP_Sub_Heading[5, 1] = "62. NZD-JPY";
            MP_Sub_Heading[5, 2] = "63. NZD-CAD";
            MP_Sub_Heading[5, 3] = "64. NZD-CHF";
            MP_Sub_Heading[5, 4] = "65. EUR-NZD";
            MP_Sub_Heading[5, 5] = "66. GBP-NZD";
            MP_Sub_Heading[5, 6] = "67. AUD-NZD";

            // 6-CAD PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[6, 0] = "71. CAD-JPY";
            MP_Sub_Heading[6, 1] = "72. CAD-CHF";
            MP_Sub_Heading[6, 2] = "73. USD-CAD";
            MP_Sub_Heading[6, 3] = "74. EUR-CAD";
            MP_Sub_Heading[6, 4] = "75. GBP-CAD";
            MP_Sub_Heading[6, 5] = "76. AUD-CAD";
            MP_Sub_Heading[6, 6] = "77. NZD-CAD";

            // 7-CHF PAIRS WITH BASE CURRENCY
            MP_Sub_Heading[7, 0] = "81. CHF-JPY";
            MP_Sub_Heading[7, 1] = "82. USD-CHF";
            MP_Sub_Heading[7, 2] = "83. EUR-CHF";
            MP_Sub_Heading[7, 3] = "84. GBP-CHF";
            MP_Sub_Heading[7, 4] = "85. AUD-CHF";
            MP_Sub_Heading[7, 5] = "86. NZD-CHF";
            MP_Sub_Heading[7, 6] = "87. CAD-CHF";

            ////----
            ////----    FOR USING IN INDICATOR  --------------------------------------
            ////----

            // 0-GBP PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[0, 0] = "GBPJPY";
            MajorPair_Symbol[0, 1] = "GBPUSD";
            MajorPair_Symbol[0, 2] = "GBPAUD";
            MajorPair_Symbol[0, 3] = "GBPNZD";
            MajorPair_Symbol[0, 4] = "GBPCAD";
            MajorPair_Symbol[0, 5] = "GBPCHF";
            MajorPair_Symbol[0, 6] = "EURGBP";
            Base_Currency[0, 0] = 1;
            Base_Currency[0, 1] = 1;
            Base_Currency[0, 2] = 1;
            Base_Currency[0, 3] = 1;
            Base_Currency[0, 4] = 1;
            Base_Currency[0, 5] = 1;
            Base_Currency[0, 6] = -1;

            // 1-EURO PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[1, 0] = "EURUSD";
            MajorPair_Symbol[1, 1] = "EURJPY";
            MajorPair_Symbol[1, 2] = "EURGBP";
            MajorPair_Symbol[1, 3] = "EURAUD";
            MajorPair_Symbol[1, 4] = "EURNZD";
            MajorPair_Symbol[1, 5] = "EURCAD";
            MajorPair_Symbol[1, 6] = "EURCHF";
            Base_Currency[1, 0] = 1;
            Base_Currency[1, 1] = 1;
            Base_Currency[1, 2] = 1;
            Base_Currency[1, 3] = 1;
            Base_Currency[1, 4] = 1;
            Base_Currency[1, 5] = 1;
            Base_Currency[1, 6] = 1;


            // 2-USD PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[2, 0] = "USDJPY";
            MajorPair_Symbol[2, 1] = "USDCAD";
            MajorPair_Symbol[2, 2] = "USDCHF";
            MajorPair_Symbol[2, 3] = "EURUSD";
            MajorPair_Symbol[2, 4] = "GBPUSD";
            MajorPair_Symbol[2, 5] = "AUDUSD";
            MajorPair_Symbol[2, 6] = "NZDUSD";
            Base_Currency[2, 0] = 1;
            Base_Currency[2, 1] = 1;
            Base_Currency[2, 2] = 1;
            Base_Currency[2, 3] = -1;
            Base_Currency[2, 4] = -1;
            Base_Currency[2, 5] = -1;
            Base_Currency[2, 6] = -1;

            // 3-JPY PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[3, 0] = "USDJPY";
            MajorPair_Symbol[3, 1] = "GBPJPY";
            MajorPair_Symbol[3, 2] = "EURJPY";
            MajorPair_Symbol[3, 3] = "AUDJPY";
            MajorPair_Symbol[3, 4] = "NZDJPY";
            MajorPair_Symbol[3, 5] = "CADJPY";
            MajorPair_Symbol[3, 6] = "CHFJPY";
            Base_Currency[3, 0] = -1;
            Base_Currency[3, 1] = -1;
            Base_Currency[3, 2] = -1;
            Base_Currency[3, 3] = -1;
            Base_Currency[3, 4] = -1;
            Base_Currency[3, 5] = -1;
            Base_Currency[3, 6] = -1;


            // 4-AUD PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[4, 0] = "AUDJPY";
            MajorPair_Symbol[4, 1] = "AUDUSD";
            MajorPair_Symbol[4, 2] = "AUDNZD";
            MajorPair_Symbol[4, 3] = "AUDCAD";
            MajorPair_Symbol[4, 4] = "AUDCHF";
            MajorPair_Symbol[4, 5] = "GBPAUD";
            MajorPair_Symbol[4, 6] = "EURAUD";
            Base_Currency[4, 0] = 1;
            Base_Currency[4, 1] = 1;
            Base_Currency[4, 2] = 1;
            Base_Currency[4, 3] = 1;
            Base_Currency[4, 4] = 1;
            Base_Currency[4, 5] = -1;
            Base_Currency[4, 6] = -1;

            // 5-NZD PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[5, 0] = "NZDUSD";
            MajorPair_Symbol[5, 1] = "NZDJPY";
            MajorPair_Symbol[5, 2] = "NZDCAD";
            MajorPair_Symbol[5, 3] = "NZDCHF";
            MajorPair_Symbol[5, 4] = "EURNZD";
            MajorPair_Symbol[5, 5] = "GBPNZD";
            MajorPair_Symbol[5, 6] = "AUDNZD";
            Base_Currency[5, 0] = 1;
            Base_Currency[5, 1] = 1;
            Base_Currency[5, 2] = 1;
            Base_Currency[5, 3] = 1;
            Base_Currency[5, 4] = -1;
            Base_Currency[5, 5] = -1;
            Base_Currency[5, 6] = -1;

            // 6-CAD PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[6, 0] = "CADJPY";
            MajorPair_Symbol[6, 1] = "CADCHF";
            MajorPair_Symbol[6, 2] = "USDCAD";
            MajorPair_Symbol[6, 3] = "EURCAD";
            MajorPair_Symbol[6, 4] = "GBPCAD";
            MajorPair_Symbol[6, 5] = "AUDCAD";
            MajorPair_Symbol[6, 6] = "NZDCAD";
            Base_Currency[6, 0] = 1;
            Base_Currency[6, 1] = 1;
            Base_Currency[6, 2] = -1;
            Base_Currency[6, 3] = -1;
            Base_Currency[6, 4] = -1;
            Base_Currency[6, 5] = -1;
            Base_Currency[6, 6] = -1;

            // 7-CHF PAIRS WITH BASE CURRENCY
            MajorPair_Symbol[7, 0] = "CHFJPY";
            MajorPair_Symbol[7, 1] = "USDCHF";
            MajorPair_Symbol[7, 2] = "EURCHF";
            MajorPair_Symbol[7, 3] = "GBPCHF";
            MajorPair_Symbol[7, 4] = "AUDCHF";
            MajorPair_Symbol[7, 5] = "NZDCHF";
            MajorPair_Symbol[7, 6] = "CADCHF";
            Base_Currency[7, 0] = 1;
            Base_Currency[7, 1] = -1;
            Base_Currency[7, 2] = -1;
            Base_Currency[7, 3] = -1;
            Base_Currency[7, 4] = -1;
            Base_Currency[7, 5] = -1;
            Base_Currency[7, 6] = -1;



            ///--------------------------------------------------------------
            ///-----   ARRAYS  STORES THE 2 x MAJOR PAIRS OF A SINGLE PAIRS
            ///---------------------------------------------------------------

            ///----  JPY PAIRS x 7  -------------------
            MajorP_of_28Pair[0, 0] = "GBPJPY";
            MajorP_of_28Pair[0, 1] = "GBP";
            MajorP_of_28Pair[0, 2] = "JPY";

            MajorP_of_28Pair[1, 0] = "USDJPY";
            MajorP_of_28Pair[1, 1] = "USD";
            MajorP_of_28Pair[1, 2] = "JPY";

            MajorP_of_28Pair[2, 0] = "EURJPY";
            MajorP_of_28Pair[2, 1] = "EUR";
            MajorP_of_28Pair[2, 2] = "JPY";

            MajorP_of_28Pair[3, 0] = "AUDJPY";
            MajorP_of_28Pair[3, 1] = "AUD";
            MajorP_of_28Pair[3, 2] = "JPY";

            MajorP_of_28Pair[4, 0] = "NZDJPY";
            MajorP_of_28Pair[4, 1] = "NZD";
            MajorP_of_28Pair[4, 2] = "JPY";

            MajorP_of_28Pair[5, 0] = "CADJPY";
            MajorP_of_28Pair[5, 1] = "CAD";
            MajorP_of_28Pair[5, 2] = "JPY";

            MajorP_of_28Pair[6, 0] = "CHFJPY";
            MajorP_of_28Pair[6, 1] = "CHF";
            MajorP_of_28Pair[6, 2] = "JPY";

            ///----  EUR PAIRS x 6  -------------------
            MajorP_of_28Pair[7, 0] = "EURUSD";
            MajorP_of_28Pair[7, 1] = "EUR";
            MajorP_of_28Pair[7, 2] = "USD";

            MajorP_of_28Pair[8, 0] = "EURGBP";
            MajorP_of_28Pair[8, 1] = "EUR";
            MajorP_of_28Pair[8, 2] = "GBP";

            MajorP_of_28Pair[9, 0] = "EURAUD";
            MajorP_of_28Pair[9, 1] = "EUR";
            MajorP_of_28Pair[9, 2] = "AUD";

            MajorP_of_28Pair[10, 0] = "EURNZD";
            MajorP_of_28Pair[10, 1] = "EUR";
            MajorP_of_28Pair[10, 2] = "NZD";

            MajorP_of_28Pair[11, 0] = "EURCAD";
            MajorP_of_28Pair[11, 1] = "EUR";
            MajorP_of_28Pair[11, 2] = "CAD";

            MajorP_of_28Pair[12, 0] = "EURCHF";
            MajorP_of_28Pair[12, 1] = "EUR";
            MajorP_of_28Pair[12, 2] = "CHF";

            ///----  GBP PAIRS x 5  -------------------
            MajorP_of_28Pair[13, 0] = "GBPUSD";
            MajorP_of_28Pair[13, 1] = "GBP";
            MajorP_of_28Pair[13, 2] = "USD";

            MajorP_of_28Pair[14, 0] = "GBPAUD";
            MajorP_of_28Pair[14, 1] = "GBP";
            MajorP_of_28Pair[14, 2] = "AUD";

            MajorP_of_28Pair[15, 0] = "GBPNZD";
            MajorP_of_28Pair[15, 1] = "GBP";
            MajorP_of_28Pair[15, 2] = "NZD";

            MajorP_of_28Pair[16, 0] = "GBPCAD";
            MajorP_of_28Pair[16, 1] = "GBP";
            MajorP_of_28Pair[16, 2] = "CAD";

            MajorP_of_28Pair[17, 0] = "GBPCHF";
            MajorP_of_28Pair[17, 1] = "GBP";
            MajorP_of_28Pair[17, 2] = "CHF";

            ///----  AUD PAIRS x 4  -------------------
            MajorP_of_28Pair[18, 0] = "AUDUSD";
            MajorP_of_28Pair[18, 1] = "AUD";
            MajorP_of_28Pair[18, 2] = "USD";

            MajorP_of_28Pair[19, 0] = "AUDNZD";
            MajorP_of_28Pair[19, 1] = "AUD";
            MajorP_of_28Pair[19, 2] = "NZD";

            MajorP_of_28Pair[20, 0] = "AUDCAD";
            MajorP_of_28Pair[20, 1] = "AUD";
            MajorP_of_28Pair[20, 2] = "CAD";

            MajorP_of_28Pair[21, 0] = "AUDCHF";
            MajorP_of_28Pair[21, 1] = "AUD";
            MajorP_of_28Pair[21, 2] = "CHF";

            ///----  NZD PAIRS x 3  -------------------
            MajorP_of_28Pair[22, 0] = "NZDUSD";
            MajorP_of_28Pair[22, 1] = "NZD";
            MajorP_of_28Pair[22, 2] = "USD";

            MajorP_of_28Pair[23, 0] = "NZDCAD";
            MajorP_of_28Pair[23, 1] = "NZD";
            MajorP_of_28Pair[23, 2] = "CAD";

            MajorP_of_28Pair[24, 0] = "NZDCHF";
            MajorP_of_28Pair[24, 1] = "NZD";
            MajorP_of_28Pair[24, 2] = "CHF";

            ///----  USD PAIRS x 2  -------------------
            MajorP_of_28Pair[25, 0] = "USDCAD";
            MajorP_of_28Pair[25, 1] = "USD";
            MajorP_of_28Pair[25, 2] = "CAD";

            MajorP_of_28Pair[26, 0] = "USDCHF";
            MajorP_of_28Pair[26, 1] = "USD";
            MajorP_of_28Pair[26, 2] = "CHF";

            ///----  CAD PAIRS x 1  -------------------
            MajorP_of_28Pair[27, 0] = "CADCHF";
            MajorP_of_28Pair[27, 1] = "CAD";
            MajorP_of_28Pair[27, 2] = "CHF";

            ////---------------------------------------------------
            ////---------------------------------------------------

            /// GET SYMBOL PIP SIZE 
            Symbol t_Symbol;
            double t_PipSize = 0, t_PipValue = 0;
            // LOOP TO GET PIPSIZE
            for (int i = 0; i < 28; i++)
            {
                // GET SYMBOL
                t_Symbol = Get_28Pair_Symbol(i);
                t_PipSize = t_Symbol.PipSize;
                t_PipValue = t_Symbol.PipValue;

                All_28_Pair_Symbol_Code[i] = t_Symbol.Code;
                All_28_Pair_Pip_Size[i] = t_PipSize;
                All_28_Pair_Pip_Value[i] = t_PipValue;

                All_28_Pair_Ask_Price[i] = t_Symbol.Ask;
                All_28_Pair_Bid_Price[i] = t_Symbol.Bid;


                //Print((i+1).ToString() + ". " + t_Symbol.Code);
            }
            //END FOR


            ////---------------------------------------------------
            ////---------------------------------------------------




        }
        ////----  END METHOD Initialize_Array_OnStart_Only()

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                                 TimeFrameToShortName                                                          ///////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private string TimeFrameToShortName(TimeFrame timeFrame)
        {
            string t_str = "";
            if (timeFrame == TimeFrame.Minute)
            {
                t_str = "1min";
            }
            else if (timeFrame == TimeFrame.Minute2)
            {
                t_str = "2min";
            }
            else if (timeFrame == TimeFrame.Minute5)
            {
                t_str = "5min";
            }
            else if (timeFrame == TimeFrame.Minute10)
            {
                t_str = "10min";
            }
            else if (timeFrame == TimeFrame.Minute15)
            {
                t_str = "15min";
            }
            else if (timeFrame == TimeFrame.Minute20)
            {
                t_str = "20min";
            }
            else if (timeFrame == TimeFrame.Minute30)
            {
                t_str = "30min";
            }
            else if (timeFrame == TimeFrame.Minute45)
            {
                t_str = "45min";
            }
            else if (timeFrame == TimeFrame.Hour)
            {
                t_str = "1Hr";
            }
            else if (timeFrame == TimeFrame.Hour2)
            {
                t_str = "2Hr";
            }
            else if (timeFrame == TimeFrame.Hour4)
            {
                t_str = "4Hr";
            }
            else if (timeFrame == TimeFrame.Hour12)
            {
                t_str = "12Hr";
            }
            else if (timeFrame == TimeFrame.Daily)
            {
                t_str = "Daily";
            }
            else if (timeFrame == TimeFrame.Day2)
            {
                t_str = "Day2";
            }
            else if (timeFrame == TimeFrame.Day3)
            {
                t_str = "Day3";
            }
            else if (timeFrame == TimeFrame.Weekly)
            {
                t_str = "Wkly";
            }
            else if (timeFrame == TimeFrame.Monthly)
            {
                t_str = "Mnthly";
            }

            return t_str;
        }
        //END MEHTOD TimeFrameToShortName



        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                                 Return_Pair_Index_Position                                                   ///////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private int Return_Pair_Index_Position(string tstr_Pair)
        {
            int t_index = 0;
            bool t_Flag = true;
            Symbol t_Symbol;

            while (t_Flag == true)
            {
                t_Symbol = Get_28Pair_Symbol(t_index);

                if (tstr_Pair == t_Symbol.Code.ToString())
                {
                    t_Flag = false;
                }
                //END IF

                t_index += 1;

                // IF PAIR IS NOT MATCHED : BREAK THE WHILE LOOP
                if (t_index >= 30)
                    t_Flag = false;
            }
            //END WHILE

            // GO ONE BACK AS THE WHILE LOOPS ADD ONE EXTRA ON EXIT
            t_index -= 1;

            return t_index;
        }
        //END MEHTOD Return_Pair_Index_Position

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                        Get_28Pair_Symbol                                                                     ///////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        private Symbol Get_28Pair_Symbol(int t_Pair)
        {
            switch (t_Pair)
            {
                //////////////////////////////////////////////
                ///  JPY PAIRS x 7
                //////////////////////////////////////////////
                case 0:
                    return MarketData.GetSymbol("GBPJPY");
                //break;
                case 1:
                    return MarketData.GetSymbol("USDJPY");
                //break;
                case 2:
                    return MarketData.GetSymbol("EURJPY");
                //break;
                case 3:
                    return MarketData.GetSymbol("AUDJPY");
                //break;
                case 4:
                    return MarketData.GetSymbol("NZDJPY");
                //break;
                case 5:
                    return MarketData.GetSymbol("CADJPY");
                //break;
                case 6:
                    return MarketData.GetSymbol("CHFJPY");
                //break;
                //////////////////////////////////////////////
                ///  EUR PAIRS x 6
                //////////////////////////////////////////////
                case 7:
                    return MarketData.GetSymbol("EURUSD");
                //break;
                case 8:
                    return MarketData.GetSymbol("EURGBP");
                //break;
                case 9:
                    return MarketData.GetSymbol("EURAUD");
                //break;
                case 10:
                    return MarketData.GetSymbol("EURNZD");
                //break;
                case 11:
                    return MarketData.GetSymbol("EURCAD");
                //break;
                case 12:
                    return MarketData.GetSymbol("EURCHF");
                //break;
                //////////////////////////////////////////////
                ///  GBP PAIRS x 5
                //////////////////////////////////////////////
                case 13:
                    return MarketData.GetSymbol("GBPUSD");
                //break;
                case 14:
                    return MarketData.GetSymbol("GBPAUD");
                //break;
                case 15:
                    return MarketData.GetSymbol("GBPNZD");
                //break;
                case 16:
                    return MarketData.GetSymbol("GBPCAD");
                //break;
                case 17:
                    return MarketData.GetSymbol("GBPCHF");
                //break;
                //////////////////////////////////////////////
                ///  AUD PAIRS x 4
                //////////////////////////////////////////////
                case 18:
                    return MarketData.GetSymbol("AUDUSD");
                //break;
                case 19:
                    return MarketData.GetSymbol("AUDNZD");
                //break;
                case 20:
                    return MarketData.GetSymbol("AUDCAD");
                //break;
                case 21:
                    return MarketData.GetSymbol("AUDCHF");
                //break;
                //////////////////////////////////////////////
                ///  NZD PAIRS x 5
                //////////////////////////////////////////////    
                case 22:
                    return MarketData.GetSymbol("NZDUSD");
                //break;
                case 23:
                    return MarketData.GetSymbol("NZDCAD");
                //break;
                case 24:
                    return MarketData.GetSymbol("NZDCHF");
                //break;
                //////////////////////////////////////////////
                ///  USD PAIRS x 2
                //////////////////////////////////////////////
                case 25:
                    return MarketData.GetSymbol("USDCAD");
                //break;
                case 26:
                    return MarketData.GetSymbol("USDCHF");
                //break;
                //////////////////////////////////////////////
                ///  CAD PAIRS x 1
                //////////////////////////////////////////////
                case 27:
                    return MarketData.GetSymbol("CADCHF");
                //break;
            }
            //SWITCH

            return Symbol;
        }
        //END METHOD   Get_28Pair_Symbol

        ////////////////////////////////////////////////////////////////////////////
        ////----  Display_BOT_NAME              ----////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        private void Display_BOT_NAME()
        {
            string t_Date = string.Format("{0:ddd-d-MMMM-y,  H:mm tt }", Server.Time);

            ///  START DATE AND TIME
            Draw_OnChart_C1("DBN1", 1, 14, "cBOT Start Date = " + t_Date, Clr_Heading_1);

            ///---   CBOT NAME INFO
            Draw_OnChart_C1("DBN1", 2, 14, "cBOT : 28 Pair Volatility", Clr_Heading_2);
            Draw_OnChart_C1("DBN1", 3, 14, "BY   ///S.KHAN  [skhan.projects@gmail.com]", Clr_Heading_2);


        }
        ////----  END METHOD Display_BOT_NAME()

        ////////////////////////////////////////////////////////////////////////////////////////////////
        ////                  Display_Input_Values_OnChart                         /////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Input_Values_OnChart()
        {
            if (Flag_One_Time_01 == false)
            {
                int t_line = 4;
                int t_Col = 32;

                ///---   USER INPUT VALUES
                Draw_OnChart_C1("DBINv1", t_line - 1, t_Col, "USER INPUT SETTINGS", Clr_Heading_1);

                //- VALUE #
                //Draw_OnChart_C1("DBINv1", t_line + 0, t_Col, "TESTING", Clr_Heading_2);
                //Draw_OnChart_C1("DBINv1", t_line + 1, t_Col, ">> " + Risk_Multiplier.ToString("0") + " <<", Clr_Warning);

                //- VALUE #
                t_line += 2;
                //Draw_OnChart_C1("DBINv1", t_line + 0, t_Col, "New Trade : Time Frame to Compare Candles", Clr_Heading_2);
                //Draw_OnChart_C1("DBINv1", t_line + 1, t_Col, "TF = " + p_Chart_TF, Clr_Heading_3);


                ///--- SET THE FLAG TO TRUE
                Flag_One_Time_01 = true;
            }
            //END IF (Flag_One_Time_01 == false)
        }
        //END MEHTOD Display_Input_Values_OnChart

        ////////////////////////////////////////////////////////////////////////////
        ////----   Display_Color_Test               ----////////////////////////////
        ////////////////////////////////////////////////////////////////////////////
        private void Display_Color_Test()
        {
            int t_line = 36;
            int t_line_02 = t_line;
            int t_col = 32;

            Draw_OnChart_C1("ColorTst", t_line - 1, t_col, "METHOD : COLOR DISPLAY TEST", Clr_Bk_1);

            ////----   COLORS DISPLAY TEST
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_Bk_1", Clr_Bk_1);
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_Heading_1", Clr_Heading_1);
            Draw_OnChart_C1("ColorTst", t_line + 2, t_col, "Clr_Heading_2", Clr_Heading_2);
            Draw_OnChart_C1("ColorTst", t_line + 3, t_col, "Clr_Heading_3", Clr_Heading_3);
            t_line += 5;
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_PairListing", Clr_PairListing);
            t_line += 2;
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_Positive", Clr_Positive);
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_Negative", Clr_Negative);
            t_line += 2;
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_True", Clr_True);
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_False", Clr_False);
            t_line += 2;
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_Signal_Buy", Clr_Signal_Buy);
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_Signal_Sell", Clr_Signal_Sell);
            // RESET
            t_line = t_line_02;
            t_col = t_col + 3;
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_Value_01", Clr_Value_01);
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_Value_02", Clr_Value_02);
            t_line += 2;
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_Border_01", Clr_Border_01);
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_Border_02", Clr_Border_02);
            t_line += 2;
            Draw_OnChart_C1("ColorTst", t_line + 0, t_col, "Clr_Signal_Hold", Clr_Signal_Hold);
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_Signal_Neutral", Clr_Signal_Ntrl);
            t_line += 2;
            Draw_OnChart_C1("ColorTst", t_line + 1, t_col, "Clr_Warning", Clr_Warning);


        }
        ////----  END METHOD Display_Color_Test()

        ////////////////////////////////////////////////////////////////////////////
        ////----   Play_Sound_on_Signal                       ----//////////////////
        ////////////////////////////////////////////////////////////////////////////
        private void Play_Sound_on_Signal()
        {
            if (p_MediaFile != string.Empty && p_Sound_ALerts_ON_OFF == 1)
                Notifications.PlaySound(p_MediaFile);
        }
        ////----  END METHOD Play_Sound_on_Signal()

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////                     SET TEXT, TAB AND NEXT LINE SETTING                    /////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Draw_OnChart_C1(string t_PreFix, int Line_No, int Tab_Pos, string t_text, Colors Draw_Color)
        {
            //CREATE A UNIQUE OBJECT NAME FOR THE METHOD ChartObjects.DrawText
            string tstr_1 = "";
            tstr_1 = t_PreFix + Line_No.ToString() + Tab_Pos.ToString();
            //tstr_1 = t_PreFix + Line_No.ToString();

            ChartObjects.DrawText(tstr_1, my_NL(Line_No) + my_Tabs(Tab_Pos) + t_text, StaticPosition.TopLeft, Draw_Color);
        }
        //END METHOD Draw_OnChart_C1

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Draw_OnChart_C2(string t_PreFix, int Line_No, int Tab_Pos, string t_text, Colors Draw_Color)
        {
            //CREATE A UNIQUE OBJECT NAME FOR THE METHOD ChartObjects.DrawText
            string tstr_1 = "";
            tstr_1 = t_PreFix;

            ChartObjects.DrawText(tstr_1, my_NL(Line_No) + my_Tabs(Tab_Pos) + t_text, StaticPosition.TopLeft, Draw_Color);
        }
        //END METHOD Draw_OnChart_C2

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        static string my_Tabs(int n)
        {
            return new String('\t', n);
        }
        //END METHOD my_Tabs

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        static string my_NL(int n)
        {
            return new String('\n', n);
        }
        //END METHOD my_NL 

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_RowColumn()
        {
            //int r1, c1;
            string t_text = "";

            // DISPLAY LINE # 
            for (int i = 0; i <= 80; i++)
            {
                t_text = i.ToString();
                Draw_OnChart_C1("Line", i, 0, t_text, Clr_Bk_1);
            }
            //END FOR

            // DISPLAY COL #
            int k = 1;
            for (int i = 0; i <= 50; i++,k++)
            {
                t_text = "C#";
                t_text = t_text + "." + k.ToString();
                Draw_OnChart_C1("Col", 0, (i), t_text, Clr_Bk_1);
            }
            //END FOR
        }
        //END METHOD Display_RowColumn

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Vertical_Lines(int t_Start_Line, int t_Stop_Line, int t_Col, Colors Clr_01)
        {
            //FIRST LOOP 
            for (int i = t_Start_Line; i <= t_Stop_Line; i++)
            {
                Draw_OnChart_C1("VL" + i.ToString(), i, t_Col - 1, " ||", Clr_01);
            }
            //END FOR
        }
        //END FUNCTION Display_Vertical_Lines

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_Horizontal_Lines(int t_Line, int t_Start_Col, int t_Stop_Col, Colors Clr_01)
        {

            //FIRST LOOP 
            for (int i = t_Start_Col; i < t_Stop_Col; i++)
            {
                Draw_OnChart_C1("HL" + i.ToString(), t_Line, i, "=======", Clr_01);

                if (i == t_Stop_Col - 1)
                    Draw_OnChart_C1("HL" + i.ToString(), t_Line, i, "=========", Clr_01);

            }
            //END FOR
        }
        //END FUNCTION Display_Horizontal_Lines

        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void Display_TABLE()
        {
            //Display_Vertical_Lines(6, 53, 2, Clr_Border_02);
            ///--  SEPARATION LINE BETWEEN % OF T-Pips AND % OF Hi2Lo
            //Display_Vertical_Lines(12, 40, 34, Clr_Border_02);
            //Display_Vertical_Lines(6, 53, 7, Clr_Border_02);

        }
        //END FUNCTION Display_TABLE

    }
    //END MAIN PUBLIC CLASS
}
//END MAIN cALGO ROBOT


GoldnOil750's avatar
GoldnOil750

Joined on 07.04.2015

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: SK1_Volatality_28Pairs.algo
  • Rating: 5
  • Installs: 2814
Comments
Log in to add a comment.
LO
lowincomefamilies1 · 2 years ago

Many places give away free beds or mattresses for low-income families, and if they cannot give them to you for free, they will provide you with outstanding discounts so that you can afford the beds.

MA
marksheehan99@hotmail.com · 4 years ago

Hi S.Khan,

Thanks for putting this code up.

When I try to run I'm getting the error 'cAlgo\Sources\Indicators\MajorPair_Total_Pips_Single_Pair_ATR\MajorPair_Total_Pips_Single_Pair_ATR\MajorPair_Total_Pips_Single_Pair_ATR.csproj doesn't exist.'

The project for this indicator is not in the install file.  How can I get this indicator.  

Cheers,

Mark

ME
meet2mihir · 6 years ago

very great cbot... i have loaded it in default setting....

please mention

first colomn is

15 min hi-lo volit = (15 min candles high-low?)  or its for 1 min?

p=4 4 hour atr= (4 hour atr?) or 15 minutes atr--- and atr is of 14 periods?

4 hour Tpips=?

t pips/atr 1 hour=?

t pips/atr 4 hour=?

 

in short, what each column denotes for.. please help me

 

 

GoldnOil750's avatar
GoldnOil750 · 6 years ago

I do have logics;  But my point in building this cBOT was bascially
(1) To display information in groups;  so one knows which MAJOR-PAIR is strong;
(2) A basic template / framework which is ready to be converted into a Trading robot, once point #1, is all set.

In my experience, we need to first see the data and see if it is aligned with our "Entry Rule" for a trade.

TR
tradermatrix · 6 years ago

hi
thank you for this great work, very technical ...
it just lacks the opening of a command so that this robot is the most remarkable ....
do you have an example or a piece of code adapted to your logic that allows to open and close an order automatically.
cordially

GoldnOil750's avatar
GoldnOil750 · 6 years ago

It does not place any orders.  It is upto you to further develop it and add more data to make a decision when to trade or not.

ME
mert.19.04 · 6 years ago

So when it will give an order ?