Dashboard - Power MeterV0.1_FENIX

Author: GVC
Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Orders Execution
It automatically opens orders when conditions are reachedIt can change open orders parameters, due to possible stepping strategyChecks for the total of open ordersIt Closes Orders by itself
Indicators Used
Moving average indicatorRelative strength indexCommodity channel index
0 Views
0 Downloads
0 Favorites
Dashboard - Power MeterV0.1_FENIX
ÿþ#property copyright "GVC"

#property link      "http://www.metaquotes.net"

#property version   "1.00"

#property strict

#include <stdlib.mqh>

#include <WinUser32.mqh>

#include <ChartObjects\ChartObjectsTxtControls.mqh>



#define BullColor Lime

#define BearColor Red



enum dbu {Constant=0,OneMinute=1,FiveMinutes=5};



sinput      string            t_trade                    = "EXPERT MANAGEMENT"; // =================================

sinput      bool              UseDefaultPairs            = true  ;// Use the default 28 pairs

sinput      string            OwnPairs                   = "EURUSD";// Comma seperated own pair list

sinput      dbu               DashUpdate                 = 0     ;// Dashboard update interval

sinput      int               Magic_Number               = 0003  ;

sinput      bool              autotrade                  = true  ;



sinput      string            t_trigger = "TRIGGER MANAGEMENT"; // =================================

sinput      bool              trigger_use_Pips           = true  ;// Use Pips

sinput      ENUM_TIMEFRAMES   periodPIP                  = 1440  ;// TimeFrame for Pip

sinput      double            trade_MIN_pips             = 1     ;// Minimum pips to open position

sinput      double            trade_MAX_pips             = 30    ;// Maximo de pips para abrir posição   

/*sinput*/  bool              trigger_UseHeatMap1        = false ;// Use Heat Map

/*sinput*/  ENUM_TIMEFRAMES   trigger_TF_HM1             = 1440  ;// TimeFrame for Heat Map 

/*sinput*/  double            trade_MIN_HeatMap1         = 0.01  ;// Minimum % HeatMap to open position



sinput      bool              trigger_use_bidratio       = true  ;// Use BidRatio filtering

sinput      ENUM_TIMEFRAMES   periodBR                   = 1440  ;// TimeFrame for BidRatio

sinput      double            trigger_buy_bidratio       = 60    ;// % Level to open Buy

sinput      double            trade_MIN_buy_bidratio     = 60    ;//Ajuste minimo para abertura

sinput      double            trade_MAX_buy_bidratio     = 97    ;//Ajuste maximo para abertura

sinput      double            trigger_sell_bidratio      = 40    ;// % Level to open Sell

sinput      double            trade_MIN_sell_bidratio    = 40    ;//Ajuste minimo para abertura

sinput      double            trade_MAX_sell_bidratio    = 3     ;//Ajuste maximo para abertura

sinput      bool              trigger_use_buysellratio   = true  ;// Use Buy/Sell Ratio filtering

sinput      double            trigger_buy_buysellratio   = 0.1   ;// Level to open Buy

sinput      double            trade_MIN_buy_buysellratio = 0.1   ;//Ajuste minimo para abertura

sinput      double            trade_MAX_buy_buysellratio = 6.0   ;//Ajuste maximo para abertura  

sinput      double            trigger_sell_buysellratio  = -0.1  ;// level to open Sell

sinput      double            trade_MIN_sell_buysellratio= -0.1  ;//Ajuste minimo para abertura

sinput      double            trade_MAX_sell_buysellratio= -6.0  ;//Ajuste maximo para abertura   

sinput      bool              trigger_use_relstrength    = true  ;// Use Relative Strength filtering (Base)

sinput      double            trigger_buy_relstrength    = 1.0   ;// Strenth to open Buy

sinput      double            trade_MIN_buy_relstrength  = 1.0   ;//Ajuste minimo para abertura

sinput      double            trade_MAX_buy_relstrength  = 6.0   ;//Ajuste maximo para abertura   

sinput      double            trigger_sell_relstrength   = -1.0  ;// Strength to open Sell

sinput      double            trade_MIN_sell_relstrength = -1.0  ;//Ajuste minimo para abertura

sinput      double            trade_MAX_sell_relstrength = -6.0  ;//Ajuste maximo para abertura   

sinput      bool              trigger_use_gap            = true  ;// Use Gap filtering

sinput      double            trigger_gap_buy            = 0.1   ;// Gap level to open Buy

sinput      double            trade_MIN_gap_buy          = 0.1   ;//Ajuste minimo para abertura

sinput      double            trade_MAX_gap_buy          = 5.0   ;//Ajuste maximo para abertura    

sinput      double            trigger_gap_sell           = -0.1  ;// Gap level to open Sell

sinput      double            trade_MIN_gap_sell         = -0.1  ;//Ajuste minimo para abertura

sinput      double            trade_MAX_gap_sell         = -5.0  ;//Ajuste maximo para abertura   

//===================================================================================================================

input       string            t_trigger1                 = "TRIGGER MANAGEMENT";// ============================     

sinput      bool              trigger_Moving_Average     = false ;// Use Moving Average

sinput      int               trade_Period_MA            = 12    ;// Moving Average Period

sinput      bool              trigger_RSI                = false ;// Use RSI

sinput      int               trade_Period_RSI           = 21    ;// RSI Period

sinput      bool              trigger_CCI                = false ;// Use CCI

sinput      int               trade_Period_CCI           = 20    ;// CCI Period

sinput      double            trigger_CCI_Buy            = -100  ;// CCI Buy Level

sinput      double            trigger_CCI_Sell           = 100   ;// CCI Sell Level 

//===================================================================================================================

sinput      string            t_basket = "BASKET MANAGEMENT"; // =================================

sinput      double            lot                        = 0.01  ;

sinput      int               MaxTrades                  = 1     ;// Max trades per pair

sinput      int               MaxTotalTrades             = 0     ;// Max total trades overall

sinput      int               MaxSpread                  = 5.0   ;// Max Spread Allowe

sinput      int               Basket_Target              = 0     ;// Basket Take Profit in $

sinput      int               Basket_StopLoss            = 0     ;// Basket Stop Lloss in $

sinput      int               Piptp                      = 30    ;// Takeprofit in pips 

sinput      int               Pipsl                      = 0     ;// Stoploss in pips 

/*sinput*/  double            BasketP1                   = 0.0   ;// At profit 1

/*sinput*/  double            BasketL1                   = 0.0   ;// Lock 1

/*sinput*/  double            BasketP2                   = 0.0   ;// At profit 2

/*sinput*/  double            BasketL2                   = 0.0   ;// Lock 2

/*sinput*/  double            BasketP3                   = 0.0   ;// At profit 3

/*sinput*/  double            BasketL3                   = 0.0   ;// Lock 3

/*sinput*/  double            BasketP4                   = 0.0   ;// At profit 4

/*sinput*/  double            BasketL4                   = 0.0   ;// Lock 4

/*sinput*/  double            BasketP5                   = 0.0   ;// At profit 5

/*sinput*/  double            BasketL5                   = 0.0   ;// Lock 5

/*sinput*/  double            BasketP6                   = 0.0   ;// At profit 6

/*sinput*/  double            BasketL6                   = 0.0   ;// Lock 6

/*sinput*/  bool              TrailLastLock              = true  ;// Trail the last set lock

/*sinput*/  double            TrailDistance              = 0.0   ;// Trail distance 0 means last lock

sinput      int               StopProfit                 = 0     ;// Stop after this many profitable baskets

sinput      double            Adr1tp                     = 0    ;// Takeprofit percent adr(10) 0=None

sinput      double            Adr1sl                     = 0    ;// Stoploss adr percent adr(10) 0 = None

sinput      int               StopLoss                   = 0     ;// Stop after this many losing baskets baskets

/*sinput*/  bool              OnlyAddProfit              = false  ;// Only adds trades in profit 

/*sinput*/  bool              CloseAllSession            = false ;// Close all trades after session(s)

//===================================================================================================================

sinput      string            t_time = "TIME MANAGEMENT"; // =================================

sinput      bool              UseSession1                = true;

sinput      string            sess1start                 = "00:00";

sinput      string            sess1end                   = "23:59";

sinput      string            sess1comment               = "AUTO SESS1";

sinput      bool              UseSession2                = false;

sinput      string            sess2start                 = "00:00";

sinput      string            sess2end                   = "23:59";

sinput      string            sess2comment               = "AUTO SESS2";

sinput      bool              UseSession3                = false;

sinput      string            sess3start                 = "00:00";

sinput      string            sess3end                   = "23:59";

sinput      string            sess3comment               = "AUTO SESS3";



sinput      string            t_chart = "CHART MANAGEMENT"; // =================================

sinput      ENUM_TIMEFRAMES   TimeFrame                  = 30    ;// TimeFrame to open chart

sinput      string            usertemplate               = "Dash";// Template

/*sinput*/  int               x_axis                     = 0     ;

/*sinput*/  int               y_axis                     = 15    ;



int BeforeMin = 15;

int FontSize = 10;

string FontName = "Arial";

int ShiftX = 250;

int ShiftY = 70;

int Corner = 0;



string button_close_basket_All = "btn_Close ALL"; 

string button_close_basket_Prof = "btn_Close Prof";

string button_close_basket_Loss = "btn_Close Loss";



string button_reset_ea = "RESET EA";

 

string button_EUR_basket = "EUR_BASKET"; 

string button_EUR_basket_buy = "EUR_BASKET_BUY";

string button_EUR_basket_sell = "EUR_BASKET_SELL";

string button_EUR_basket_close = "EUR_BASKET_CLOSE";



string button_GBP_basket = "GBP_BASKET"; 

string button_GBP_basket_buy = "GBP_BASKET_BUY";

string button_GBP_basket_sell = "GBP_BASKET_SELL";

string button_GBP_basket_close = "GBP_BASKET_CLOSE";



string button_CHF_basket = "CHF_BASKET"; 

string button_CHF_basket_buy = "CHF_BASKET_BUY";

string button_CHF_basket_sell = "CHF_BASKET_SELL";

string button_CHF_basket_close = "CHF_BASKET_CLOSE";



string button_USD_basket = "USD_BASKET"; 

string button_USD_basket_buy = "USD_BASKET_BUY";

string button_USD_basket_sell = "USD_BASKET_SELL";

string button_USD_basket_close = "USD_BASKET_CLOSE";



string button_CAD_basket = "CAD_BASKET"; 

string button_CAD_basket_buy = "CAD_BASKET_BUY";

string button_CAD_basket_sell = "CAD_BASKET_SELL";

string button_CAD_basket_close = "CAD_BASKET_CLOSE";



string button_NZD_basket = "NZD_BASKET"; 

string button_NZD_basket_buy = "NZD_BASKET_BUY";

string button_NZD_basket_sell = "NZD_BASKET_SELL";

string button_NZD_basket_close = "NZD_BASKET_CLOSE";



string button_AUD_basket = "AUD_BASKET"; 

string button_AUD_basket_buy = "AUD_BASKET_BUY";

string button_AUD_basket_sell = "AUD_BASKET_SELL";

string button_AUD_basket_close = "AUD_BASKET_CLOSE";



string button_JPY_basket = "JPY_BASKET"; 

string button_JPY_basket_buy = "JPY_BASKET_BUY";

string button_JPY_basket_sell = "JPY_BASKET_SELL";

string button_JPY_basket_close = "JPY_BASKET_CLOSE";

 

string DefaultPairs[] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CADJPY","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD","GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD","NZDCAD","NZDCHF","NZDJPY","NZDUSD","USDCAD","USDCHF","USDJPY"};

string TradePairs[];

string curr[8] = {"USD","EUR","GBP","JPY","AUD","NZD","CAD","CHF"};

string EUR[7] = {"EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD"};

string GBP[6] = {"GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD"};

string GBP_R[1] = {"EURGBP"};

string CHF[1] = {"CHFJPY"};

string CHF_R[6] = {"AUDCHF","CADCHF","EURCHF","GBPCHF","NZDCHF","USDCHF"};

string USD[3] = {"USDCAD","USDCHF","USDJPY"};

string USD_R[4] = {"AUDUSD","EURUSD","GBPUSD","NZDUSD"};

string CAD[2] = {"CADCHF","CADJPY"};

string CAD_R[5] = {"AUDCAD","EURCAD","GBPCAD","NZDCAD","USDCAD"};

string NZD[4] = {"NZDCAD","NZDCHF","NZDJPY","NZDUSD"};

string NZD_R[3] = {"AUDNZD","EURNZD","GBPNZD"};

string AUD[5] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD"};

string AUD_R[2] = {"EURAUD","GBPAUD"};

string JPY_R[7] = {"AUDJPY","CADJPY","CHFJPY","EURJPY","GBPJPY","NZDJPY","USDJPY"};



string   _font="Consolas";



struct pairinf {

   double PairPip;

   int pipsfactor;

   double Pips;

   double PipsSig;

   double Pipsprev;

   double Spread;

   double point;

   int lastSignal;

   int    base;

   int    quote;

   bool dux;   

}; pairinf pairinfo[];



#define NONE 0

#define DOWN -1

#define UP 1



#define NOTHING 0

#define BUY 1

#define SELL 2



struct signal { 

   string symbol;

   double range;

   double range1;

   double ratio;

   double ratio1;

   double bidratio;

   double fact;

   double strength;

   double strength1;

   double strength2;

   double calc;

   double strength3;

   double strength4;

   double strength5;

   double strength6;

   double strength7;

   double strength8;

   double strength_Gap;

   double hi;

   double lo;

   double prevratio;   

   double prevbid;   

   int    shift;

   double open;

   double close;

   double bid;

   double point;   

   double Signalperc;   

   double SigRatio;

   double SigRelStr;

   double SigBSRatio;    

   double SigCRS;

   double SigGap;

   double SigGapPrev;

   double SigRatioPrev;

   double Signalm1;  double Signalm5;  double Signalm15;  double Signalm30;  double Signalh1;  double Signalh4;  double Signald1;

   double Signalmaup;

   double Signalmadn;

   double SignaltcM1;  double SignaltcM5;  double SignaltcM15;  double SignaltcM30;  double SignaltcH1;  double SignaltcH4;  double SignaltcD1;

   double SignalccM1;  double SignalccM5;  double SignalccM15;  double SignalccM30;  double SignalccH1;  double SignalccH4;  double SignalccD1;

   //double Signalhah4;

   //double Signalhad1;

}; signal signals[];



struct currency 

  {

   string            curr;

   double            strength;

   double            prevstrength;

   double            crs;

   int               sync;

   datetime          lastbar;

  }

; currency currencies[8];



double totalbuystrength,totalsellstrength;



color ProfitColor,ProfitColor1,ProfitColor2,ProfitColor3,PipsColor,LotColor,LotColor1,OrdColor,OrdColor1;

color BackGrnCol =C'20,20,20';

color LineColor=clrBlack;

color TextColor=clrBlack;



struct adrval {

   double adr;

   double adr1;

   double adr5;

   double adr10;

   double adr20;

}; adrval adrvalues[];



double totalprofit,totallots;



datetime s1start,s2start,s3start;

datetime s1end,s2end,s3end;



string comment;

int strper = PERIOD_W1;

int profitbaskets = 0;

int lossbaskets = 0;

int ticket;

int    orders  = 0;

double blots[28],slots[28],bprofit[28],sprofit[28],tprofit[28],bpos[28],spos[28],singolprofit[28];

double BuyMin[28],BuyMax[28],BuyMinLot[28],BuyMaxTic[28],BuyTicProfit[28],BuyProfit[28],ProfitBuy[28];

double SellMin[28],SellMax[28],SellMinLot[28],SellMaxTic[28],SellTicProfit[28],SellProfit[28],ProfitSell[28];

bool CloseAll;

string postfix=StringSubstr(Symbol(),6,6);

int   symb_cnt=0;

int period1[]= {240,1440,10080};

double factor;

int labelcolor; 

double GetBalanceSymbol,SymbolMaxDD,SymbolMaxHi;

double PercentFloatingSymbol=0;

double PercentMaxDDSymbol=0;

datetime newday=0;

datetime newm1=0; 

bool   Accending=true;

/* HP */

int localday = 99;

bool s1active = false;

bool s2active = false;

bool s3active = false;

MqlDateTime sess;

string strspl[];

double currentlock = 0.0;

bool trailstarted = false;

double lockdistance = 0.0;

int totaltrades = 0;

int maxtotaltrades=0;

double stoploss;

double takeprofit;

double currstrength[8];

double prevstrength[8];

string Sig[28],Sell;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {   

  

  if (UseDefaultPairs == true)

  ArrayCopy(TradePairs,DefaultPairs);

  else

  StringSplit(OwnPairs,',',TradePairs);

  

  for (int i=0;i<8;i++)

  currencies[i].curr = curr[i]; 

  

  if (ArraySize(TradePairs) <= 0) {

  Print("No pairs to trade");

  return(INIT_FAILED);

  }

  

  ArrayResize(adrvalues,ArraySize(TradePairs));

  ArrayResize(signals,ArraySize(TradePairs));

  ArrayResize(pairinfo,ArraySize(TradePairs));

  

  for(int i=0;i<ArraySize(TradePairs);i++){

  TradePairs[i]=TradePairs[i]+postfix;    

  

  pairinfo[i].base = StringSubstr(TradePairs[i],0,3);

  pairinfo[i].quote = StringSubstr(TradePairs[i],3,0);

  

  if (MarketInfo(TradePairs[i] ,MODE_DIGITS) == 4 || MarketInfo(TradePairs[i] ,MODE_DIGITS) == 2) {

  pairinfo[i].PairPip = MarketInfo(TradePairs[i] ,MODE_POINT);

  pairinfo[i].pipsfactor = 1;

  } else { 

  pairinfo[i].PairPip = MarketInfo(TradePairs[i] ,MODE_POINT)*10;

  pairinfo[i].pipsfactor = 10;

  }

  

  SetEditLabel("minprofit",x_axis,y_axis+590,80,40,DoubleToString(Min_Profit,1),30,clrBlue,clrWhite,"\n"); //  "goal",440,618,50,40,

  //SetPanel("BarSupMeter",0,x_axis,y_axis-30,1098,30,clrDarkSlateGray,C'61,61,61',1);                

  //SetPanel("Bar",0,x_axis,y_axis,1098,450,C'30,30,30',C'61,61,61',1);         

  SetPanel("Report",0,x_axis,y_axis+590,150,55,C'30,30,30',C'61,61,61',1);  

  

  SetPanel("A1"+IntegerToString(i),0,x_axis,(i*10)+y_axis+310,50,10,clrBlack,C'61,61,61',1);//COLUNA PARES / LINHA VERDE

  //SetPanel("B1"+IntegerToString(i),0,x_axis+50,(i*10)+y_axis+310,50,10,clrBlack,C'61,61,61',1);//COLUNA PARES / LINHA VERDE

  //SetPanel("BarSupMeter",0,x_axis,y_axis-30,1098,30,clrDarkSlateGray,C'61,61,61',1);                

  //SetPanel("Bar1",0,x_axis,y_axis,220,280,C'30,30,30',C'61,61,61',1);

  //SetPanel("Bar2",0,x_axis,y_axis+280,200,280,C'30,30,30',C'61,61,61',1);

  //SetPanel("Panel",0,x_axis+600,y_axis+13,130,150,C'30,30,30',clrWhite,1);

  //SetPanel("BottPanel",0,x_axis+405,y_axis+450,602,77,C'30,30,30',clrWhite,1);

  SetPanel("Spread"+IntegerToString(i),0,x_axis+50,(i*10)+y_axis,20,10,C'10,10,10',clrWhite,1);

  SetPanel("Pips"+IntegerToString(i),0,x_axis+70,(i*10)+y_axis,25,10,clrSilver,clrWhite,1);

  SetPanel("Adr"+IntegerToString(i),0,x_axis+90,(i*10)+y_axis,20,10,clrSilver,clrWhite,1);

  SetPanel("BidRatio"+IntegerToString(i),0,x_axis+110,(i*10)+y_axis,35,10,clrBlack,C'61,61,61',1);

  SetPanel("BSRatio"+IntegerToString(i),0,x_axis+145,(i*10)+y_axis,15,10,clrBlack,C'61,61,61',1);

  SetPanel("RelStr"+IntegerToString(i),0,x_axis+160,(i*10)+y_axis,10,10,clrBlack,C'61,61,61',1);

  SetPanel("GAP123"+IntegerToString(i),0,x_axis+170,(i*10)+y_axis,25,10,clrBlack,C'61,61,61',1);         

  //SetPanel("HM1"+IntegerToString(i),0,x_axis+220,(i*10)+y_axis+280,70,10,BackGrnCol,C'61,61,61',1);       

  //SetPanel("TP",0,x_axis+230,y_axis-10,30,10,Black,White,1);

  //SetPanel("TP1",0,x_axis+220,y_axis-50,125,20,Black,White,1);

  //SetPanel("TP2",0,x_axis+345,y_axis-50,160,20,Black,White,1);

  //SetPanel("TP3",0,x_axis+505,y_axis-50,160,20,Black,White,1);

  //SetPanel("TP4",0,x_axis+665,y_axis-50,130,20,Black,White,1);

  //SetPanel("TP5",0,x_axis+795,y_axis-50,130,20,Black,White,1);

  //SetPanel("TP6",0,x_axis+95,y_axis-50,100,20,Black,White,1);

  //SetPanel("TP7",0,x_axis+921,y_axis-50,130,20,Black,White,1);

  //SetPanel("TP8",0,x_axis+1051,y_axis-50,22,20,Black,White,1);

  //SetPanel("TP9",0,x_axis+1073,y_axis-50,22,20,Black,White,1);        

  

  //SetPanel("A2"+IntegerToString(i),0,x_axis+50,(i*10)+y_axis+310,230,10,C'30,30,30',C'61,61,61',1);          

  SetText("Pr1"+IntegerToString(i),StringSubstr(TradePairs[i],0,6),x_axis+5,(i*10)+y_axis+310,clrWhite,7);

  SetText("Spr1"+IntegerToString(i),0,x_axis+55,(i*10)+y_axis,Orange,6);

  SetText("Pp1"+IntegerToString(i),0,x_axis+71,(i*10)+y_axis,PipsColor,6);

  SetText("S1"+IntegerToString(i),0,x_axis+95,(i*10)+y_axis,Yellow,6);

  SetText("bLots"+IntegerToString(i),DoubleToStr(blots[i],2),x_axis+280,(i*10)+y_axis,C'61,61,61',6);

  SetText("sLots"+IntegerToString(i),DoubleToStr(slots[i],2),x_axis+300,(i*10)+y_axis,C'61,61,61',6);

  SetText("bPos"+IntegerToString(i),DoubleToStr(bpos[i],0),x_axis+320,(i*10)+y_axis,C'61,61,61',6);

  SetText("sPos"+IntegerToString(i),DoubleToStr(spos[i],0),x_axis+330,(i*10)+y_axis,C'61,61,61',6);

  SetText("TProf"+IntegerToString(i),DoubleToStr(MathAbs(bprofit[i]),2),x_axis+340,(i*10)+y_axis,C'61,61,61',6);

  SetText("SProf"+IntegerToString(i),DoubleToStr(MathAbs(sprofit[i]),2),x_axis+360,(i*10)+y_axis,C'61,61,61',6);

  SetText("TtlProf"+IntegerToString(i),DoubleToStr(MathAbs(tprofit[i]),2),x_axis+380,(i*10)+y_axis,C'61,61,61',6);

  SetText("TotProf",DoubleToStr(MathAbs(totalprofit),2),x_axis+380,y_axis+285,ProfitColor1,6);         

  //SetText("Lowest","Lowest= "+DoubleToStr(SymbolMaxDD,2)+" ("+DoubleToStr(PercentMaxDDSymbol,2)+"%)",x_axis+670,y_axis-47,BearColor,6);

  //SetText("Highest","Highest= "+DoubleToStr(SymbolMaxHi,2)+" ("+DoubleToStr(PercentFloatingSymbol,2)+"%)",x_axis+800,y_axis-47,BullColor,6);

  //SetText("Lock","Lock= "+DoubleToStr(currentlock,2),x_axis+925,y_axis-47,BullColor,6);

  //SetText("Won",IntegerToString(profitbaskets,2),x_axis+1053,y_axis-47,BullColor,6);

  //SetText("Lost",IntegerToString(lossbaskets,2),x_axis+1075,y_axis-47,BearColor,6);

  

  //SetText("TPr","Basket TakeProfit =$ "+DoubleToStr(Basket_Target,0),x_axis+378,y_axis-47,Yellow,6);

  //SetText("SL","Basket StopLoss =$ -"+DoubleToStr(Basket_StopLoss,0),x_axis+538,y_axis-47,Yellow,6);                 

  //SetText("Symbol","Sprd   PFO  ADR  BidRatio  BSR RStr Gap",x_axis+60,y_axis-10,White,6);               

  //SetText("Trades","Buy       Sell     Buy  Sell      Buy      Sell",x_axis+840,y_axis-17,White,6);

  //SetText("TTr","Lots           Orders",x_axis+860,y_axis-30,White,6);

  

  SetText("Rep_01","MINPROFIT",x_axis,y_axis+630,clrGold,8);

  SetText("Rep_Symb","Symbol",x_axis+85,y_axis+590,clrGold,8);  

  SetText("NewOrder","Hedge Order",x_axis+85,y_axis+610,clrKhaki,8); 

  SetText("Hedge","Hedge",x_axis+85,y_axis+630,clrKhaki,8);

   

  Create_Button(IntegerToString(i)+"Pair",StringSubstr(TradePairs[i],0,6),50 ,11,x_axis ,(i*10)+y_axis,C'35,35,35',clrWhite);

  Create_Button(i+"Hold","~",15 ,10,x_axis+50,(i*10)+y_axis+310,C'35,35,35',clrAqua);

  Create_Button(i+"BUY","B",15 ,10,x_axis+65,(i*10)+y_axis+310,C'35,35,35',clrLime);           

  Create_Button(i+"SELL","S",15 ,10,x_axis+80 ,(i*10)+y_axis+310,C'35,35,35',clrRed);

  Create_Button(i+"CLOSE","C",15 ,10,x_axis+95,(i*10)+y_axis+310,C'35,35,35',clrYellow);

  }



  //Basket Trades

  int basket_x = x_axis -5;

  int basket_y = y_axis + 590;

  int i = 230;

  

  //AUD

  Create_Button(button_AUD_basket,"AUD",40 ,12,basket_x+i ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_AUD_basket_buy,"BUY",40 ,12,basket_x+i ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_AUD_basket_sell,"SELL",40 ,12,basket_x+i ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_AUD_basket_close,"CLOSE",40 ,12,basket_x+i ,basket_y+36,C'35,35,35',clrOrange);

  //CAD

  i += 50;

  Create_Button(button_CAD_basket,"CAD",40 ,12,basket_x+i-10 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_CAD_basket_buy,"BUY",40 ,12,basket_x+i-10 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_CAD_basket_sell,"SELL",40 ,12,basket_x+i-10 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_CAD_basket_close,"CLOSE",40 ,12,basket_x+i-10 ,basket_y+36,C'35,35,35',clrOrange);

  //CHF

  i += 50;

  Create_Button(button_CHF_basket,"CHF",40 ,12,basket_x+i-20 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_CHF_basket_buy,"BUY",40 ,12,basket_x+i-20 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_CHF_basket_sell,"SELL",40 ,12,basket_x+i-20 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_CHF_basket_close,"CLOSE",40 ,12,basket_x+i-20 ,basket_y+36,C'35,35,35',clrOrange);

  //EUR

  i += 50;

  Create_Button(button_EUR_basket,"EUR",40 ,12,basket_x+i-30 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_EUR_basket_buy,"BUY",40 ,12,basket_x+i-30 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_EUR_basket_sell,"SELL",40 ,12,basket_x+i-30 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_EUR_basket_close,"CLOSE",40 ,12,basket_x+i-30 ,basket_y+36,C'35,35,35',clrOrange);

  //GBP

  i += 50;

  Create_Button(button_GBP_basket,"GBP",40 ,12,basket_x+i-40 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_GBP_basket_buy,"BUY",40 ,12,basket_x+i-40 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_GBP_basket_sell,"SELL",40 ,12,basket_x+i-40 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_GBP_basket_close,"CLOSE",40 ,12,basket_x+i-40 ,basket_y+36,C'35,35,35',clrOrange);

  //JPY

  i += 50;

  Create_Button(button_JPY_basket,"JPY",40 ,12,basket_x+i-50 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_JPY_basket_buy,"BUY",40 ,12,basket_x+i-50 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_JPY_basket_sell,"SELL",40 ,12,basket_x+i-50 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_JPY_basket_close,"CLOSE",40 ,12,basket_x+i-50 ,basket_y+36,C'35,35,35',clrOrange);

  //NZD

  i += 50;

  Create_Button(button_NZD_basket,"NZD",40 ,12,basket_x+i-60 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_NZD_basket_buy,"BUY",40 ,12,basket_x+i-60 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_NZD_basket_sell,"SELL",40 ,12,basket_x+i-60 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_NZD_basket_close,"CLOSE",40 ,12,basket_x+i-60 ,basket_y+36,C'35,35,35',clrOrange);

  //USD

  i += 50;

  Create_Button(button_USD_basket,"USD",40 ,12,basket_x+i-70 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_USD_basket_buy,"BUY",40 ,12,basket_x+i-70 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_USD_basket_sell,"SELL",40 ,12,basket_x+i-70 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_USD_basket_close,"CLOSE",40 ,12,basket_x+i-70 ,basket_y+36,C'35,35,35',clrOrange);

  

  Create_Button(button_close_basket_All,"CLOSE ALL",75 ,12,x_axis+150 ,basket_y,C'35,35,35',clrWhite);

  Create_Button(button_close_basket_Prof,"CLOSE PROFIT",75 ,12,x_axis+150 ,basket_y+12,C'35,35,35',clrLime);

  Create_Button(button_close_basket_Loss,"CLOSE LOSS",75 ,12,x_axis+150 ,basket_y+24,C'35,35,35',clrRed);

  Create_Button(button_reset_ea,"RESET EA",75 ,12,x_axis+150 ,basket_y+36,C'35,35,35',clrOrange);

  

  newday = 0;

  newm1=0;

  

/*  HP  */

  localday = 99;

  s1active = false;

  s2active = false;

  s3active = false;

  trailstarted = false;

  

  if (MaxTotalTrades == 0)

  maxtotaltrades = ArraySize(TradePairs) * MaxTrades;

  else

  maxtotaltrades = MaxTotalTrades;



/*  HP  */

  

  EventSetTimer(1);

  

  return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//--- destroy timer

  EventKillTimer();

  ObjectsDeleteAll();

  

  }

//+------------------------------------------------------------------+

//| Timer function                                                   |

//+------------------------------------------------------------------+

void OnTimer() {

  

  Trades();  

  TradeManager();  

  PlotTrades();  

  PlotSpreadPips();  

  GetSignals();   

  displayMeter();

  GetSignals1();   

  displayMeter1();

  Geth4d1();

  GetTrendChange();

  GetCommodity();

  

  if (newday != iTime("EURUSD"+postfix,PERIOD_D1,0)) {

  GetAdrValues();

  PlotAdrValues();

  newday = iTime("EURUSD"+postfix,PERIOD_D1,0);

  }

  

  if (DashUpdate == 0 || (DashUpdate == 1 && newm1 != iTime("EURUSD"+postfix,PERIOD_M1,0)) || (DashUpdate == 5 && newm1 != iTime("EURUSD"+postfix,PERIOD_M5,0))) {

        

  for(int i=0;i<ArraySize(TradePairs);i++) 

  for(int a=0;a<5;a++){

  

  ChngBoxCol((signals[i].Signalperc * 100), i);      

  

  //SetText("Percent"+IntegerToString(i),StringSubstr(TradePairs[i],0,6)+"   "+DoubleToStr(signals[i].Signalperc,2)+"%" ,x_axis+225,(i*10)+y_axis+280,clrBlack,6);

  

  if(pairinfo[i].PipsSig==UP){SetObjText("Sigpips"+IntegerToString(i),CharToStr(217),x_axis+84,(i*10)+y_axis,clrLime,6);}

  else if(pairinfo[i].PipsSig==DOWN){SetObjText("Sigpips"+IntegerToString(i),CharToStr(218),x_axis+84,(i*10)+y_axis,clrFireBrick,6);}

  

  SetText("BidRat"+IntegerToString(i),DoubleToStr(signals[i].ratio,2)+"%",x_axis+110,(i*10)+y_axis,Colorstr(signals[i].ratio),6); 

  SetText("BSRat"+IntegerToString(i),DoubleToStr(signals[i].strength5,1),x_axis+145,(i*10)+y_axis,ColorBSRat(signals[i].strength5),6);

  SetText("RelStrgth"+IntegerToString(i),DoubleToStr(signals[i].calc,0),x_axis+160,(i*10)+y_axis,Colorsync(signals[i].calc),6);

  SetText("gap"+signals[i].symbol, DoubleToStr(signals[i].strength_Gap,1),x_axis+170,(i*10)+y_axis,ColorGap(signals[i].strength_Gap),6);

  

  if(signals[i].SigRatioPrev==UP){SetObjText("Sig"+IntegerToString(i),CharToStr(217),x_axis+135,(i*10)+y_axis,clrLime,6);}

  else if(signals[i].SigRatioPrev==DOWN){SetObjText("Sig"+IntegerToString(i),CharToStr(218),x_axis+135,(i*10)+y_axis,clrFireBrick,6);}

  

  if(signals[i].SigGapPrev==UP){SetObjText("GapSig"+IntegerToString(i),CharToStr(233),x_axis+185,(i*10)+y_axis,clrLime,6);}

  else if(signals[i].SigGapPrev==DOWN){SetObjText("GapSig"+IntegerToString(i),CharToStr(234),x_axis+185,(i*10)+y_axis,clrFireBrick,6);}

  else {SetObjText("GapSig"+IntegerToString(i),CharToStr(243),x_axis+185,(i*10)+y_axis,clrOrange,6);}

  

//---

  if(signals[i].Signalm1==UP){SetObjText("SigM1"+IntegerToString(i),CharToStr(233),x_axis+110,(i*10)+y_axis+310,C'0,135,135',6);}

  if(signals[i].Signalm1==DOWN){SetObjText("SigM1"+IntegerToString(i),CharToStr(234),x_axis+110,(i*10)+y_axis+312,BearColor,6);}

  if(signals[i].Signalm5==UP){SetObjText("SigM5"+IntegerToString(i),CharToStr(233),x_axis+120,(i*10)+y_axis+310,C'0,135,135',6);}

  if(signals[i].Signalm5==DOWN){SetObjText("SigM5"+IntegerToString(i),CharToStr(234),x_axis+120,(i*10)+y_axis+312,BearColor,6);}

  if(signals[i].Signalm15==UP){SetObjText("SigM15"+IntegerToString(i),CharToStr(233),x_axis+130,(i*10)+y_axis+310,C'0,135,135',6);}

  if(signals[i].Signalm15==DOWN){SetObjText("SigM15"+IntegerToString(i),CharToStr(234),x_axis+130,(i*10)+y_axis+312,BearColor,6);}

  if(signals[i].Signalm30==UP){SetObjText("SigM30"+IntegerToString(i),CharToStr(233),x_axis+140,(i*10)+y_axis+310,C'0,135,135',6);}

  if(signals[i].Signalm30==DOWN){SetObjText("SigM30"+IntegerToString(i),CharToStr(234),x_axis+140,(i*10)+y_axis+312,BearColor,6);}  

  if(signals[i].Signalh1==UP){SetObjText("SigH1"+IntegerToString(i),CharToStr(233),x_axis+150,(i*10)+y_axis+310,C'0,135,135',6);}

  if(signals[i].Signalh1==DOWN){SetObjText("SigH1"+IntegerToString(i),CharToStr(234),x_axis+150,(i*10)+y_axis+312,BearColor,6);}

  if(signals[i].Signalh4==UP){SetObjText("SigH4"+IntegerToString(i),CharToStr(233),x_axis+160,(i*10)+y_axis+310,C'0,135,135',6);}

  if(signals[i].Signalh4==DOWN){SetObjText("SigH4"+IntegerToString(i),CharToStr(234),x_axis+160,(i*10)+y_axis+312,BearColor,6);}

  if(signals[i].Signald1==UP){SetObjText("SGDD1"+IntegerToString(i),CharToStr(233),x_axis+170,(i*10)+y_axis+310,C'0,135,135',6);}

  if(signals[i].Signald1==DOWN){SetObjText("SGDD1"+IntegerToString(i),CharToStr(234),x_axis+170,(i*10)+y_axis+312,BearColor,6);}

      

  if(signals[i].SignaltcM1==UP){SetObjText("TCM1"+IntegerToString(i),CharToStr(233),x_axis+190,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignaltcM1==DOWN){SetObjText("TCM1"+IntegerToString(i),CharToStr(234),x_axis+190,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("TCM1"+IntegerToString(i),CharToStr(243),x_axis+190,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignaltcM5==UP){SetObjText("TCM5"+IntegerToString(i),CharToStr(233),x_axis+200,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignaltcM5==DOWN){SetObjText("TCM5"+IntegerToString(i),CharToStr(234),x_axis+200,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("TCM5"+IntegerToString(i),CharToStr(243),x_axis+200,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignaltcM15==UP){SetObjText("TCM15"+IntegerToString(i),CharToStr(233),x_axis+210,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignaltcM15==DOWN){SetObjText("TCM15"+IntegerToString(i),CharToStr(234),x_axis+210,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("TCM15"+IntegerToString(i),CharToStr(243),x_axis+210,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignaltcM30==UP){SetObjText("TCM30"+IntegerToString(i),CharToStr(233),x_axis+220,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignaltcM30==DOWN){SetObjText("TCM30"+IntegerToString(i),CharToStr(234),x_axis+220,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("TCM30"+IntegerToString(i),CharToStr(243),x_axis+220,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignaltcH1==UP){SetObjText("TCH1"+IntegerToString(i),CharToStr(233),x_axis+230,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignaltcH1==DOWN){SetObjText("TCH1"+IntegerToString(i),CharToStr(234),x_axis+230,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("TCH1"+IntegerToString(i),CharToStr(243),x_axis+230,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignaltcH4==UP){SetObjText("TCH4"+IntegerToString(i),CharToStr(233),x_axis+240,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignaltcH4==DOWN){SetObjText("TCH4"+IntegerToString(i),CharToStr(234),x_axis+240,(i*10)+y_axis+312,BearColor,6);} 

  else {SetObjText("TCH4"+IntegerToString(i),CharToStr(243),x_axis+240,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignaltcD1==UP){SetObjText("TCD1"+IntegerToString(i),CharToStr(233),x_axis+250,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignaltcD1==DOWN){SetObjText("TCD1"+IntegerToString(i),CharToStr(234),x_axis+250,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("TCD1"+IntegerToString(i),CharToStr(243),x_axis+250,(i*10)+y_axis+310,clrYellow,6);}  

      

  if(signals[i].SignalccM1==UP){SetObjText("CCIM1"+IntegerToString(i),CharToStr(233),x_axis+270,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignalccM1==DOWN){SetObjText("CCIM1"+IntegerToString(i),CharToStr(234),x_axis+270,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("CCIM1"+IntegerToString(i),CharToStr(243),x_axis+270,(i*10)+y_axis+310,clrYellow,6);}

  if(signals[i].SignalccM5==UP){SetObjText("CCIM5"+IntegerToString(i),CharToStr(233),x_axis+280,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignalccM5==DOWN){SetObjText("CCIM5"+IntegerToString(i),CharToStr(234),x_axis+280,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("CCIM5"+IntegerToString(i),CharToStr(243),x_axis+280,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignalccM15==UP){SetObjText("CCIM15"+IntegerToString(i),CharToStr(233),x_axis+290,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignalccM15==DOWN){SetObjText("CCIM15"+IntegerToString(i),CharToStr(234),x_axis+290,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("CCIM15"+IntegerToString(i),CharToStr(243),x_axis+290,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignalccM30==UP){SetObjText("CCIM30"+IntegerToString(i),CharToStr(233),x_axis+300,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignalccM30==DOWN){SetObjText("CCIM30"+IntegerToString(i),CharToStr(234),x_axis+300,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("CCIM30"+IntegerToString(i),CharToStr(243),x_axis+300,(i*10)+y_axis+310,clrYellow,6);}    

  if(signals[i].SignalccH1==UP){SetObjText("CCIH1"+IntegerToString(i),CharToStr(233),x_axis+310,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignalccH1==DOWN){SetObjText("CCIH1"+IntegerToString(i),CharToStr(234),x_axis+310,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("CCIH1"+IntegerToString(i),CharToStr(243),x_axis+310,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignalccH4==UP){SetObjText("CCIH4"+IntegerToString(i),CharToStr(233),x_axis+320,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignalccH4==DOWN){SetObjText("CCIH4"+IntegerToString(i),CharToStr(234),x_axis+320,(i*10)+y_axis+312,BearColor,6);}      

  else {SetObjText("CCIH4"+IntegerToString(i),CharToStr(243),x_axis+320,(i*10)+y_axis+310,clrYellow,6);}  

  if(signals[i].SignalccD1==UP){SetObjText("CCID1"+IntegerToString(i),CharToStr(233),x_axis+330,(i*10)+y_axis+310,C'0,135,135',6);}

  else  if(signals[i].SignalccD1==DOWN){SetObjText("CCID1"+IntegerToString(i),CharToStr(234),x_axis+330,(i*10)+y_axis+312,BearColor,6);}

  else {SetObjText("CCID1"+IntegerToString(i),CharToStr(243),x_axis+330,(i*10)+y_axis+310,clrYellow,6);}  



//---  

//---------------------------------------------------------------------------------------------------------------------------+                

  if (((pairinfo[i].PipsSig==UP && pairinfo[i].Pips >trade_MIN_pips) || trigger_use_Pips==false)

  && ((pairinfo[i].Pips >trade_MIN_pips)|| trigger_use_Pips==false)

  && ((pairinfo[i].Pips <trade_MAX_pips)|| trigger_use_Pips==false)

  && ((signals[i].SigRatioPrev==UP && signals[i].ratio>=trigger_buy_bidratio) || trigger_use_bidratio==false)

  && ((signals[i].ratio > trade_MIN_buy_bidratio)|| trigger_use_bidratio==false)

  && ((signals[i].ratio < trade_MAX_buy_bidratio)|| trigger_use_bidratio==false)

  && (signals[i].calc>=trigger_buy_relstrength || trigger_use_relstrength==false)

  && ((signals[i].calc > trade_MIN_buy_relstrength)|| trigger_use_relstrength==false)

  && ((signals[i].calc < trade_MAX_buy_relstrength)|| trigger_use_relstrength==false)

  && (signals[i].strength5>=trigger_buy_buysellratio || trigger_use_buysellratio==false)

  && ((signals[i].strength5 > trade_MIN_buy_buysellratio)|| trigger_use_buysellratio==false)

  && ((signals[i].strength5 < trade_MAX_buy_buysellratio)|| trigger_use_buysellratio==false)

  && ((signals[i].SigGapPrev==UP && signals[i].strength_Gap>=trigger_gap_buy) || trigger_use_gap==false)         

  && ((signals[i].strength_Gap > trade_MIN_gap_buy)|| trigger_use_gap==false)

  && ((signals[i].strength_Gap < trade_MAX_gap_buy)|| trigger_use_gap==false)  

  &&(signals[i].Signalmaup>0||trigger_Moving_Average==false )

  &&(signals[i].SignaltcM1 == UP || trigger_RSI==false)

  &&(signals[i].SignaltcM5 == UP || trigger_RSI==false)

  &&(signals[i].SignaltcM15 == UP || trigger_RSI==false)

  &&(signals[i].SignaltcM30 == UP || trigger_RSI==false)

  &&(signals[i].SignaltcH1 == UP || trigger_RSI==false)

  &&(signals[i].SignaltcH4 == UP || trigger_RSI==false)

  &&(signals[i].SignaltcD1 == UP || trigger_RSI==false)

  &&(signals[i].SignalccM1 == UP || trigger_CCI==false)

  &&(signals[i].SignalccM5 == UP || trigger_CCI==false)

  &&(signals[i].SignalccM15 == UP || trigger_CCI==false)

  &&(signals[i].SignalccM30 == UP || trigger_CCI==false)

  &&(signals[i].SignalccH1 == UP || trigger_CCI==false)

  &&(signals[i].SignalccH4 == UP || trigger_CCI==false)

  &&(signals[i].SignalccD1 == UP || trigger_CCI==false) 

  &&(signals[i].Signalperc >trade_MIN_HeatMap1 || trigger_UseHeatMap1==false))      

  {

  labelcolor = clrGreen;

  if ((bpos[i]+spos[i]) < MaxTrades && pairinfo[i].lastSignal != BUY && autotrade == true && (OnlyAddProfit == false || bprofit[i] >= 0.0) && pairinfo[i].Spread <= MaxSpread && inSession() == true && totaltrades <= maxtotaltrades) {

  pairinfo[i].lastSignal = BUY;

  

  while (IsTradeContextBusy()) Sleep(100);

  ticket=OrderSend(TradePairs[i],OP_BUY,lot,MarketInfo(TradePairs[i],MODE_ASK),100,0,0,comment,Magic_Number,0,Blue);

  if (OrderSelect(ticket,SELECT_BY_TICKET) == true) {

  if (Pipsl != 0.0)

  stoploss=OrderOpenPrice() - Pipsl * pairinfo[i].PairPip;

  else

  if (Adr1sl != 0.0)

  stoploss=OrderOpenPrice() - ((adrvalues[i].adr10/100)*Adr1sl) * pairinfo[i].PairPip;

  else

  stoploss = 0.0;

  

  if (Piptp != 0.0)

  takeprofit=OrderOpenPrice() + Piptp * pairinfo[i].PairPip;

  else

  if (Adr1tp != 0.0)

  takeprofit=OrderOpenPrice() + ((adrvalues[i].adr10/100)*Adr1tp) * pairinfo[i].PairPip;

  else

  takeprofit = 0.0;

  

  while (IsTradeContextBusy()) Sleep(100);

  OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(stoploss,MarketInfo(TradePairs[i],MODE_DIGITS)),NormalizeDouble(takeprofit,MarketInfo(TradePairs[i],MODE_DIGITS)),0,clrBlue);

  }

  }

  } else {

  if (((pairinfo[i].PipsSig==DOWN && pairinfo[i].Pips < - trade_MIN_pips) || trigger_use_Pips==false)

  && ((pairinfo[i].Pips < - trade_MIN_pips)|| trigger_use_Pips==false) 

  && ((pairinfo[i].Pips > - trade_MAX_pips) || trigger_use_Pips==false)

  && ((signals[i].SigRatioPrev==DOWN && signals[i].ratio<=trigger_sell_bidratio) || trigger_use_bidratio==false)

  && ((signals[i].ratio < trade_MIN_sell_bidratio)|| trigger_use_bidratio==false)

  && ((signals[i].ratio > trade_MAX_sell_bidratio)|| trigger_use_bidratio==false)

  && (signals[i].calc<=trigger_sell_relstrength || trigger_use_relstrength==false)

  && ((signals[i].calc < trade_MIN_sell_relstrength)|| trigger_use_relstrength==false)

  && ((signals[i].calc > trade_MAX_sell_relstrength)|| trigger_use_relstrength==false)

  && (signals[i].strength5<=trigger_sell_buysellratio || trigger_use_buysellratio==false)

  && ((signals[i].strength5 < trade_MIN_sell_buysellratio)|| trigger_use_buysellratio==false)

  && ((signals[i].strength5 > trade_MAX_sell_buysellratio)|| trigger_use_buysellratio==false)

  && ((signals[i].SigGapPrev==DOWN && signals[i].strength_Gap<=trigger_gap_sell) || trigger_use_gap==false)         

  && ((signals[i].strength_Gap < trade_MIN_gap_sell)|| trigger_use_gap==false)

  && ((signals[i].strength_Gap > trade_MAX_gap_sell)|| trigger_use_gap==false)  

  &&(signals[i].Signalmadn>0||trigger_Moving_Average==false )

  &&(signals[i].SignaltcM1 == DOWN || trigger_RSI==false)

  &&(signals[i].SignaltcM5 == DOWN || trigger_RSI==false)

  &&(signals[i].SignaltcM15 == DOWN || trigger_RSI==false)

  &&(signals[i].SignaltcM30 == DOWN || trigger_RSI==false)

  &&(signals[i].SignaltcH1 == DOWN || trigger_RSI==false)

  &&(signals[i].SignaltcH4 == DOWN || trigger_RSI==false)

  &&(signals[i].SignaltcD1 == DOWN || trigger_RSI==false)

  &&(signals[i].SignalccM1 == DOWN || trigger_CCI==false)

  &&(signals[i].SignalccM5 == DOWN || trigger_CCI==false)

  &&(signals[i].SignalccM15 == DOWN || trigger_CCI==false)

  &&(signals[i].SignalccM30 == DOWN || trigger_CCI==false)

  &&(signals[i].SignalccH1 == DOWN || trigger_CCI==false)

  &&(signals[i].SignalccH4 == DOWN || trigger_CCI==false)

  &&(signals[i].SignalccD1 == DOWN || trigger_CCI==false)         

  &&(signals[i].Signalperc <-trade_MIN_HeatMap1 || trigger_UseHeatMap1==false))        

  {

  labelcolor = clrTomato;           

  if ((bpos[i]+spos[i]) < MaxTrades && pairinfo[i].lastSignal != SELL && autotrade == true && (OnlyAddProfit == false || sprofit[i] >= 0.0) && pairinfo[i].Spread <= MaxSpread && inSession() == true && totaltrades <= maxtotaltrades) {

  pairinfo[i].lastSignal = SELL;

  

  while (IsTradeContextBusy()) Sleep(100);

  ticket=OrderSend(TradePairs[i],OP_SELL,lot,MarketInfo(TradePairs[i],MODE_BID),100,0,0,comment,Magic_Number,0,Red);

  if (OrderSelect(ticket,SELECT_BY_TICKET) == true) {

  if (Pipsl != 0.0)

  stoploss=OrderOpenPrice() + Pipsl * pairinfo[i].PairPip;

  else

  if (Adr1sl != 0.0)

  stoploss=OrderOpenPrice()+((adrvalues[i].adr10/100)*Adr1sl)  *pairinfo[i].PairPip;

  else

  stoploss = 0.0;

                                   

  if (Piptp != 0.0)

  takeprofit=OrderOpenPrice() - Piptp * pairinfo[i].PairPip;

  else 

  if (Adr1tp != 0.0)

  takeprofit=OrderOpenPrice() - ((adrvalues[i].adr10/100)*Adr1tp) * pairinfo[i].PairPip;

  else

  takeprofit = 0.0;

  

  while (IsTradeContextBusy()) Sleep(100);

  OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(stoploss,MarketInfo(TradePairs[i],MODE_DIGITS)),NormalizeDouble(takeprofit,MarketInfo(TradePairs[i],MODE_DIGITS)),0,clrBlue);

  }

  }

  } else {

  labelcolor = BackGrnCol;

  pairinfo[i].lastSignal = NOTHING;

  }  

  }

  string HM0 = iCustom(NULL, 0, "HeatMapModokiV1",5, 10, "Arial", 585 , 250, 0 , 0,i);

  string HM1 = iCustom(NULL, 0, "HeatMapModokiV1",15, 10, "Arial", 620 , 250, 0 , 0,i);

  string HM2 = iCustom(NULL, 0, "HeatMapModokiV1",60, 10, "Arial", 655 , 250, 0 , 0,i);

  string HM3 = iCustom(NULL, 0, "HeatMapModokiV1",240, 10, "Arial", 690 , 250, 0 , 0,i);

  string HM4 = iCustom(NULL, 0, "HeatMapModokiV1",1440, 10, "Arial", 725 , 250, 0 , 0,i);

  

  ColorPanel("A1"+IntegerToString(i),labelcolor,C'61,61,61');          

  ColorPanel("B1"+IntegerToString(i),C'30,30,30',C'61,61,61');

     

  ColorPanel("Spread"+IntegerToString(i),labelcolor,C'61,61,61');        

  ColorPanel("Pips"+IntegerToString(i),labelcolor,C'61,61,61');

  ColorPanel("Adr"+IntegerToString(i),labelcolor,C'61,61,61');         

  ColorPanel("TP",Black,White);

  ColorPanel("TP1",Black,White);

  ColorPanel("TP2",Black,White);

  ColorPanel("TP3",Black,White);

  ColorPanel("TP4",Black,White);

  ColorPanel("TP5",Black,White);         

  //ColorPanel("A2"+IntegerToString(i),labelcolor,C'61,61,61');          

           

  }

  if (DashUpdate == 1)

  newm1 = iTime("EURUSD"+postfix,PERIOD_M1,0);

  else if (DashUpdate == 5)

  newm1 = iTime("EURUSD"+postfix,PERIOD_M5,0);

  }

  WindowRedraw();    

  }

//+------------------------------------------------------------------+



void SetText(string name,string text,int x,int y,color colour,int fontsize=12)

  {

  if (ObjectFind(0,name)<0)

  ObjectCreate(0,name,OBJ_LABEL,0,0,0);

  

  ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);

  ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);

  ObjectSetInteger(0,name,OBJPROP_COLOR,colour);

  ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);

  ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);

  ObjectSetString(0,name,OBJPROP_TEXT,text);

  }

//+------------------------------------------------------------------+

void SetObjText(string name,string CharToStr,int x,int y,color colour,int fontsize=12)

  {

  if(ObjectFind(0,name)<0)

  ObjectCreate(0,name,OBJ_LABEL,0,0,0);

  

  ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize);

  ObjectSetInteger(0,name,OBJPROP_COLOR,colour);

  ObjectSetInteger(0,name,OBJPROP_BACK,false);

  ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);

  ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);

  ObjectSetString(0,name,OBJPROP_TEXT,CharToStr);

  ObjectSetString(0,name,OBJPROP_FONT,"Wingdings");

  }  

//+------------------------------------------------------------------+

//|                                                                  |

//+------------------------------------------------------------------+

void SetPanel(string name,int sub_window,int x,int y,int width,int height,color bg_color,color border_clr,int border_width)

  {

  if(ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))

  {

  ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);

  ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);

  ObjectSetInteger(0,name,OBJPROP_XSIZE,width);

  ObjectSetInteger(0,name,OBJPROP_YSIZE,height);

  ObjectSetInteger(0,name,OBJPROP_COLOR,border_clr);

  ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);

  ObjectSetInteger(0,name,OBJPROP_WIDTH,border_width);

  ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);

  ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);

  ObjectSetInteger(0,name,OBJPROP_BACK,true);

  ObjectSetInteger(0,name,OBJPROP_SELECTABLE,0);

  ObjectSetInteger(0,name,OBJPROP_SELECTED,0);

  ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);

  ObjectSetInteger(0,name,OBJPROP_ZORDER,0);

  }

  ObjectSetInteger(0,name,OBJPROP_BGCOLOR,bg_color);

  }

void ColorPanel(string name,color bg_color,color border_clr)

  {

  ObjectSetInteger(0,name,OBJPROP_COLOR,border_clr);

  ObjectSetInteger(0,name,OBJPROP_BGCOLOR,bg_color);

  }

//+------------------------------------------------------------------+

void Create_Button(string but_name,string label,int xsize,int ysize,int xdist,int ydist,int bcolor,int fcolor)

  {

  

  if(ObjectFind(0,but_name)<0)

  {

  if(!ObjectCreate(0,but_name,OBJ_BUTTON,0,0,0))

  {

  Print(__FUNCTION__,

  ": failed to create the button! Error code = ",GetLastError());

  return;

  }

  ObjectSetString(0,but_name,OBJPROP_TEXT,label);

  ObjectSetInteger(0,but_name,OBJPROP_XSIZE,xsize);

  ObjectSetInteger(0,but_name,OBJPROP_YSIZE,ysize);

  ObjectSetInteger(0,but_name,OBJPROP_CORNER,CORNER_LEFT_UPPER);     

  ObjectSetInteger(0,but_name,OBJPROP_XDISTANCE,xdist);      

  ObjectSetInteger(0,but_name,OBJPROP_YDISTANCE,ydist);         

  ObjectSetInteger(0,but_name,OBJPROP_BGCOLOR,bcolor);

  ObjectSetInteger(0,but_name,OBJPROP_COLOR,fcolor);

  ObjectSetInteger(0,but_name,OBJPROP_FONTSIZE,8);

  ObjectSetInteger(0,but_name,OBJPROP_HIDDEN,true);

  //ObjectSetInteger(0,but_name,OBJPROP_BORDER_COLOR,ChartGetInteger(0,CHART_COLOR_FOREGROUND));

  ObjectSetInteger(0,but_name,OBJPROP_BORDER_TYPE,BORDER_RAISED);

  

  ChartRedraw();      

  }

  }

void OnChartEvent(const int id,  const long &lparam, const double &dparam,  const string &sparam)

  {

  if(id==CHARTEVENT_OBJECT_CLICK)

  {

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

       if (sparam==button_AUD_basket_buy)

        {          

               buy_basket(AUD);

               sell_basket(AUD_R);

               ObjectSetInteger(0,button_AUD_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_AUD_basket_sell)

        {          

               sell_basket(AUD);

               buy_basket(AUD_R);

               ObjectSetInteger(0,button_AUD_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_CAD_basket_buy)

        {          

               buy_basket(CAD);

               sell_basket(CAD_R);

               ObjectSetInteger(0,button_CAD_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_CAD_basket_sell)

        {          

               sell_basket(CAD);

               buy_basket(CAD_R);

               ObjectSetInteger(0,button_CAD_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_CHF_basket_buy)

        {          

               buy_basket(CHF);

               sell_basket(CHF_R);

               ObjectSetInteger(0,button_CHF_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_CHF_basket_sell)

        {          

               sell_basket(CHF);

               buy_basket(CHF_R);

               ObjectSetInteger(0,button_CHF_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_EUR_basket_buy)

        {          

               buy_basket(EUR);

               ObjectSetInteger(0,button_EUR_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_EUR_basket_sell)

        {          

               sell_basket(EUR);

               ObjectSetInteger(0,button_EUR_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_GBP_basket_buy)

        {          

               buy_basket(GBP);

               sell_basket(GBP_R);

               ObjectSetInteger(0,button_GBP_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_GBP_basket_sell)

        {          

               sell_basket(GBP);

               buy_basket(GBP_R);

               ObjectSetInteger(0,button_GBP_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_JPY_basket_buy)

        {          

               sell_basket(JPY_R);

               ObjectSetInteger(0,button_JPY_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_JPY_basket_sell)

        {          

               buy_basket(JPY_R);

               ObjectSetInteger(0,button_JPY_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_NZD_basket_buy)

        {          

               buy_basket(NZD);

               sell_basket(NZD_R);

               ObjectSetInteger(0,button_NZD_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_NZD_basket_sell)

        {          

               sell_basket(NZD);

               buy_basket(NZD_R);

               ObjectSetInteger(0,button_NZD_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_USD_basket_buy)

        {          

               buy_basket(USD);

               sell_basket(USD_R);

               ObjectSetInteger(0,button_USD_basket_buy,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_USD_basket_sell)

        {          

               sell_basket(USD);

               buy_basket(USD_R);

               ObjectSetInteger(0,button_USD_basket_sell,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_AUD_basket_close)

        {          

               close_cur_basket(AUD);

               close_cur_basket(AUD_R);

               ObjectSetInteger(0,button_AUD_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_CAD_basket_close)

        {          

               close_cur_basket(CAD);

               close_cur_basket(CAD_R);

               ObjectSetInteger(0,button_CAD_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_CHF_basket_close)

        {          

               close_cur_basket(CHF);

               close_cur_basket(CHF_R);

               ObjectSetInteger(0,button_CHF_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_EUR_basket_close)

        {          

               close_cur_basket(EUR);

               ObjectSetInteger(0,button_EUR_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_GBP_basket_close)

        {          

               close_cur_basket(GBP);

               close_cur_basket(GBP_R);

               ObjectSetInteger(0,button_GBP_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_JPY_basket_close)

        {          

               close_cur_basket(JPY_R);

               ObjectSetInteger(0,button_JPY_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_NZD_basket_close)

        {          

               close_cur_basket(NZD);

               close_cur_basket(NZD_R);

               ObjectSetInteger(0,button_NZD_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_USD_basket_close)

        {          

               close_cur_basket(USD);

               close_cur_basket(USD_R);

               ObjectSetInteger(0,button_USD_basket_close,OBJPROP_STATE,0);

               return;

        }

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

      if (sparam==button_reset_ea)

        {          

               Reset_EA();

               ObjectSetInteger(0,button_reset_ea,OBJPROP_STATE,0);

               return;

        }



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

      if (sparam==button_close_basket_All)

        {

               ObjectSetString(0,button_close_basket_All,OBJPROP_TEXT,"Closing...");               

               close_basket(Magic_Number);

               ObjectSetInteger(0,button_close_basket_All,OBJPROP_STATE,0);

               ObjectSetString(0,button_close_basket_All,OBJPROP_TEXT,"Close Basket"); 

               return;

        }

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

      if (sparam==button_close_basket_Prof)

        {

               ObjectSetString(0,button_close_basket_Prof,OBJPROP_TEXT,"Closing...");               

               close_profit();

               ObjectSetInteger(0,button_close_basket_Prof,OBJPROP_STATE,0);

               ObjectSetString(0,button_close_basket_Prof,OBJPROP_TEXT,"Close Basket"); 

               return;

        }

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

      if (sparam==button_close_basket_Loss)

        {

               ObjectSetString(0,button_close_basket_Loss,OBJPROP_TEXT,"Closing...");               

               close_loss();

               ObjectSetInteger(0,button_close_basket_Loss,OBJPROP_STATE,0);

               ObjectSetString(0,button_close_basket_Loss,OBJPROP_TEXT,"Close Basket"); 

               return;

        }

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

  if (StringFind(sparam,"BUY") >= 0)

  {

  int ind = StringToInteger(sparam);

  ticket=OrderSend(TradePairs[ind],OP_BUY,lot,MarketInfo(TradePairs[ind],MODE_ASK),100,0,0,"OFF",Magic_Number,0,Blue);

  if (OrderSelect(ticket,SELECT_BY_TICKET) == true) {

  if (Pipsl != 0.0)

  stoploss=OrderOpenPrice() - Pipsl * pairinfo[ind].PairPip;

  else

  if (Adr1sl != 0.0)

  stoploss=OrderOpenPrice() - ((adrvalues[ind].adr10/100)*Adr1sl) * pairinfo[ind].PairPip;

  else

  stoploss = 0.0;

  

  if (Piptp != 0.0)

  takeprofit=OrderOpenPrice() + Piptp * pairinfo[ind].PairPip;

  else

  if (Adr1tp != 0.0)

  takeprofit=OrderOpenPrice() + ((adrvalues[ind].adr10/100)*Adr1tp) * pairinfo[ind].PairPip;

  else

  takeprofit = 0.0;

  OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(stoploss,MarketInfo(TradePairs[ind],MODE_DIGITS)),NormalizeDouble(takeprofit,MarketInfo(TradePairs[ind],MODE_DIGITS)),0,clrBlue);

  }

  ObjectSetInteger(0,ind+"BUY",OBJPROP_STATE,0);

  ObjectSetString(0,ind+"BUY",OBJPROP_TEXT,"B"); 

  return;

  }

  

  string stato="SYMBOL";        

  if (StringFind(sparam,StringToInteger(sparam)+"Hold")>=0)

  { 

  if(ObjectGetInteger(0,StringToInteger(sparam)+"Hold",OBJPROP_STATE)==false){

  pairinfo[StringToInteger(sparam)].dux = false; 

  }else{pairinfo[StringToInteger(sparam)].dux = true; stato=TradePairs[StringToInteger(sparam)]; }       

  }

  ObjectSetString(0,"Hedge",OBJPROP_TEXT,"0.000");

  ObjectSetString(0,"Rep_Symb",OBJPROP_TEXT,stato);

  //ObjectSetString(0,"Rep_Symb",OBJPROP_TEXT,StringConcatenate(pairinfo[StringToInteger(sparam)].dux ,stato));

  

  if (StringFind(sparam,"SELL") >= 0)

  {

  int ind = StringToInteger(sparam);

  ticket=OrderSend(TradePairs[ind],OP_SELL,lot,MarketInfo(TradePairs[ind],MODE_BID),100,0,0,"OFF",Magic_Number,0,Red);

  if (OrderSelect(ticket,SELECT_BY_TICKET) == true) {

  if (Pipsl != 0.0)

  stoploss=OrderOpenPrice() + Pipsl * pairinfo[ind].PairPip;

  else

  if (Adr1sl != 0.0)

  stoploss=OrderOpenPrice()+((adrvalues[ind].adr10/100)*Adr1sl)  *pairinfo[ind].PairPip;

  else

  stoploss = 0.0;

  

  

  if (Piptp != 0.0)

  takeprofit=OrderOpenPrice() - Piptp * pairinfo[ind].PairPip;

  else 

  if (Adr1tp != 0.0)

  takeprofit=OrderOpenPrice() - ((adrvalues[ind].adr10/100)*Adr1tp) * pairinfo[ind].PairPip;

  else

  takeprofit = 0.0;

  OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(stoploss,MarketInfo(TradePairs[ind],MODE_DIGITS)),NormalizeDouble(takeprofit,MarketInfo(TradePairs[ind],MODE_DIGITS)),0,clrBlue);

  }

  ObjectSetInteger(0,ind+"SELL",OBJPROP_STATE,0);

  ObjectSetString(0,ind+"SELL",OBJPROP_TEXT,"S");

  return;

  }

  if (StringFind(sparam,"CLOSE") >= 0)

  {

  int ind = StringToInteger(sparam);

  closeOpenOrders(TradePairs[ind]);               

  ObjectSetInteger(0,ind+"CLOSE",OBJPROP_STATE,0);

  ObjectSetString(0,ind+"CLOSE",OBJPROP_TEXT,"C");

  return;

  }

  

  if (StringFind(sparam,"Pair") >= 0) {

  int ind = StringToInteger(sparam);

  ObjectSetInteger(0,sparam,OBJPROP_STATE,0);

  OpenChart(ind);

  return;         

  }   

  }

  

//************   

  

  if(id==CHARTEVENT_OBJECT_ENDEDIT) 

  {

  string PFtext="10";

  if(ObjectGetString(0,sparam,OBJPROP_TEXT,0,PFtext))

  {

  if(StringFind(sparam,"minprofit",0)>=0)

  {

  ObjectSetString(0,sparam,OBJPROP_TEXT,DoubleToStr(PFtext,1)); goal = PFtext;

  }            

  }

  } 

  

  }

void buy_basket(string &pairs[])

  {

  int i;

  int ticket;

  

  for(i=0;i<ArraySize(pairs);i++)

  {

  ticket=OrderSend(pairs[i],OP_BUY,lot,MarketInfo(pairs[i],MODE_ASK),100,0,0,NULL,Magic_Number,0,clrNONE);

  if (OrderSelect(ticket,SELECT_BY_TICKET) == true) {

  if (Pipsl != 0.0)

  stoploss=OrderOpenPrice() - Pipsl * pairinfo[i].PairPip;

  else

  if (Adr1sl != 0.0)

  stoploss=OrderOpenPrice() - ((adrvalues[i].adr10/100)*Adr1sl) * pairinfo[i].PairPip;

  else

  stoploss = 0.0;

  

  if (Piptp != 0.0)

  takeprofit=OrderOpenPrice() + Piptp * pairinfo[i].PairPip;

  else

  if (Adr1tp != 0.0)

  takeprofit=OrderOpenPrice() + ((adrvalues[i].adr10/100)*Adr1tp) * pairinfo[i].PairPip;

  else

  takeprofit = 0.0;

  OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(stoploss,MarketInfo(pairs[i],MODE_DIGITS)),NormalizeDouble(takeprofit,MarketInfo(pairs[i],MODE_DIGITS)),0,clrBlue);

  }

  }

  }



void sell_basket(string &pairs[])

  {

  int i;

  int ticket;

  

  for(i=0;i<ArraySize(pairs);i++)

  {

  ticket=OrderSend(pairs[i],OP_SELL,lot,MarketInfo(pairs[i],MODE_BID),100,0,0,NULL,Magic_Number,0,clrNONE);

  if (OrderSelect(ticket,SELECT_BY_TICKET) == true) {

  if (Pipsl != 0.0)

  stoploss=OrderOpenPrice() + Pipsl * pairinfo[i].PairPip;

  else

  if (Adr1sl != 0.0)

  stoploss=OrderOpenPrice()+((adrvalues[i].adr10/100)*Adr1sl)  *pairinfo[i].PairPip;

  else

  stoploss = 0.0;

                                   

  if (Piptp != 0.0)

  takeprofit=OrderOpenPrice() - Piptp * pairinfo[i].PairPip;

  else 

  if (Adr1tp != 0.0)

  takeprofit=OrderOpenPrice() - ((adrvalues[i].adr10/100)*Adr1tp) * pairinfo[i].PairPip;

  else

  takeprofit = 0.0;

  OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(stoploss,MarketInfo(pairs[i],MODE_DIGITS)),NormalizeDouble(takeprofit,MarketInfo(pairs[i],MODE_DIGITS)),0,clrBlue);

  }

  }

  }



void close_cur_basket(string &pairs[])

  { 

  

  if (OrdersTotal() <= 0)

  return;

  

  int TradeList[][2];

  int ctTrade = 0;

  

  for (int i=0; i<OrdersTotal(); i++) 

  {

  OrderSelect(i, SELECT_BY_POS);

  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true &&

  (OrderType()==0 || OrderType()==1) && 

  OrderMagicNumber()==Magic_Number &&

  InArray(pairs, OrderSymbol())) 

  {

  ctTrade++;

  ArrayResize(TradeList, ctTrade);

  TradeList[ctTrade-1][0] = OrderOpenTime();

  TradeList[ctTrade-1][1] = OrderTicket();

  }

  }

  ArraySort(TradeList,WHOLE_ARRAY,0,MODE_ASCEND);

  

  for (int i=0;i<ctTrade;i++) 

  {

  if (OrderSelect(TradeList[i][1], SELECT_BY_TICKET)==true) 

  {

  if (OrderType()==0)

  {

  ticket=OrderClose(OrderTicket(),OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 100, clrNONE);

  if (ticket==-1) Print ("Error: ",  GetLastError());

  

  }

  if (OrderType()==1)

  {

  ticket=OrderClose(OrderTicket(),OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 100, clrNONE);

  if (ticket==-1) Print ("Error: ",  GetLastError());

  

  }  

  }

  Sleep(500);

  }

  }

//+------------------------------------------------------------------+

//| closeOpenOrders                                                  |

//+------------------------------------------------------------------+

void closeOpenOrders(string closecurr ) {

  int cnt = 0;

  

  for (cnt = OrdersTotal()-1 ; cnt >= 0 ; cnt--) {

  if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true) {

  if(OrderType()==OP_BUY && OrderSymbol() == closecurr && OrderMagicNumber()==Magic_Number)

  ticket=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);

  else if(OrderType()==OP_SELL && OrderSymbol() == closecurr && OrderMagicNumber()==Magic_Number) 

  ticket=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Violet);

  else if(OrderType()>OP_SELL) //pending orders

  ticket=OrderDelete(OrderTicket());

  

  }

  }

  }

void close_basket(int magic_number)

  { 

  

  if (OrdersTotal() <= 0)

  return;



  int TradeList[][2];

  int ctTrade = 0;



  for (int i=0; i<OrdersTotal(); i++) {

  OrderSelect(i, SELECT_BY_POS);

  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true && (OrderType()==0 || OrderType()==1) && OrderMagicNumber()==Magic_Number) {

  ctTrade++;

  ArrayResize(TradeList, ctTrade);

  TradeList[ctTrade-1][0] = OrderOpenTime();

  TradeList[ctTrade-1][1] = OrderTicket();

  }

  }

ArraySort(TradeList,WHOLE_ARRAY,0,MODE_ASCEND);



  for (int i=0;i<ctTrade;i++) {

  

  if (OrderSelect(TradeList[i][1], SELECT_BY_TICKET)==true) {

  if (OrderType()==0)

  {

  ticket=OrderClose(OrderTicket(),OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 3,Red);

  if (ticket==-1) Print ("Error: ",  GetLastError());

  

  }

  if (OrderType()==1)

  {

  ticket=OrderClose(OrderTicket(),OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 3,Red);

  if (ticket==-1) Print ("Error: ",  GetLastError());

  

  }  

  }

  }

  

  for (int i=0;i<ArraySize(TradePairs);i++)

  pairinfo[i].lastSignal = NOTHING; 

  

  currentlock = 0.0;

  trailstarted = false;   

  lockdistance = 0.0;    

  SymbolMaxDD = 0;

  SymbolMaxHi = 0;

  PercentFloatingSymbol=0;

  PercentMaxDDSymbol=0;    

  }

void close_profit()

  {

  int cnt = 0; 

  for (cnt = OrdersTotal()-1 ; cnt >= 0 ; cnt--)

  {

  if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true)

  if (OrderProfit() > 0)

  {

  if(OrderType()==OP_BUY && OrderMagicNumber()==Magic_Number)

  ticket=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);

  if(OrderType()==OP_SELL && OrderMagicNumber()==Magic_Number) 

  ticket=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Violet);

  if(OrderType()>OP_SELL)

  ticket=OrderDelete(OrderTicket());

  }

  } 

  }

void close_loss()

  {

  int cnt = 0; 

  for (cnt = OrdersTotal()-1 ; cnt >= 0 ; cnt--)

  {

  if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true)

  if (OrderProfit() < 0)

  {

  if(OrderType()==OP_BUY && OrderMagicNumber()==Magic_Number)

  ticket=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),5,Violet);

  if(OrderType()==OP_SELL && OrderMagicNumber()==Magic_Number) 

  ticket=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),5,Violet);

  if(OrderType()>OP_SELL)

  ticket=OrderDelete(OrderTicket());

  }

  } 

  } 



void Reset_EA()

  {

  currentlock = 0.0;

  trailstarted = false;   

  lockdistance = 0.0;    

  SymbolMaxDD = 0;

  SymbolMaxHi = 0;

  PercentFloatingSymbol=0;

  PercentMaxDDSymbol=0;

  

  OnInit();

  }                               

//+------------------------------------------------------------------+

void Trades()

  {

  int i, j;

  totallots=0;

  totalprofit=0;

  totaltrades = 0;

  

  for(i=0;i<ArraySize(TradePairs);i++)

  {

  

  bpos[i]=0;

  spos[i]=0;       

  blots[i]=0;

  slots[i]=0;     

  bprofit[i]=0;

  sprofit[i]=0;

  tprofit[i]=0;

  singolprofit[i] = 0; 

  

  BuyMin[i]         = 0;

  BuyMax[i]         = 0;

  BuyMinLot[i]      = 0;

  BuyTicProfit[i]   = 0;

  BuyMaxTic[i]      = 0;

  BuyProfit[i]      = 0; 

  

  SellMin[i]         = 0;

  SellMax[i]         = 0;

  SellMinLot[i]      = 0;

  SellTicProfit[i]   = 0;

  SellMaxTic[i]      = 0;

  SellProfit[i]      = 0;              

  }

  for(i=0;i<OrdersTotal();i++)

  {

  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

  break;

  

  for(j=0;j<ArraySize(TradePairs);j++)

  {	  

  if((TradePairs[j]==OrderSymbol() || TradePairs[j]=="") && OrderMagicNumber()==Magic_Number)

  {

  TradePairs[j]=OrderSymbol();                       

  tprofit[j]=tprofit[j]+OrderProfit()+OrderSwap()+OrderCommission();           

  

  if(OrderType()==0){ bprofit[j]+=OrderProfit()+OrderSwap()+OrderCommission(); } 

  if(OrderType()==1){ sprofit[j]+=OrderProfit()+OrderSwap()+OrderCommission(); } 

  if(OrderType()==0){ blots[j]+=OrderLots(); } 

  if(OrderType()==1){ slots[j]+=OrderLots(); }

  if(OrderType()==0){ bpos[j]+=+1; } 

  if(OrderType()==1){ spos[j]+=+1; } 

  

  double BuyDist  = NormalizeDouble(MinStep*pairinfo[j].PairPip+MinStepPlus*pairinfo[j].PairPip*bpos[j],MarketInfo(TradePairs[j],MODE_DIGITS));

  double SellDist = NormalizeDouble(MinStep*pairinfo[j].PairPip+MinStepPlus*pairinfo[j].PairPip*spos[j],MarketInfo(TradePairs[j],MODE_DIGITS));

  

//--- hedge buy

  

  if(OrderType()==0) 

  {

  

  ProfitBuy[j]=0;

  

  if(OrderOpenPrice()<BuyMin[j] || BuyMin[j]==0)

  {

  BuyMin[j]=OrderOpenPrice();

  BuyMinLot[j]=OrderLots();           

  }

  

  if(OrderOpenPrice()>BuyMax[j] || BuyMin[j]==0)

  {

  BuyMax[j]=OrderOpenPrice();

  BuyMaxTic[j]=OrderTicket();

  BuyTicProfit[j]=OrderProfit();

  } 

  if(OrderProfit()>0)BuyProfit[j]+=OrderProfit()+OrderCommission()+OrderSwap();                

  }

  

  if(pairinfo[j].dux==true && bpos[j]) ObjectSetString(0,"Hedge",OBJPROP_TEXT,DoubleToStr(BuyMin[j]-BuyDist,5)); 

  

//--- hedge sell

  

  if(OrderType()==1) 

  {                         

  if(OrderOpenPrice()<SellMin[j] || SellMin[j]==0)

  {

  SellMin[j]=OrderOpenPrice();   

  SellMinLot[j]=OrderLots();           

  }

  

  if(OrderOpenPrice()>SellMax[j] || SellMin[j]==0)

  {

  SellMax[j]=OrderOpenPrice();    

  SellMaxTic[j]=OrderTicket();       

  SellTicProfit[j]=OrderProfit(); 

  } 

  if(OrderProfit()>0)SellProfit[j]+=OrderProfit()+OrderCommission()+OrderSwap();                

  }           

  

  if(pairinfo[j].dux==true && spos[j]==1) ObjectSetString(0,"Hedge",OBJPROP_TEXT,DoubleToStr(SellMax[j]+SellDist,5));

  

//---            

  

  if(bpos[j] + spos[j] >=2 && tprofit[j] > goal) { closeOpenOrders(TradePairs[j]); }

  

  if(OrderProfit()+OrderSwap()+OrderCommission() >0){              

  singolprofit[j]=OrderProfit()+OrderSwap()+OrderCommission();             

  if(bpos[j] + spos[j] <=1 && (bpos[j] ==1 || spos[j] ==1 ) && singolprofit[j] >goal) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,Purple); }}

  

//---                                             

  totallots=totallots+OrderLots();

  totaltrades++;

  totalprofit = totalprofit+OrderProfit()+OrderSwap()+OrderCommission();

  break;

  }	     

  }

  }

  if(OrdersTotal()==0)

  //SetText("CTP","No Trades To Monitor",x_axis+225,y_axis-47,Yellow,6);

  //else

  //SetText("CTP","Monitoring Trades",x_axis+228,y_axis-47,Yellow,6);

  

  if (inSession() == true)

  SetText("CTPT","Trading",x_axis+99,y_axis-48,Green,6);

  else

  SetText("CTPT","Closed",x_axis+99,y_axis-48,Red,6);

//SetPanel("TP6",0,x_axis+95,y_axis-50,100,20,Black,White,1);

  }

//+------------------------------------------------------------------+ 

void OpenChart(int ind) {

  long nextchart = ChartFirst();

  do {

  string sym = ChartSymbol(nextchart);

  if (StringFind(sym,TradePairs[ind]) >= 0) {

  ChartSetInteger(nextchart,CHART_BRING_TO_TOP,true);

  ChartSetSymbolPeriod(nextchart,TradePairs[ind],TimeFrame);

  ChartApplyTemplate(nextchart,usertemplate);

  return;

  }

  } while ((nextchart = ChartNext(nextchart)) != -1);

  long newchartid = ChartOpen(TradePairs[ind],TimeFrame);

  ChartApplyTemplate(newchartid,usertemplate);

  }

//+------------------------------------------------------------------+  

void TradeManager() {

  

   double AccBalance=AccountBalance();

         

      //- Target

      if(Basket_Target>0 && totalprofit>=Basket_Target) {

         profitbaskets++;

         close_basket(Magic_Number);

         return;

      }

      

      //- StopLoss

      if(Basket_StopLoss>0 && totalprofit<(0-Basket_StopLoss)) {

         lossbaskets++;

         close_basket(Magic_Number);

         return;

      }



      //- Out off session

      if(inSession() == false && totallots > 0.0 && CloseAllSession == true) {

         close_basket(Magic_Number);

         return;

      }



      //- Profit lock stoploss

      if (currentlock != 0.0 && totalprofit < currentlock) {

         profitbaskets++;

         close_basket(Magic_Number);

         return;

      }



      //- Profit lock trail

      if (trailstarted == true && totalprofit > currentlock + lockdistance)

         currentlock = totalprofit - lockdistance;



      //- Lock in profit 1

      if (BasketP1 != 0.0 && BasketL1 != 0.0 && currentlock < BasketL1) {

         if (totalprofit > BasketP1)

            currentlock = BasketL1;

         if (BasketP2 == 0.0 && TrailLastLock == true) {

            trailstarted = true;

            if (TrailDistance != 0.0)

               lockdistance = BasketP1 - TrailDistance;

            else

               lockdistance = BasketL1;

         }

      }

      //- Lock in profit 2

      if (BasketP2 != 0.0 && BasketL2 != 0.0 && currentlock < BasketL2) {

         if (totalprofit > BasketP2)

            currentlock = BasketL2;

         if (BasketP3 == 0.0 && TrailLastLock == true) {

            trailstarted = true;

            if (TrailDistance != 0.0)

               lockdistance = BasketP2 - TrailDistance;

            else

               lockdistance = BasketL2;

         }

      }

      //- Lock in profit 3

      if (BasketP3 != 0.0 && BasketL3 != 0.0 && currentlock < BasketL3) {

         if (totalprofit > BasketP3)

            currentlock = BasketL3;

         if (BasketP4 == 0.0 && TrailLastLock == true) {

            trailstarted = true;

            if (TrailDistance != 0.0)

               lockdistance = BasketP3 - TrailDistance;

            else

               lockdistance = BasketL3;

         }

      }

      //- Lock in profit 4

      if (BasketP4 != 0.0 && BasketL4 != 0.0 && currentlock < BasketL4) {

         if (totalprofit > BasketP4)

            currentlock = BasketL4;

         if (BasketP5 == 0.0 && TrailLastLock == true) {

            trailstarted = true;

            if (TrailDistance != 0.0)

               lockdistance = BasketP4 - TrailDistance;

            else

               lockdistance = BasketL4;

         }

      }

      //- Lock in profit 5

      if (BasketP5 != 0.0 && BasketL5 != 0.0 && currentlock < BasketL5) {

         if (totalprofit > BasketP5)

            currentlock = BasketL5;

         if (BasketP6 == 0.0 && TrailLastLock == true) {

            trailstarted = true;

            if (TrailDistance != 0.0)

               lockdistance = BasketP5 - TrailDistance;

            else

               lockdistance = BasketL5;

         }

      }

      //- Lock in profit 6

      if (BasketP6 != 0.0 && BasketL6 != 0.0 && currentlock < BasketL6) {

         if (totalprofit > BasketP6)

            currentlock = BasketL6;

         if (TrailLastLock == true) {

            trailstarted = true;

            if (TrailDistance != 0.0)

               lockdistance = BasketP6 - TrailDistance;

            else

               lockdistance = BasketL6;

         }

      }





  if(totalprofit<=SymbolMaxDD) {

  SymbolMaxDD=totalprofit;

  GetBalanceSymbol=AccBalance;

  }

  

  if(GetBalanceSymbol != 0)

  PercentMaxDDSymbol=(SymbolMaxDD*100)/GetBalanceSymbol;

  

  if(totalprofit>=SymbolMaxHi) {

  SymbolMaxHi=totalprofit;

  GetBalanceSymbol=AccBalance;

  }

  

  if(GetBalanceSymbol != 0)

  PercentFloatingSymbol=(SymbolMaxHi*100)/GetBalanceSymbol;

  

  ObjectSetText("Lowest","Lowest= "+DoubleToStr(SymbolMaxDD,2)+" ("+DoubleToStr(PercentMaxDDSymbol,2)+"%)",6,NULL,BearColor);

  ObjectSetText("Highest","Highest= "+DoubleToStr(SymbolMaxHi,2)+" ("+DoubleToStr(PercentFloatingSymbol,2)+"%)",6,NULL,BullColor);

  ObjectSetText("Lock","Lock= "+DoubleToStr(currentlock,2),6,NULL,BullColor);

  ObjectSetText("Won",IntegerToString(profitbaskets,2),6,NULL,BullColor);

  ObjectSetText("Lost",IntegerToString(lossbaskets,2),6,NULL,BearColor);



  }     

void PlotTrades() {



  for (int i=0; i<ArraySize(TradePairs);i++) {

  

  if(blots[i]>0){LotColor =Orange;}        

  if(blots[i]==0){LotColor =C'61,61,61';}

  if(slots[i]>0){LotColor1 =Orange;}        

  if(slots[i]==0){LotColor1 =C'61,61,61';}

  if(bpos[i]>0){OrdColor =DodgerBlue;}        

  if(bpos[i]==0){OrdColor =C'61,61,61';}

  if(spos[i]>0){OrdColor1 =DodgerBlue;}        

  if(spos[i]==0){OrdColor1 =C'61,61,61';}

  if(bprofit[i]>0){ProfitColor =BullColor;}

  if(bprofit[i]<0){ProfitColor =BearColor;}

  if(bprofit[i]==0){ProfitColor =C'61,61,61';}

  if(sprofit[i]>0){ProfitColor2 =BullColor;}

  if(sprofit[i]<0){ProfitColor2 =BearColor;}

  if(sprofit[i]==0){ProfitColor2 =C'61,61,61';}

  if(tprofit[i]>0){ProfitColor3 =BullColor;}

  if(tprofit[i]<0){ProfitColor3 =BearColor;}

  if(tprofit[i]==0){ProfitColor3 =C'61,61,61';}

  

  if(totalprofit>0){ProfitColor1 =BullColor;}

  if(totalprofit<0){ProfitColor1 =BearColor;}

  if(totalprofit==0){ProfitColor1 =clrWhite;}         

  

  ObjectSetText("bLots"+IntegerToString(i),DoubleToStr(blots[i],2),6,NULL,LotColor);

  ObjectSetText("sLots"+IntegerToString(i),DoubleToStr(slots[i],2),6,NULL,LotColor1);

  ObjectSetText("bPos"+IntegerToString(i),DoubleToStr(bpos[i],0),6,NULL,OrdColor);

  ObjectSetText("sPos"+IntegerToString(i),DoubleToStr(spos[i],0),6,NULL,OrdColor1);

  ObjectSetText("TProf"+IntegerToString(i),DoubleToStr(MathAbs(bprofit[i]),2),6,NULL,ProfitColor);

  ObjectSetText("SProf"+IntegerToString(i),DoubleToStr(MathAbs(sprofit[i]),2),6,NULL,ProfitColor2);

  ObjectSetText("TtlProf"+IntegerToString(i),DoubleToStr(MathAbs(tprofit[i]),2),6,NULL,ProfitColor3);

  ObjectSetText("TotProf",DoubleToStr(MathAbs(totalprofit),2),6,NULL,ProfitColor1);

  }

  }

void PlotAdrValues() {



  for (int i=0;i<ArraySize(TradePairs);i++)

  ObjectSetText("S1"+IntegerToString(i),DoubleToStr(adrvalues[i].adr,0),6,NULL,Yellow);

  }

bool inSession() {

  

  if ((localday != TimeDayOfWeek(TimeLocal()) && s1active == false && s2active == false && s3active == false) || localday == 99) {

  TimeToStruct(TimeLocal(),sess);

  StringSplit(sess1start,':',strspl);sess.hour=(int)strspl[0];sess.min=(int)strspl[1];sess.sec=0;

  s1start = StructToTime(sess);

  StringSplit(sess1end,':',strspl);sess.hour=(int)strspl[0];sess.min=(int)strspl[1];sess.sec=0;

  s1end = StructToTime(sess);

  StringSplit(sess2start,':',strspl);sess.hour=(int)strspl[0];sess.min=(int)strspl[1];sess.sec=0;

  s2start = StructToTime(sess);

  StringSplit(sess2end,':',strspl);sess.hour=(int)strspl[0];sess.min=(int)strspl[1];sess.sec=0;

  s2end = StructToTime(sess);

  StringSplit(sess3start,':',strspl);sess.hour=(int)strspl[0];sess.min=(int)strspl[1];sess.sec=0;

  s3start = StructToTime(sess);

  StringSplit(sess3end,':',strspl);sess.hour=(int)strspl[0];sess.min=(int)strspl[1];sess.sec=0;

  s3end = StructToTime(sess);

  if (s1end < s1start)

  s1end += 24*60*60;

  if (s2end < s2start)

  s2end += 24*60*60;

  if (s3end < s3start)

  s3end += 24*60*60;

  newSession();

  localday = TimeDayOfWeek(TimeLocal());

  Print("Sessions for today");

  if (UseSession1 == true)

  Print("Session 1 From:"+s1start+" until "+s1end);

  if (UseSession2 == true)

  Print("Session 2 From:"+s2start+" until "+s2end);

  if (UseSession3 == true)

  Print("Session 3 From:"+s3start+" until "+s3end);

  }

  

  if (UseSession1 && TimeLocal() >= s1start && TimeLocal() <= s1end) {

  comment = sess1comment;

  if (s1active == false)

  newSession();         

  else if ((StopProfit != 0 && profitbaskets >= StopProfit) || (StopLoss != 0 && lossbaskets >= StopLoss))

  return(false);

  s1active = true;

  return(true);

  } else {

  s1active = false;

  }   

  if (UseSession2 && TimeLocal() >= s2start && TimeLocal() <= s2end) {

  comment = sess2comment;

  if (s2active == false)

  newSession();

  else if ((StopProfit != 0 && profitbaskets >= StopProfit) || (StopLoss != 0 && lossbaskets >= StopLoss))

  return(false);

  s2active = true;

  return(true);

  } else {

  s2active = false;

  }

  if (UseSession3 && TimeLocal() >= s3start && TimeLocal() <= s3end) {

  comment = sess3comment;

  if (s3active == false)

  newSession();

  else if ((StopProfit != 0 && profitbaskets >= StopProfit) || (StopLoss != 0 && lossbaskets >= StopLoss))

  return(false);

  s3active = true;

  return(true);

  } else {

  s3active = false;

  }

   

  return(false);

  }

void newSession() {

  

  profitbaskets = 0;

  lossbaskets = 0;

  SymbolMaxDD = 0.0;

  PercentMaxDDSymbol = 0.0;

  SymbolMaxHi=0.0;

  PercentFloatingSymbol = 0.0;

  currentlock = 0.0;

  trailstarted = false;   

  lockdistance = 0.0;

  }



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

void ChngBoxCol(int mVal, int mBx)

 {

   if(mVal >= 0 && mVal < 10)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, White);

   if(mVal > 10 && mVal < 20)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, LightCyan);

   if(mVal > 20 && mVal < 30)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, PowderBlue);

   if(mVal > 30 && mVal < 40)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, PaleTurquoise);

   if(mVal > 40 && mVal < 50)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, LightBlue);

   if(mVal > 50 && mVal < 60)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, SkyBlue);

   if(mVal > 60 && mVal < 70)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Turquoise);

   if(mVal > 70 && mVal < 80)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, DeepSkyBlue);

   if(mVal > 80 && mVal < 90)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, SteelBlue);

   if(mVal > 90 && mVal < 100)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Blue);

   if(mVal > 100)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, MediumBlue);



   if(mVal < 0 && mVal > -10)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, White);

   if(mVal < -10 && mVal > -20)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Seashell);

   if(mVal < -20 && mVal > -30)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, MistyRose);

   if(mVal < -30 && mVal > -40)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Pink);

   if(mVal < -40 && mVal > -50)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, LightPink);

   if(mVal < -50 && mVal > -60)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Plum);

   if(mVal < -60 && mVal >-70)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Violet);

   if(mVal < -70 && mVal > -80)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Orchid);

   if(mVal < -80 && mVal > -90)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, DeepPink);

   if(mVal < -90)

         ObjectSet("HM1"+mBx, OBJPROP_BGCOLOR, Red);

   return;

 }

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



bool InArray(string &pairs[], string symbol)

  {

  int arraysize = ArraySize(pairs);

  if(arraysize <= 0) return(false);

  if(symbol == NULL) return(false);

  

  int i;

  

  for(i=0;i<arraysize;i++)

  if(pairs[i] == symbol) return(true);

  

  return(false);

  }

//-------------------------------------------------------------------+ 

void PlotSpreadPips() {

             

  for (int i=0;i<ArraySize(TradePairs);i++) {

  if(MarketInfo(TradePairs[i],MODE_POINT) != 0 && pairinfo[i].pipsfactor != 0) {

  pairinfo[i].Pips = (iClose(TradePairs[i],periodPIP,0)-iOpen(TradePairs[i], periodPIP,0))/MarketInfo(TradePairs[i],MODE_POINT)/pairinfo[i].pipsfactor; 

  pairinfo[i].Pipsprev = (iClose(TradePairs[i],periodPIP,signals[i].shift+900)-iOpen(TradePairs[i], periodPIP,0))/MarketInfo(TradePairs[i],MODE_POINT)/pairinfo[i].pipsfactor;    

  pairinfo[i].Spread=MarketInfo(TradePairs[i],MODE_SPREAD)/pairinfo[i].pipsfactor;

  signals[i].Signalperc = (iClose(TradePairs[i], 1, 0) - iClose(TradePairs[i], trigger_TF_HM1, 1)) / iClose(TradePairs[i], trigger_TF_HM1, 1) * 100;

  

  }  

  if(pairinfo[i].Pips>0){PipsColor =BullColor;}

  if(pairinfo[i].Pips<0){PipsColor =BearColor;} 

  if(pairinfo[i].Pips==0){PipsColor =clrWhite;}       

  if(pairinfo[i].Spread > MaxSpread)

  

  ObjectSetText("Spr1"+IntegerToString(i),DoubleToStr(pairinfo[i].Spread,1),6,NULL,Red);

  else

  ObjectSetText("Spr1"+IntegerToString(i),DoubleToStr(pairinfo[i].Spread,1),6,NULL,Orange);

  ObjectSetText("Pp1"+IntegerToString(i),DoubleToStr(MathAbs(pairinfo[i].Pips),0),6,NULL,PipsColor);

  

  if(pairinfo[i].Pips > pairinfo[i].Pipsprev){

  pairinfo[i].PipsSig=UP;

  } else{

  if(pairinfo[i].Pips < pairinfo[i].Pipsprev)

  pairinfo[i].PipsSig=DOWN;

  }  

  }

  }

//----------------------------------------------------------------------+

void GetAdrValues() {



  double s=0.0;

  

  for (int i=0;i<ArraySize(TradePairs);i++) {

  

  for(int a=1;a<=20;a++) {

  if(pairinfo[i].PairPip != 0)

  s=s+(iHigh(TradePairs[i],PERIOD_D1,a)-iLow(TradePairs[i],PERIOD_D1,a))/pairinfo[i].PairPip;

  if(a==1)

  adrvalues[i].adr1=MathRound(s);

  if(a==5)

  adrvalues[i].adr5=MathRound(s/5);

  if(a==10)

  adrvalues[i].adr10=MathRound(s/10);

  if(a==20)

  adrvalues[i].adr20=MathRound(s/20);

  }

  adrvalues[i].adr=MathRound((adrvalues[i].adr1+adrvalues[i].adr5+adrvalues[i].adr10+adrvalues[i].adr20)/4.0);

  s=0.0;

  }

  }

//-----------------------------------------------------------------------------------------------+ 

void GetSignals() {

  int cnt = 0;

  ArrayResize(signals,ArraySize(TradePairs));

  for (int i=0;i<ArraySize(signals);i++) {

  signals[i].symbol=TradePairs[i]; 

  signals[i].point=MarketInfo(signals[i].symbol,MODE_POINT);

  signals[i].open=iOpen(signals[i].symbol,periodBR,0);      

  signals[i].close=iClose(signals[i].symbol,periodBR,0);

  signals[i].hi=MarketInfo(signals[i].symbol,MODE_HIGH);

  signals[i].lo=MarketInfo(signals[i].symbol,MODE_LOW);

  signals[i].bid=MarketInfo(signals[i].symbol,MODE_BID);

  signals[i].range=(signals[i].hi-signals[i].lo);

  signals[i].shift = iBarShift(signals[i].symbol,PERIOD_M1,TimeCurrent()-900);

  signals[i].prevbid = iClose(signals[i].symbol,PERIOD_M1,signals[i].shift);

  

  if(signals[i].range!=0) {            

  signals[i].ratio=MathMin(((signals[i].bid-signals[i].lo)/signals[i].range*100 ),100);

  signals[i].prevratio=MathMin(((signals[i].prevbid-signals[i].lo)/signals[i].range*100 ),100);     

  

  for (int j = 0; j < 8; j++){

  

  if(signals[i].ratio <= 3.0) signals[i].fact = 0;

  if(signals[i].ratio > 3.0)  signals[i].fact = 1;

  if(signals[i].ratio > 10.0) signals[i].fact = 2;

  if(signals[i].ratio > 25.0) signals[i].fact = 3;

  if(signals[i].ratio > 40.0) signals[i].fact = 4;

  if(signals[i].ratio > 50.0) signals[i].fact = 5;

  if(signals[i].ratio > 60.0) signals[i].fact = 6;

  if(signals[i].ratio > 75.0) signals[i].fact = 7;

  if(signals[i].ratio > 90.0) signals[i].fact = 8;

  if(signals[i].ratio > 97.0) signals[i].fact = 9;

  cnt++;

  

  if(curr[j]==StringSubstr(signals[i].symbol,3,3))

  signals[i].fact=9-signals[i].fact;

  

  if(curr[j]==StringSubstr(signals[i].symbol,0,3)) {

  signals[i].strength1=signals[i].fact;

  }  else{

  if(curr[j]==StringSubstr(signals[i].symbol,3,0))

  signals[i].strength2=signals[i].fact;

  }

  

  signals[i].calc =signals[i].strength1-signals[i].strength2;

  

  signals[i].strength=currency_strength(curr[j]);

  

  if(curr[j]==StringSubstr(signals[i].symbol,0,3)){

  signals[i].strength3=signals[i].strength;

  } else{

  if(curr[j]==StringSubstr(signals[i].symbol,3,0))

  signals[i].strength4=signals[i].strength;

  }

  signals[i].strength5=(signals[i].strength3-signals[i].strength4);

  

  signals[i].strength=old_currency_strength(curr[j]);

  

  if(curr[j]==StringSubstr(signals[i].symbol,0,3)){

  signals[i].strength6=signals[i].strength;

  } else {

  if(curr[j]==StringSubstr(signals[i].symbol,3,0))

  signals[i].strength7=signals[i].strength;

  }

  signals[i].strength8=(signals[i].strength6-signals[i].strength7);     

  signals[i].strength_Gap=signals[i].strength5-signals[i].strength8;

  

  if(signals[i].ratio>=trigger_buy_bidratio){

  signals[i].SigRatio=UP;

  } else {

  if(signals[i].ratio<=trigger_sell_bidratio)

  signals[i].SigRatio=DOWN;

  }  

  

  if(signals[i].ratio>signals[i].prevratio){

  signals[i].SigRatioPrev=UP;

  } else {

  if(signals[i].ratio<signals[i].prevratio)

  signals[i].SigRatioPrev=DOWN;

  }      

  

  if(signals[i].calc>=trigger_buy_relstrength){

  signals[i].SigRelStr=UP;

  } else {

  if (signals[i].calc<=trigger_sell_relstrength) 

  signals[i].SigRelStr=DOWN;

  } 

  

  if(signals[i].strength5>=trigger_buy_buysellratio){

  signals[i].SigBSRatio=UP;

  } else {

  if (signals[i].calc<=trigger_sell_buysellratio) 

  signals[i].SigBSRatio=DOWN;

  }       

  

  if(signals[i].strength_Gap>=trigger_gap_buy){

  signals[i].SigGap=UP;

  } else {

  if (signals[i].strength_Gap<=trigger_gap_sell) 

  signals[i].SigGap=DOWN;

  }

  

  if(signals[i].strength5>signals[i].strength8){

  signals[i].SigGapPrev=UP;

  } else {

  if(signals[i].strength5<signals[i].strength8)      

  signals[i].SigGapPrev=DOWN;

  }          

  }

  }

  }    

  }

//+------------------------------------------------------------------+       

color Colorstr(double tot) 

  {

  if(tot>=trigger_buy_bidratio)

  return (BullColor);

  if(tot<=trigger_sell_bidratio)

  return (BearColor);

  return (clrOrange);

  }

color ColorBSRat(double tot) 

  {

  if(tot>=trigger_buy_buysellratio)

  return (BullColor);

  if(tot<=trigger_sell_buysellratio)

  return (BearColor);

  return (clrOrange);

  } 

color ColorGap(double tot) 

  {

  if(tot>=trigger_gap_buy)

  return (BullColor);

  if(tot<=trigger_gap_sell)

  return (BearColor);

  return (clrOrange);

  }     

//+------------------------------------------------------------------+ 

void displayMeter() {

  

  double arrt[8][3];

  int arr2,arr3;

  arrt[0][0] = currency_strength(curr[0]); arrt[1][0] = currency_strength(curr[1]); arrt[2][0] = currency_strength(curr[2]);

  arrt[3][0] = currency_strength(curr[3]); arrt[4][0] = currency_strength(curr[4]); arrt[5][0] = currency_strength(curr[5]);

  arrt[6][0] = currency_strength(curr[6]); arrt[7][0] = currency_strength(curr[7]);

  arrt[0][2] = old_currency_strength(curr[0]); arrt[1][2] = old_currency_strength(curr[1]);arrt[2][2] = old_currency_strength(curr[2]);

  arrt[3][2] = old_currency_strength(curr[3]); arrt[4][2] = old_currency_strength(curr[4]);arrt[5][2] = old_currency_strength(curr[5]);

  arrt[6][2] = old_currency_strength(curr[6]);arrt[7][2] = old_currency_strength(curr[7]);

  arrt[0][1] = 0; arrt[1][1] = 1; arrt[2][1] = 2; arrt[3][1] = 3; arrt[4][1] = 4;arrt[5][1] = 5; arrt[6][1] = 6; arrt[7][1] = 7;

  ArraySort(arrt, WHOLE_ARRAY, 0, MODE_DESCEND);

  

  for (int m = 0; m < 8; m++) {

  arr2 = arrt[m][1];

  arr3=(int)arrt[m][2];

  currstrength[m] = arrt[m][0];

  prevstrength[m] = arrt[m][2]; 

  SetText(curr[arr2]+"pos",IntegerToString(m+1)+".",(m*47)+x_axis+2,y_axis+284,clrBlack,6);

  SetText(curr[arr2]+"curr", curr[arr2],(m*47)+x_axis+10,y_axis+284,clrBlack,6);

  SetText(curr[arr2]+"currdig", DoubleToStr(arrt[m][0],1),(m*47)+x_axis+35,y_axis+284,clrBlack,6);

  SetPanel("Strength"+IntegerToString(m),0,(m*47)+x_axis,y_axis+284,50,10,color_for_profit(arrt[m][0]),C'61,61,61',1);



  // SetText(curr[arr2]+"currdig", DoubleToStr(ratio[m][0],1),x_axis+280,(m*18)+y_axis+17,color_for_profit(arrt[m][0]),12);

        

  if(currstrength[m] > prevstrength[m]){SetObjText("Sdir"+IntegerToString(m),CharToStr(233),(m*47)+x_axis,y_axis+292,BullColor,6);}

  else if(currstrength[m] < prevstrength[m]){SetObjText("Sdir"+IntegerToString(m),CharToStr(234),(m*47)+x_axis,y_axis+294,BearColor,6);}

  else {SetObjText("Sdir"+IntegerToString(m),CharToStr(243),(m*47)+x_axis,y_axis+294,clrYellow,6);}

           

  }

  ChartRedraw(); 

  }

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

color color_for_profit(double total) 

  {

  if(total<2.0)

  return (clrRed);

  if(total<=3.0)

  return (clrOrangeRed);

  if(total>7.0)

  return (clrLime);

  if(total>6.0)

  return (clrGreen);

  if(total>5.0)

  return (clrSandyBrown);

  if(total<=5.0)

  return (clrYellow);       

  return(clrSteelBlue);

  }

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

double currency_strength(string pair) {

  int fact;

  string sym;

  double range;

  double ratio;

  double strength = 0;

  int cnt1 = 0;

  

  for (int x = 0; x < ArraySize(TradePairs); x++) {

  fact = 0;

  sym = TradePairs[x];

  if (pair == StringSubstr(sym, 0, 3) || pair == StringSubstr(sym, 3, 3)) {

  // sym = sym + tempsym;

  range = (MarketInfo(sym, MODE_HIGH) - MarketInfo(sym, MODE_LOW)) ;

  if (range != 0.0) {

  ratio = 100.0 * ((MarketInfo(sym, MODE_BID) - MarketInfo(sym, MODE_LOW)) / range );

  if (ratio > 3.0)  fact = 1;

  if (ratio > 10.0) fact = 2;

  if (ratio > 25.0) fact = 3;

  if (ratio > 40.0) fact = 4;

  if (ratio > 50.0) fact = 5;

  if (ratio > 60.0) fact = 6;

  if (ratio > 75.0) fact = 7;

  if (ratio > 90.0) fact = 8;

  if (ratio > 97.0) fact = 9;

  cnt1++;

  if (pair == StringSubstr(sym, 3, 3)) fact = 9 - fact;

  strength += fact;

  // signals[x].strength += fact;

  }

  } 

  }

  // for (int x = 0; x < ArraySize(TradePairs); x++) 

  //if(cnt1!=0)signals[x].strength /= cnt1;

  if(cnt1!=0)strength /= cnt1;

  return (strength);

   

   }

//-----------------------------------------------------------------------------------+

double old_currency_strength(string pair) 

  {

  int fact;

  string sym;

  double range;

  double ratio;

  double strength=0;

  int cnt1=0;

  

  for(int x=0; x<ArraySize(TradePairs); x++) 

  {

  fact= 0;

  sym = TradePairs[x];

  int bar = iBarShift(TradePairs[x],PERIOD_M1,TimeCurrent()-900);

  double prevbid = iClose(TradePairs[x],PERIOD_M1,bar);

  

  if(pair==StringSubstr(sym,0,3) || pair==StringSubstr(sym,3,3)) 

  {

  // sym = sym + tempsym;

  range=(MarketInfo(sym,MODE_HIGH)-MarketInfo(sym,MODE_LOW));

  if(range!=0.0) 

  {

  ratio=100.0 *((prevbid-MarketInfo(sym,MODE_LOW))/range);

  

  if(ratio > 3.0)  fact = 1;

  if(ratio > 10.0) fact = 2;

  if(ratio > 25.0) fact = 3;

  if(ratio > 40.0) fact = 4;

  if(ratio > 50.0) fact = 5;

  if(ratio > 60.0) fact = 6;

  if(ratio > 75.0) fact = 7;

  if(ratio > 90.0) fact = 8;

  if(ratio > 97.0) fact = 9;

  

  cnt1++;

  

  if(pair==StringSubstr(sym,3,3))

  fact=9-fact;

  

  strength+=fact;



  }

  }

  }

  if(cnt1!=0)

  strength/=cnt1;

  

  return (strength);

  

  } 

//-----------------------------------------------------------------------+

color Colorsync(double tot) 

  {

  if(tot>=trigger_buy_relstrength)

  return (BullColor);

  if(tot<=trigger_sell_relstrength)

  return (BearColor);

  return (clrOrange);

  }

//-----------------------------------------------------------------------+

//+------------------------------------------------------------------+

void Geth4d1() {



  for (int i=0;i<ArraySize(TradePairs);i++) {

  double BB1 = iMA(TradePairs[i],PERIOD_M1,trade_Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

  double BB5 = iMA(TradePairs[i],PERIOD_M5,trade_Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

  double BB15 = iMA(TradePairs[i],PERIOD_M15,trade_Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

  double BB30 = iMA(TradePairs[i],PERIOD_M30,trade_Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

  double BBH1 = iMA(TradePairs[i],PERIOD_H1,trade_Period_MA,0,MODE_SMA,PRICE_CLOSE,0); 

  double BBH4  = iMA(TradePairs[i],PERIOD_H4,trade_Period_MA,0,MODE_SMA,PRICE_CLOSE,0);      

  double BBD1 = iMA(TradePairs[i],PERIOD_D1,trade_Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

  

  if(iClose(TradePairs[i],PERIOD_M1,0)>BB1 )

  signals[i].Signalm1=UP;

  if(iClose(TradePairs[i],PERIOD_M1,0)<BB1 )

  signals[i].Signalm1=DOWN;

  if(iClose(TradePairs[i],PERIOD_M5,0)>BB5 )

  signals[i].Signalm5=UP;

  if(iClose(TradePairs[i],PERIOD_M5,0)<BB5 )

  signals[i].Signalm5=DOWN;

  if(iClose(TradePairs[i],PERIOD_M15,0)>BB15 )

  signals[i].Signalm15=UP;

  if(iClose(TradePairs[i],PERIOD_M15,0)<BB15 )

  signals[i].Signalm15=DOWN;

  if(iClose(TradePairs[i],PERIOD_M30,0)>BB30 )

  signals[i].Signalm30=UP;

  if(iClose(TradePairs[i],PERIOD_M30,0)<BB30 )

  signals[i].Signalm30=DOWN;

  if(iClose(TradePairs[i],PERIOD_H1,0)>BBH1 )

  signals[i].Signalh1=UP;

  if(iClose(TradePairs[i],PERIOD_H1,0)<BBH1 )

  signals[i].Signalh1=DOWN;

  if(iClose(TradePairs[i],PERIOD_H4,0)>BBH4 )

  signals[i].Signalh4=UP;

  if(iClose(TradePairs[i],PERIOD_H4,0)<BBH4 )

  signals[i].Signalh4=DOWN;

  if(iClose(TradePairs[i],PERIOD_D1,0)>BBD1 )

  signals[i].Signald1=UP;

  if(iClose(TradePairs[i],PERIOD_D1,0)<BBD1 )

  signals[i].Signald1=DOWN;

           

  signals[i].Signalmaup=(signals[i].Signalm1==UP&&signals[i].Signalm5==UP&&signals[i].Signalm15==UP&&signals[i].Signalm30==UP&&signals[i].Signalh1==UP&&signals[i].Signalh4==UP&&signals[i].Signald1==UP);

  signals[i].Signalmadn=(signals[i].Signalm1==DOWN&&signals[i].Signalm5==DOWN&&signals[i].Signalm15==DOWN&&signals[i].Signalm30==DOWN&&signals[i].Signalh1==DOWN&&signals[i].Signalh4==DOWN&&signals[i].Signald1==DOWN);   

       

  //signals[i].prevSignalusd = signals[i].Signalusd; 

    

  //double high   = iHigh(TradePairs[i],trigger_TF_Strength ,0);

  //double low    = iLow(TradePairs[i],trigger_TF_Strength ,0);

  //double close  = iClose(TradePairs[i],trigger_TF_Strength ,0);

  //double open   = iOpen(TradePairs[i],trigger_TF_Strength ,0);

  //double point  = MarketInfo(TradePairs[i],MODE_POINT);

  //double range  = (high-low)*point;

  

  //if (range*point > 0.0) {

  //if (open>close)

  //signals[i].Signalusd = MathMin((high-close)/range*point/ (-0.01),100);

  //else

  //signals[i].Signalusd = MathMin((close-low)/range*point*100,100);                                           

  //} else {

  //signals[i].Signalusd = signals[i].prevSignalusd;

  //}

//   }

  }

  }

//+------------------------------------------------------------------+

void GetTrendChange() {

  for (int i=0;i<ArraySize(TradePairs);i++) {

  signals[i].SignaltcM1 = NONE;

  signals[i].SignaltcM5 = NONE;

  signals[i].SignaltcM15 = NONE;

  signals[i].SignaltcM30 = NONE;

  signals[i].SignaltcH1 = NONE;

  signals[i].SignaltcH4 = NONE;

  signals[i].SignaltcD1 = NONE;

  double OpenlastM1 = iRSI(TradePairs[i],PERIOD_M1,trade_Period_RSI,0,0);

  double OpenbeforeM1 = iRSI(TradePairs[i],PERIOD_M1,trade_Period_RSI,0,1);

  double OpenlastM5 = iRSI(TradePairs[i],PERIOD_M5,trade_Period_RSI,0,0);

  double OpenbeforeM5 = iRSI(TradePairs[i],PERIOD_M5,trade_Period_RSI,0,1);

  double OpenlastM15 = iRSI(TradePairs[i],PERIOD_M15,trade_Period_RSI,0,0);

  double OpenbeforeM15 = iRSI(TradePairs[i],PERIOD_M15,trade_Period_RSI,0,1);

  double OpenlastM30 = iRSI(TradePairs[i],PERIOD_M30,trade_Period_RSI,0,0);

  double OpenbeforeM30 = iRSI(TradePairs[i],PERIOD_M30,trade_Period_RSI,0,1);

  double OpenlastH1 = iRSI(TradePairs[i],PERIOD_H1,trade_Period_RSI,0,0);

  double OpenbeforeH1 = iRSI(TradePairs[i],PERIOD_H1,trade_Period_RSI,0,1);

  double OpenlastH4 = iRSI(TradePairs[i],PERIOD_H4,trade_Period_RSI,0,0);

  double OpenbeforeH4 = iRSI(TradePairs[i],PERIOD_H4,trade_Period_RSI,0,1);

  double OpenlastD1 = iRSI(TradePairs[i],PERIOD_D1,trade_Period_RSI,0,0);

  double OpenbeforeD1 = iRSI(TradePairs[i],PERIOD_D1,trade_Period_RSI,0,1);

        

  if (OpenlastM1<OpenbeforeM1 && OpenlastM1>30) {

  signals[i].SignaltcM1 = DOWN;

  }

  if (OpenlastM1>OpenbeforeM1 && OpenlastM1<70)  {

  signals[i].SignaltcM1 = UP;

  }

  if (OpenlastM5<OpenbeforeM5 && OpenlastM5>30) {

  signals[i].SignaltcM5 = DOWN;

  }

  if (OpenlastM5>OpenbeforeM5 && OpenlastM5<70)  {

  signals[i].SignaltcM5 = UP;

  }

  if (OpenlastM15<OpenbeforeM15 && OpenlastM15>30) {

  signals[i].SignaltcM15 = DOWN;

  }

  if (OpenlastM15>OpenbeforeM15 && OpenlastM15<70)  {

  signals[i].SignaltcM15 = UP;

  }

  if (OpenlastM30<OpenbeforeM30 && OpenlastM30>30) {

  signals[i].SignaltcM30 = DOWN;

  }

  if (OpenlastM30>OpenbeforeM30 && OpenlastM30<70)  {

  signals[i].SignaltcM30 = UP;

  }

  if (OpenlastH1<OpenbeforeH1 && OpenlastH1>30) {

  signals[i].SignaltcH1 = DOWN;

  }

  if (OpenlastH1>OpenbeforeH1 && OpenlastH1<70)  {

  signals[i].SignaltcH1 = UP;

  }   

  if (OpenlastH4<OpenbeforeH4 && OpenlastH4>30) {

  signals[i].SignaltcH4 = DOWN;

  }

  if (OpenlastH4>OpenbeforeH4 && OpenlastH4<70)  {

  signals[i].SignaltcH4 = UP;

  }   

  if (OpenlastD1<OpenbeforeD1 && OpenlastD1>30) {

  signals[i].SignaltcD1 = DOWN;

  }

  if (OpenlastD1>OpenbeforeD1 && OpenlastD1<70)  {

  signals[i].SignaltcD1 = UP;

  }      

  }

  }

//+------------------------------------------------------------------+  

void GetCommodity() {

  for (int i=0;i<ArraySize(TradePairs);i++) {

  signals[i].SignalccM1 = NONE;

  signals[i].SignalccM5 = NONE;

  signals[i].SignalccM15 = NONE;

  signals[i].SignalccM30 = NONE;

  signals[i].SignalccH1 = NONE;

  signals[i].SignalccH4 = NONE;

  signals[i].SignalccD1 = NONE;

  

  double cciM1 = iCCI(TradePairs[i],PERIOD_M1,trade_Period_CCI,5,0);

  double cci_prevM1 = iCCI(TradePairs[i],PERIOD_M1,trade_Period_CCI,5,1);

  double cciM5 = iCCI(TradePairs[i],PERIOD_M5,trade_Period_CCI,5,0);

  double cci_prevM5 = iCCI(TradePairs[i],PERIOD_M5,trade_Period_CCI,5,1);

  double cciM15 = iCCI(TradePairs[i],PERIOD_M15,trade_Period_CCI,5,0);

  double cci_prevM15 = iCCI(TradePairs[i],PERIOD_M15,trade_Period_CCI,5,1);

  double cciM30 = iCCI(TradePairs[i],PERIOD_M30,trade_Period_CCI,5,0);

  double cci_prevM30 = iCCI(TradePairs[i],PERIOD_M30,trade_Period_CCI,5,1);

  double cciH1 = iCCI(TradePairs[i],PERIOD_H1,trade_Period_CCI,5,0);

  double cci_prevH1 = iCCI(TradePairs[i],PERIOD_H1,trade_Period_CCI,5,1);

  double cciH4 = iCCI(TradePairs[i],PERIOD_H4,trade_Period_CCI,5,0);

  double cci_prevH4 = iCCI(TradePairs[i],PERIOD_H4,trade_Period_CCI,5,1);

  double cciD1 = iCCI(TradePairs[i],PERIOD_D1,trade_Period_CCI,5,0);

  double cci_prevD1 = iCCI(TradePairs[i],PERIOD_D1,trade_Period_CCI,5,1); 

  

  if (cciM1<trigger_CCI_Sell&&cciM1<cci_prevM1) {

  signals[i].SignalccM1 = DOWN;

  }

  if (cciM1>trigger_CCI_Buy&&cciM1>cci_prevM1)  {

  signals[i].SignalccM1 = UP;

  }

  if (cciM5<trigger_CCI_Sell&&cciM5<cci_prevM5) {

  signals[i].SignalccM5 = DOWN;

  }

  if (cciM5>trigger_CCI_Buy&&cciM5>cci_prevM5)  {

  signals[i].SignalccM5 = UP;

  }

  if (cciM15<trigger_CCI_Sell&&cciM15<cci_prevM15) {

  signals[i].SignalccM15 = DOWN;

  }

  if (cciM15>trigger_CCI_Buy&&cciM15>cci_prevM15)  {

  signals[i].SignalccM15 = UP;

  }

  if (cciM30<trigger_CCI_Sell&&cciM30<cci_prevM30) {

  signals[i].SignalccM30 = DOWN;

  }

  if (cciM30>trigger_CCI_Buy&&cciM30>cci_prevM30)  {

  signals[i].SignalccM30 = UP;

  }

  if (cciH1<trigger_CCI_Sell&&cciH1<cci_prevH1) {

  signals[i].SignalccH1 = DOWN;

  }

  if (cciH1>trigger_CCI_Buy&&cciH1>cci_prevH1)  {

  signals[i].SignalccH1 = UP;

  }

  if (cciH4<trigger_CCI_Sell&&cciH4<cci_prevH4) {

  signals[i].SignalccH4 = DOWN;

  }

  if (cciH4>trigger_CCI_Buy&&cciH4>cci_prevH4)  {

  signals[i].SignalccH4 = UP;

  }

  if (cciD1<trigger_CCI_Sell&&cciD1<cci_prevD1) {

  signals[i].SignalccD1 = DOWN;

  }

  if (cciD1>trigger_CCI_Buy&&cciD1>cci_prevD1)  {

  signals[i].SignalccD1 = UP;

  }   

  }

  }

//-------------------------------------------------------------------------------------+ 

//------------------------   PlSoft ROUTINE  ------------------------------------ 

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

string t[12],x[12],opt[12];



sinput double    Min_Profit      = 1.5;

double goal                      = Min_Profit;



input int    MinStep     = 40;      // Step order

input int    MinStepPlus = 10;      // Add minimal step

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

//+------------------------------------------------------------------+  

void SetEditLabel( string label_Name,

                   int label_X,

                   int label_Y,

                   int width,

                   int height,

                   string label_Text,

                   int font,

                   color colir_but,

                   color colir_bg,

                   string tip

                 )

{



if(ObjectFind(label_Name)<0) ObjectCreate(0,label_Name,OBJ_EDIT,0,0,0);

      ObjectSetInteger(0,label_Name,OBJPROP_CORNER,CORNER_LEFT_UPPER); 

      ObjectSetInteger(0,label_Name,OBJPROP_XDISTANCE,label_X);

      ObjectSetInteger(0,label_Name,OBJPROP_YDISTANCE,label_Y);

      ObjectSetInteger(0,label_Name,OBJPROP_XSIZE,width);

      ObjectSetInteger(0,label_Name,OBJPROP_YSIZE,height);

      ObjectSetString(0,label_Name,OBJPROP_TEXT,label_Text);

      ObjectSetInteger(0,label_Name,OBJPROP_SELECTABLE,false);

      ObjectSetInteger(0,label_Name,OBJPROP_BACK,false); 

      ObjectSetString(0,label_Name,OBJPROP_TOOLTIP,tip);

      ObjectSetInteger(0,label_Name,OBJPROP_FONTSIZE,font);

      ObjectSetInteger(0,label_Name,OBJPROP_COLOR,colir_but);

      ObjectSetInteger(0,label_Name,OBJPROP_BGCOLOR,colir_bg);

      ObjectSetInteger(0,label_Name,OBJPROP_ZORDER,11);

      

      ObjectSetInteger(0,label_Name,OBJPROP_ALIGN,ALIGN_CENTER);

      ObjectSetInteger(0,label_Name,OBJPROP_BORDER_COLOR,clrGreen);

}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int OnCalculate1(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

//---

   

//--- return value of prev_calculated for next call

   return(rates_total);

  }

  

  

//+------------------------------------------------------------------+

/*sinput*/ string masterPreamble = "CM_Strenght_1";

/*sinput*/ int UpdateInSeconds  = 1;

/*sinput*/ int xAnchor = 400;

/*sinput*/ int yAnchor = 0;

/*sinput*/ ENUM_BASE_CORNER Location = 1;



/*sinput*/ ENUM_TIMEFRAMES TF_1      =1;

/*sinput*/ int             Period_1  =1;

/*sinput*/ int             fontSize  =6;

/*sinput*/ int             Col1      =5; //Column Number

/*sinput*/ int             Col2      =15; //Column Currency

/*sinput*/ int             Col3      =35; //Column Strength



int panelWidth = 500;

int panelHeight = 400;



int xWidth = 20;

int xSpace = 6;

int yHeight = 8;

int ySpace = 8;



color ClrText = clrWhiteSmoke;

color ClrBackground = C'19,32,32';

color ClrBorder = clrNONE;

//+------------------------------------------------------------------+

void displayMeter1() {

   

  double arrt[8][3];

  int arr2,arr3;

  arrt[0][0] = currency_strength1(curr[0]); arrt[1][0] = currency_strength1(curr[1]); arrt[2][0] = currency_strength1(curr[2]);

  arrt[3][0] = currency_strength1(curr[3]); arrt[4][0] = currency_strength1(curr[4]); arrt[5][0] = currency_strength1(curr[5]);

  arrt[6][0] = currency_strength1(curr[6]); arrt[7][0] = currency_strength1(curr[7]);

  arrt[0][2] = old_currency_strength1(curr[0]); arrt[1][2] = old_currency_strength1(curr[1]);arrt[2][2] = old_currency_strength1(curr[2]);

  arrt[3][2] = old_currency_strength1(curr[3]); arrt[4][2] = old_currency_strength1(curr[4]);arrt[5][2] = old_currency_strength1(curr[5]);

  arrt[6][2] = old_currency_strength1(curr[6]);arrt[7][2] = old_currency_strength1(curr[7]);

  arrt[0][1] = 0; arrt[1][1] = 1; arrt[2][1] = 2; arrt[3][1] = 3; arrt[4][1] = 4;arrt[5][1] = 5; arrt[6][1] = 6; arrt[7][1] = 7;

  ArraySort(arrt, WHOLE_ARRAY, 0, MODE_DESCEND);

  

  // set the panel

  string labelName = masterPreamble + "Header";

  

  panelWidth = 0;

  panelWidth = panelWidth + 100;

  

  panelWidth = panelWidth + 3 * xSpace; // + xWidth;

  panelHeight = 9 * yHeight + 10 * ySpace;

  string panelName = masterPreamble + "MainPanel";

//  string strText = "   (TF: " + IntegerToString(TF_1,1) + ";  P: " + IntegerToString(Period_1,1) + ")";

//  SetPanel(panelName,0,xAnchor, yAnchor - 20,panelWidth,panelHeight + 20,ClrBackground,clrWhiteSmoke,3);

//  SetText(masterPreamble + "_label_indiName","",xAnchor + xSpace,yAnchor - 15,ClrText, fontSize); //SetText(masterPreamble + "_label_indiName","Strength",xAnchor + xSpace,yAnchor - 15,ClrText, fontSize);

//  SetText(masterPreamble + "_label_indiName2",strText,xAnchor + xSpace,yAnchor + 5,ClrText, fontSize);

     

  for (int m = 0; m < 8; m++) {

  arr2 = arrt[m][1];

  arr3=(int)arrt[m][2];

  currstrength[m] = arrt[m][0];

  prevstrength[m] = arrt[m][2]; 

  //SetText(masterPreamble + curr[arr2]+"pos01",IntegerToString(m+1)+".",xAnchor+Col1,yAnchor + (m + 1) * (yHeight + ySpace) + 3,color_for_profit(arrt[m][0]),fontSize);

  //SetText(masterPreamble + curr[arr2]+"curr01", curr[arr2],xAnchor+Col2,yAnchor + (m+ 1) * (yHeight + ySpace) + 3,color_for_profit(arrt[m][0]),fontSize);

  //SetText(masterPreamble + curr[arr2]+"currdig01", DoubleToStr(arrt[m][0],1),xAnchor+Col3,yAnchor + (m + 1) * (yHeight + ySpace) + 3,color_for_profit(arrt[m][0]),fontSize);

  // SetText(curr[arr2]+"currdig", DoubleToStr(ratio[m][0],1),x_axis+280,(m*18)+y_axis+17,color_for_profit(arrt[m][0]),12);

  

  //if(currstrength[m] > prevstrength[m]){SetObjText(masterPreamble + "Sdir01"+IntegerToString(m),CharToStr(233),xAnchor+50,yAnchor + (m + 1) * (yHeight + ySpace) + 3,BullColor,fontSize);}

  //else if(currstrength[m] < prevstrength[m]){SetObjText(masterPreamble + "Sdir01"+IntegerToString(m),CharToStr(234),xAnchor+50,yAnchor + (m + 1) * (yHeight + ySpace) + 5,BearColor,fontSize);}

  //else {SetObjText(masterPreamble + "Sdir01"+IntegerToString(m),CharToStr(243),xAnchor+50,yAnchor + (m + 1) * (yHeight + ySpace) + 3,clrWhite,fontSize);}

  

  }

  ChartRedraw(); 

  }

color color_for_profit1(double total) 

  {

  if(total<2.0)

  return (clrRed);

  if(total<=3.0)

  return (clrOrangeRed);

  if(total>7.0)

  return (clrDodgerBlue);

  if(total>6.0)

  return (clrLime);

  if(total>5.0)

  return (clrLimeGreen);

  if(total<=5.0)

  return (clrYellow);       

  return(clrSteelBlue);

  }

  

double currency_strength1(string pair) {

  int fact;

  string sym;

  double range;

  double ratio;

  double strength = 0;

  int cnt1 = 0;

  

  for (int x = 0; x < ArraySize(TradePairs); x++) {

  fact = 0;

  sym = TradePairs[x];

  if (pair == StringSubstr(sym, 0, 3) || pair == StringSubstr(sym, 3, 3)) {

  // sym = sym + tempsym;

  //range = (MarketInfo(sym, MODE_HIGH) - MarketInfo(sym, MODE_LOW)) ;

  range = getHigh(sym, TF_1,Period_1,0) - getLow(sym, TF_1,Period_1,0);

  if (range != 0.0) {

  ratio = 100.0 * ((MarketInfo(sym, MODE_BID) - getLow(sym, TF_1,Period_1,0)) / range );

  if (ratio > 3.0)  fact = 1;

  if (ratio > 10.0) fact = 2;

  if (ratio > 25.0) fact = 3;

  if (ratio > 40.0) fact = 4;

  if (ratio > 50.0) fact = 5;

  if (ratio > 60.0) fact = 6;

  if (ratio > 75.0) fact = 7;

  if (ratio > 90.0) fact = 8;

  if (ratio > 97.0) fact = 9;

  cnt1++;

  if (pair == StringSubstr(sym, 3, 3)) fact = 9 - fact;

  strength += fact;

  // signals[x].strength += fact;

  }

  } 

  }

  // for (int x = 0; x < ArraySize(TradePairs); x++) 

  //if(cnt1!=0)signals[x].strength /= cnt1;

  if(cnt1!=0)strength /= cnt1;

  return (strength);

  

  }

//-----------------------------------------------------------------------------------+

double old_currency_strength1(string pair) 

  {

  int fact;

  string sym;

  double range;

  double ratio;

  double strength=0;

  int cnt1=0;

  

  for(int x=0; x<ArraySize(TradePairs); x++) 

  {

  fact= 0;

  sym = TradePairs[x];

  int bar = iBarShift(TradePairs[x],PERIOD_M1,TimeCurrent()-60*TF_1);

  double prevbid = iClose(TradePairs[x],PERIOD_M1,bar);

  

  if(pair==StringSubstr(sym,0,3) || pair==StringSubstr(sym,3,3)) 

  {

  // sym = sym + tempsym;

  range=(getHigh(sym, TF_1,Period_1,0)-getLow(sym, TF_1,Period_1,0));

  if(range!=0.0) 

  {

  ratio=100.0 *((prevbid-getLow(sym, TF_1,Period_1,0))/range);

  

  if(ratio > 3.0)  fact = 1;

  if(ratio > 10.0) fact = 2;

  if(ratio > 25.0) fact = 3;

  if(ratio > 40.0) fact = 4;

  if(ratio > 50.0) fact = 5;

  if(ratio > 60.0) fact = 6;

  if(ratio > 75.0) fact = 7;

  if(ratio > 90.0) fact = 8;

  if(ratio > 97.0) fact = 9;

  

  cnt1++;

  

  if(pair==StringSubstr(sym,3,3))

  fact=9-fact;

  

  strength+=fact;

  

  }

  }

  }

  if(cnt1!=0)

  strength/=cnt1;

  

  return (strength);

  

  }

//-----------------------------------------------------------------------+

color Colorsync1(double tot) 

  {

  if(tot>=trigger_buy_relstrength)

  return (BullColor);

  if(tot<=trigger_sell_relstrength)

  return (BearColor);

  return (clrOrange);

  }

//-----------------------------------------------------------------------+  

//-----------------------------------------------------------------------------------------------+ 

void GetSignals1() {

  int cnt = 0;

  ArrayResize(signals,ArraySize(TradePairs));

  for (int i=0;i<ArraySize(signals);i++) {

  signals[i].symbol=TradePairs[i]; 

  signals[i].point=MarketInfo(signals[i].symbol,MODE_POINT);

  signals[i].open=iOpen(signals[i].symbol,TF_1,Period_1);      

  signals[i].close=iClose(signals[i].symbol,TF_1,0);

  signals[i].hi=getLow(signals[i].symbol, TF_1,Period_1,0); //MarketInfo(signals[i].symbol,MODE_HIGH);

  signals[i].lo=getLow(signals[i].symbol, TF_1,Period_1,0); //MarketInfo(signals[i].symbol,MODE_LOW);

  signals[i].bid=MarketInfo(signals[i].symbol,MODE_BID);

  signals[i].range=(signals[i].hi-signals[i].lo);

  signals[i].shift = iBarShift(signals[i].symbol,PERIOD_M1,TimeCurrent()-TF_1 * 60);

  signals[i].prevbid = iClose(signals[i].symbol,PERIOD_M1,signals[i].shift);

  

  if(signals[i].range!=0) {            

  signals[i].ratio=MathMin(((signals[i].bid-signals[i].lo)/signals[i].range*100 ),100);

  signals[i].prevratio=MathMin(((signals[i].prevbid-signals[i].lo)/signals[i].range*100 ),100);     

  

  for (int j = 0; j < 8; j++){

  

  if(signals[i].ratio <= 3.0) signals[i].fact = 0;

  if(signals[i].ratio > 3.0)  signals[i].fact = 1;

  if(signals[i].ratio > 10.0) signals[i].fact = 2;

  if(signals[i].ratio > 25.0) signals[i].fact = 3;

  if(signals[i].ratio > 40.0) signals[i].fact = 4;

  if(signals[i].ratio > 50.0) signals[i].fact = 5;

  if(signals[i].ratio > 60.0) signals[i].fact = 6;

  if(signals[i].ratio > 75.0) signals[i].fact = 7;

  if(signals[i].ratio > 90.0) signals[i].fact = 8;

  if(signals[i].ratio > 97.0) signals[i].fact = 9;

  cnt++;

  

  if(curr[j]==StringSubstr(signals[i].symbol,3,3))

  signals[i].fact=9-signals[i].fact;

  

  if(curr[j]==StringSubstr(signals[i].symbol,0,3)) {

  signals[i].strength1=signals[i].fact;

  }  else{

  if(curr[j]==StringSubstr(signals[i].symbol,3,0))

  signals[i].strength2=signals[i].fact;

  }

  

  signals[i].calc =signals[i].strength1-signals[i].strength2;

  

  signals[i].strength=currency_strength1(curr[j]);

  

  if(curr[j]==StringSubstr(signals[i].symbol,0,3)){

  signals[i].strength3=signals[i].strength;

  } else{

  if(curr[j]==StringSubstr(signals[i].symbol,3,0))

  signals[i].strength4=signals[i].strength;

  }

  signals[i].strength5=(signals[i].strength3-signals[i].strength4);

  

  signals[i].strength=old_currency_strength1(curr[j]);

  

  if(curr[j]==StringSubstr(signals[i].symbol,0,3)){

  signals[i].strength6=signals[i].strength;

  } else {

  if(curr[j]==StringSubstr(signals[i].symbol,3,0))

  signals[i].strength7=signals[i].strength;

  }

  signals[i].strength8=(signals[i].strength6-signals[i].strength7);     

  signals[i].strength_Gap=signals[i].strength5-signals[i].strength8;

        

  if(signals[i].ratio>=trigger_buy_bidratio){

  signals[i].SigRatio=UP;

  } else {

  if(signals[i].ratio<=trigger_sell_bidratio)

  signals[i].SigRatio=DOWN;

  }  

  

  if(signals[i].ratio>signals[i].prevratio){

  signals[i].SigRatioPrev=UP;

  } else {

  if(signals[i].ratio<signals[i].prevratio)

  signals[i].SigRatioPrev=DOWN;

  }      

  

  if(signals[i].calc>=trigger_buy_relstrength){

  signals[i].SigRelStr=UP;

  } else {

  if (signals[i].calc<=trigger_sell_relstrength) 

  signals[i].SigRelStr=DOWN;

  } 

  

  if(signals[i].strength5>=trigger_buy_buysellratio){

  signals[i].SigBSRatio=UP;

  } else {

  if (signals[i].calc<=trigger_sell_buysellratio) 

  signals[i].SigBSRatio=DOWN;

  }       

  

  if(signals[i].strength_Gap>=trigger_gap_buy){

  signals[i].SigGap=UP;

  } else {

  if (signals[i].strength_Gap<=trigger_gap_sell) 

  signals[i].SigGap=DOWN;

  }

  

  if(signals[i].strength5>signals[i].strength8){

  signals[i].SigGapPrev=UP;

  } else {

  if(signals[i].strength5<signals[i].strength8)      

  signals[i].SigGapPrev=DOWN;

  }          

  }

  }

  }    

  }

//+------------------------------------------------------------------+       

color Colorstr1(double tot) 

  {

  if(tot>=trigger_buy_bidratio)

  return (BullColor);

  if(tot<=trigger_sell_bidratio)

  return (BearColor);

  return (clrOrange);

  }

color ColorBSRat1(double tot) 

  {

  if(tot>=trigger_buy_buysellratio)

  return (BullColor);

  if(tot<=trigger_sell_buysellratio)

  return (BearColor);

  return (clrOrange);

  } 

color ColorGap1(double tot) 

  {

  if(tot>=trigger_gap_buy)

  return (BullColor);

  if(tot<=trigger_gap_sell)

  return (BearColor);

  return (clrOrange);

  }     

//+------------------------------------------------------------------+ 

double getHigh(string _symbol, int _tf, int _lookBack, int _shift)

  {

  double high = -500000;

  for (int u = 0; u < _lookBack; u++)

  {

  if (iHigh(_symbol, _tf, _shift+u) > high)

  {

  high = iHigh(_symbol, _tf, _shift+u);

  }

  }

  return high;

  }



double getLow(string _symbol, int _tf, int _lookBack, int _shift)

  {

  double low = 500000;

  for (int u = 0; u < _lookBack; u++)

  {

  if (iLow(_symbol, _tf, _shift+u) < low)

  {

  low = iLow(_symbol, _tf, _shift+u);

  }

  }

  return low;

  }

//+------------------------------------------------------------------+ 

   

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---