SK1 - 28 Pairs Volatility - free
(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

So when it will give an order ?

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.

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

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.

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

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