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](/uploads/user-5799/avatar/ef52bbc542830fffe0d5b5cb8739dd851d6c31f1.jpeg)
GoldnOil750
Joined on 07.04.2015
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: SK1_Volatality_28Pairs.algo
- Rating: 5
- Installs: 2818
Comments
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
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](/uploads/user-5799/avatar/ef52bbc542830fffe0d5b5cb8739dd851d6c31f1.jpeg)
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.
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](/uploads/user-5799/avatar/ef52bbc542830fffe0d5b5cb8739dd851d6c31f1.jpeg)
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.
So when it will give an order ?
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.