打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
午夜超短EA

查看原文:http://www.125808047.com/?p=1747
Momods_Night_Scalper_V3.01_Basic智能交易EA也有人称为夜间黄牛,用在eurusd, eurgbp,eurcad, eurchf, gbpusd, gbpchf, gbpcad, usdcad, cadchf, usdchf.十个货币的m15图表,GMT_Offset自己计算下自己平台的GMT差。

该EA有两个文件,一个指标Fractal_Levels.mq4放入指标文件假,Momods_Night_Scalper_V3.01_Basic.mq4放入EA文件夹。

本网收集整理智能交易EA仅为MQL4编程爱好者提供语法及相关编程技巧的学习研究之用,智能交易存在极高的风险测试请用模拟盘,请勿用于实盘。MQL4源码如下:

指标Fractal Levels.mq4源码:

//+------------------------------------------------------------------+//|                                               Fractal Levels.mq4 |//|                                     Copyright 2014, QQ:125808047 |//+------------------------------------------------------------------+#property copyright "www.125808047.com"#property link      "http://www.125808047.com/"#property indicator_chart_window#property indicator_buffers 2#property indicator_color1 Gray#property indicator_color2 Gray#property indicator_width1 1#property indicator_width2 1double UpperFr[];double LowerFr[];extern double MidFractalDist = 6;extern double OppFractalDist = 11;extern color  Line1col = Green;extern color  Line2col = Red;extern color  Line3col = DarkGreen;extern color  Line4col = DarkOrange;double        PointValue;int           refreshtime;int init(){   if (Digits <= 3) PointValue = 0.01; else PointValue = 0.0001;   SetIndexBuffer(0, UpperFr);   SetIndexBuffer(1, LowerFr);   SetIndexEmptyValue(0, 0);   SetIndexEmptyValue(1, 0);   SetIndexStyle(0, DRAW_ARROW);   SetIndexArrow(0, 217);   SetIndexStyle(1, DRAW_ARROW);   SetIndexArrow(1, 218);   return(0);}int deinit(){   for (int i = 1; i <= 4; i++) ObjectDelete("Line" + i);   Comment("");   return(0);}int start(){   int counted=IndicatorCounted();   if (counted < 0) return(-1);   if (counted > 0) counted--;   int limit=Bars-counted;   if (refreshtime != iTime(Symbol(),PERIOD_M15,0))   {      refreshtime = iTime(Symbol(),PERIOD_M15,0);      for (int i = 1; i <= 4; i++) ObjectDelete("Line" + i);   }   else return(0);      double dy;   for(i=1; i<=20; i++)   {      dy+=0.2*(High[i]-Low[i])/20;      UpperFr[i]=0; LowerFr[i]=0;   }   for(int a=1; a<Bars; a++)   {      if(iFractals(NULL, 0, MODE_UPPER,a)!=0)      {         double LastUpFractal=iFractals(NULL, 0, MODE_UPPER,a);         datetime FracUpTime =iTime(Symbol(),PERIOD_M15,a);         UpperFr[a]=High[a] + dy;         break;      }   }   for(int s=1; s<Bars; s++)   {      if(iFractals(NULL, 0, MODE_LOWER,s)!=0)      {         double LastDownFractal=iFractals(NULL, 0, MODE_LOWER,s);         datetime FracDownTime =iTime(Symbol(),PERIOD_M15,s);         LowerFr[s]=Low[s] - dy;         break;      }   }   datetime FracTime;   if (FracUpTime < FracDownTime) FracTime = FracUpTime;   else FracTime = FracDownTime;      double midFractal=NormalizeDouble((LastUpFractal+LastDownFractal)/2,Digits);   double price1 = LastUpFractal-OppFractalDist*PointValue;   double price2 = LastDownFractal+OppFractalDist*PointValue;   double price3 = midFractal-MidFractalDist*PointValue;   double price4 = midFractal+MidFractalDist*PointValue;      ObjectCreate("Line1", OBJ_TREND, 0, FracTime, price1, TimeCurrent(), price1);   ObjectSet("Line1",OBJPROP_COLOR,Line1col);   ObjectSet("Line1",OBJPROP_BACK,True);   ObjectCreate("Line2", OBJ_TREND, 0, FracTime, price2, TimeCurrent(), price2);   ObjectSet("Line2",OBJPROP_COLOR,Line2col);   ObjectSet("Line2",OBJPROP_BACK,True);   ObjectCreate("Line3", OBJ_TREND, 0, FracTime, price3, TimeCurrent(), price3);   ObjectSet("Line3",OBJPROP_COLOR,Line3col);   ObjectSet("Line3",OBJPROP_BACK,True);   ObjectCreate("Line4", OBJ_TREND, 0, FracTime, price4, TimeCurrent(), price4);   ObjectSet("Line4",OBJPROP_COLOR,Line4col);   ObjectSet("Line4",OBJPROP_BACK,True);   return(0);}-------------------------注意下面为EA源码--------------------------------------------------------------------//智能交易EA  Momods_Night_Scalper_V3.01_Basic 源码如下://////////////////////////////////////////////////////////          Momods_Night_Scalper_V3.01_Basic          ////     Coded by Momods @ worldwide-invest.org         ////                  April 21, 2013                    ////////////////////////////////////////////////////////////        If you make money from this EA              ////  please make donnation to my paypal Account        ////              mohddisi@yahoo.com                    ////////////////////////////////////////////////////////////V1.3 (March 17, 2013) - Added second condition for Fractals signal//                      - Added MA Slope filter//                      - Added settings internally////V1.4 (March 23, 2013) - Fixed a bug in displaying Open/Close hours//                      - No need to add pair suffix//                      - Added code to generate master magic number for all pairs based on account number//                      - Faster back tests//                      - hide EA name in comments from broker (enter your own)//                      - Option to hide SL/TP from broker.  Highly dangerous if you are not using VPS.//                      - Now you can see total profit (loss) for each pair on the display//                      - Revised settings for several pairs based on optimization////V2.0 (March 31, 2013) - Fixed a bug in calculating trading times for friday//                      - Added BB to be used either as Signal or filter.//                      - Added trade spacing time filter (When a trade closes in loss, EA will wait x minutes before opening a same type trade).//                      - Modified settings for EURCAD, EURGBP, and USDCAD.//V2.1 (March 31, 2013) - Fixed a bug in calculating trade pause//V2.2 (April 2, 2013)  - Fixed another bug in session display.////V2.21 (April 14, 2013) - Added Max Spread to externals //                       - Fixed display bug  ////V3.0 (April 21, 2013)  - Added Auto-Timing (EA will determine your broker's GMT Offset automatically).//                       - Added Daylight Saving Timing (DST) for back testing//                       - Added maximo's Fractal Level indicator //                       - Renamed several parameters to remove any confusion//                       - Added second option to puase trades on loss based on pips from last loss (good for trading on price charts....renko...range..)//                       - Added RSI indicator as signal/filter//V3.01 (April 24, 2013) - Limited Auto timing just to get correct GMT Offset.  Use manual GMT offset for trading.#property copyright "www.125808047.com"#property link      "http://www.125808047.com/"#import  "Wininet.dll"   int InternetOpenA(string, int, string, string, int);   int InternetConnectA(int, string, int, string, string, int, int, int);    int HttpOpenRequestA(int, string, string, int, string, int, string, int);    int InternetOpenUrlA(int, string, string, int, int, int);   int InternetReadFile(int, string, int, int& OneInt[]);   int InternetCloseHandle(int); #importextern string  EA_Name= "Momods_Night_Scalper_v3.01_Basic";extern string  C_1="Please Enter your own EA Comment below"; extern string  EA_Comment="";     extern string  S_1="If MAGIC=0, a unique value will be generated by EA";      extern int     MAGIC = 0;extern bool    New_Trade=True;extern string S0="----------------------";extern double  lot           = 0;extern double  Risk          = 7.5;extern bool    Hide_SL_TP    = False;double  TakeProfit    = 60;double  StopLoss      = 50;int     Slippage      = 3;extern string  C0=" If Max_Spread = 0, EA will use internal settings";extern double  Max_Spread    = 6.0;extern string S1="----------------------";extern bool   Use_Auto_Time = True;extern int    GMT_Offset     = 0;extern bool   UseDST = FALSE;int    Open_Hour      = 20;int    Close_Hour     = 23;bool   TradeOnFriday  = False;int    Friday_Hour    =15;extern string S2="----------------------";extern bool   Trade_Pause_On_Loss = false;extern string P="Puase type: 1= Use Minutes, 2= Use Pips";extern int    Pause_Type=1;extern int    Trade_Pause_Minutes = 60;extern double Trade_Pause_Pips = 20;extern string S3="----------------------";extern bool    Allow_Second_Open_Trade=false;extern double  Distance      = 12;extern double  Lot_Factor    = 0.5;string S4="----------------------";bool   Use_CCI        = False;int    CCI_Period     = 10;double CCI_Entry      = 200;double CCI_Exit       = 140;string S5="----------------------";bool   Use_WPR        = true;int    WPR_Period     = 10;double WPR_Entry      = 91;double WPR_Exit       = 40;string S6="----------------------";bool   Use_RSI        = false;int    RSI_Period     = 70;double RSI_Entry      = 50;string S7="----------------------";bool   Use_Fractals   = true;double MidFractalDist = 5;double OppositFractalDist=10;extern bool   Show_Fractal_Levels=False;string S8="----------------------";bool   Use_MA_Dist   = false;double MA_Dist_Period = 4;string Mode="0= Simple, 1= Exponential, 2= Smoothed, 3= Linear Weighted";double MA_Dist_Mode=1;double Dist_to_MA =4;string S9="----------------------";bool   Use_MA1         = False;int    MA_Period1      = 75;string Mode1="0= Simple, 1= Exponential, 2= Smoothed, 3= Linear Weighted";int    MA_Mode1        = 3;bool   Use_MA2         = False;int    MA_Period2      = 19;string Mode2="0= Simple, 1= Exponential, 2= Smoothed, 3= Linear Weighted";int    MA_Mode2        = 3;bool   Use_MA2_Slope   = False;double MA_Slope       = 1;string S10="----------------------";bool   Use_BB         = False;int    BB_Period      = 10;int    BB_Dev         = 2;int    BB_Range       = 12;int    BB_Penetration = 2;bool   Use_BB_Direction=False;string S11="---------Global Variables---------------";bool Trade;datetime Last_Time;double Lot;double LastUpFractal,LastDownFractal;double midFractal;int SpreadSampleSize = 10;  double Spread[];string Session="";int Magic;int CCI_Buy_Sig;int CCI_Sell_Sig;int WPR_Buy_Sig;int WPR_Sell_Sig;int MA_Buy_Sig1;int MA_Sell_Sig1;int MA_Buy_Sig2;int MA_Sell_Sig2;int Fractals_Buy_Sig;int Fractals_Sell_Sig;  int CCI_Exit_Buy_Sig;int CCI_Exit_Sell_Sig;int WPR_Exit_Buy_Sig;int WPR_Exit_Sell_Sig; int MA_Slope_Buy_Sig;               int MA_Slope_Sell_Sig;int BB_Buy_Sig;               int BB_Sell_Sig;int Trade_Pause_Buy_Sig;int Trade_Pause_Sell_Sig;int MA_Dist_Buy_Sig;               int MA_Dist_Sell_Sig;int RSI_Buy_Sig;               int RSI_Sell_Sig; double CCI_1,WPR_1, MA_1_1, MA_1_2,MA_2_1,MA_2_2,BB_U_1,BB_U_2,BB_U_3,BB_L_1,BB_L_2,BB_L_3,MA_3_1, RSI_1; string site1 = "http://www.timezoneconverter.com/cgi-bin/zoneinfo.tzc?tz=America/New_York";//string site2 = "http://http://localtimes.info/North_America/United_States/New_York/New_York/";string site2 = "http://www.timezoneconverter.com/cgi-bin/zoneinfo.tzc?tz=";int NY_Diff,GMT_Diff;        int init() {//-----------------------------------Time Offset ----------------------------------------------------// if (Use_Auto_Time && (IsTesting() || IsOptimization())) {Alert("You can not use Auto Timing in back test.  Please use manual GMT Offset.");return(0);} if (Use_Auto_Time && !IsTesting() && !IsOptimization()) {   if (Minute() ==59 || Minute() ==0 )     {     Comment("Hour is changing.  Please wait few minutes");     if (Minute()==59) Sleep(120000);     if (Minute()==0) Sleep(60000);             }         if (Minute() !=59 && Minute() !=0 )   {      NY_Diff= Time_Offset(site1,83);      //GMT_Diff= Time_Offset(site2,70);      //if (NY_Diff==100 || GMT_Diff==100)            if (NY_Diff==100)      {      Alert("Cant Get Auto Timing.  Please use Manual GMT Offset");      return(0);      }   }     if (DST()==0) GMT_Offset=NY_Diff-4;   if (DST()==1) GMT_Offset=NY_Diff-5;      //Print("GMT_Diff = ",GMT_Diff);   Print("NY_Diff = ",NY_Diff);    Alert("Your Broker GMT_Offset = ",GMT_Offset);        }        //----------------------------------Set Magic Number --------------------------------------------------// if (MAGIC==0) MAGIC=MathFloor(AccountNumber()/57431)*100; if (MAGIC>0) MAGIC=MAGIC*100; if (StringSubstr(Symbol(),0,6)=="EURCAD")  { Magic=MAGIC+1;if(Max_Spread==0)Max_Spread=6;StopLoss= 60;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=120;Use_WPR=true;WPR_Period=10;WPR_Entry=91;WPR_Exit=40; Use_Fractals=true;MidFractalDist=6;OppositFractalDist=11;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;} if (StringSubstr(Symbol(),0,6)=="EURGBP")  { Magic=MAGIC+2;if(Max_Spread==0)Max_Spread=4;StopLoss= 60;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=120;Use_WPR=true;WPR_Period=11;WPR_Entry=90;WPR_Exit=40; Use_Fractals=true;MidFractalDist=5;OppositFractalDist=9;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="USDCAD")  { Magic=MAGIC+3;if(Max_Spread==0)Max_Spread=4;StopLoss= 60;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=120;CCI_Exit=125;Use_WPR=true;WPR_Period=10;WPR_Entry=90;WPR_Exit=35; Use_Fractals=true;MidFractalDist=8;OppositFractalDist=11;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="EURCHF")  {  Magic=MAGIC+4;if(Max_Spread==0)Max_Spread=5;StopLoss= 40;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=130;Use_WPR=true;WPR_Period=10;WPR_Entry=91;WPR_Exit=30; Use_Fractals=true;MidFractalDist=7;OppositFractalDist=9;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="USDCHF")  {  Magic=MAGIC+5;if(Max_Spread==0)Max_Spread=4;StopLoss= 40;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=120;Use_WPR=true;WPR_Period=10;WPR_Entry=91;WPR_Exit=40; Use_Fractals=true;MidFractalDist=6;OppositFractalDist=9;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="GBPCHF")  {  Magic=MAGIC+6;if(Max_Spread==0)Max_Spread=6;StopLoss= 50;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=130;Use_WPR=true;WPR_Period=10;WPR_Entry=91;WPR_Exit=30; Use_Fractals=true;MidFractalDist=9;OppositFractalDist=15;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="GBPCAD")  {   Magic=MAGIC+7;if(Max_Spread==0)Max_Spread=6;StopLoss= 50;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=130;Use_WPR=true;WPR_Period=10;WPR_Entry=91;WPR_Exit=30; Use_Fractals=true;MidFractalDist=7;OppositFractalDist=13;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="EURUSD")  {   Magic=MAGIC+8;if(Max_Spread==0)Max_Spread=4;StopLoss= 40;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=120;Use_WPR=true;WPR_Period=8;WPR_Entry=93;WPR_Exit=42; Use_Fractals=True;MidFractalDist=8;OppositFractalDist=15;Use_MA1=true;MA_Period1=75;Use_MA2=true;MA_Period2=20;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="CADJPY") Magic=MAGIC+9;  if (StringSubstr(Symbol(),0,6)=="GBPJPY") Magic=MAGIC+10;   if (StringSubstr(Symbol(),0,6)=="CADCHF") {  Magic=MAGIC+11;if(Max_Spread==0)Max_Spread=6;StopLoss= 50;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=130;Use_WPR=true;WPR_Period=10;WPR_Entry=91;WPR_Exit=30; Use_Fractals=true;MidFractalDist=7;OppositFractalDist=13;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}  if (StringSubstr(Symbol(),0,6)=="GBPUSD") {   Magic=MAGIC+12;if(Max_Spread==0)Max_Spread=4;StopLoss= 40;Open_Hour= 20;Close_Hour=23;Use_CCI= true;CCI_Period=10;CCI_Entry=100;CCI_Exit=125;Use_WPR=true;WPR_Period=12;WPR_Entry=90;WPR_Exit=38; Use_Fractals=true;MidFractalDist=6;OppositFractalDist=11;Use_MA1=False;MA_Period1=25;Use_MA2_Slope=False;MA_Slope= 5;}   if (StringSubstr(Symbol(),0,6)=="USDJPY") Magic=MAGIC+13;  if (StringSubstr(Symbol(),0,6)=="AUDUSD") Magic=MAGIC+14;   if (StringSubstr(Symbol(),0,6)=="AUDCAD") Magic=MAGIC+15;   if (StringSubstr(Symbol(),0,6)=="AUDJPY") Magic=MAGIC+16;  if (StringSubstr(Symbol(),0,6)=="EURAUD") Magic=MAGIC+17;  if (StringSubstr(Symbol(),0,6)=="GBPAUD") Magic=MAGIC+18;  if (StringSubstr(Symbol(),0,6)=="EURNZD") Magic=MAGIC+19;   if (StringSubstr(Symbol(),0,6)=="GBPNZD") Magic=MAGIC+20;  if (StringSubstr(Symbol(),0,6)=="EURNOK") Magic=MAGIC+21;   if (StringSubstr(Symbol(),0,6)=="EURSEK") Magic=MAGIC+22;  if (StringSubstr(Symbol(),0,6)=="NZDUSD") Magic=MAGIC+23;   if (StringSubstr(Symbol(),0,6)=="NZDJPY") Magic=MAGIC+24;  if (StringSubstr(Symbol(),0,6)=="EURJPY") Magic=MAGIC+25;   if (StringSubstr(Symbol(),0,6)=="AUDCHF") Magic=MAGIC+26;   if (StringSubstr(Symbol(),0,6)=="NZDCHF") Magic=MAGIC+27;  if (StringSubstr(Symbol(),0,6)=="AUDNZD") Magic=MAGIC+28;   if (StringSubstr(Symbol(),0,6)=="CHFJPY") Magic=MAGIC+29;   if (StringSubstr(Symbol(),0,6)=="NZDCAD") Magic=MAGIC+30;   if (StringSubstr(Symbol(),0,6)=="USDDKK") Magic=MAGIC+31;     if (StringSubstr(Symbol(),0,6)=="USDNOK") Magic=MAGIC+32;   if (StringSubstr(Symbol(),0,6)=="USDSEK") Magic=MAGIC+33;     if (UseDST && DST()==1)  GMT_Offset=GMT_Offset+1;   Open_Hour=Open_Hour+GMT_Offset;   Close_Hour=Close_Hour+GMT_Offset;   Friday_Hour=Friday_Hour+GMT_Offset;   if (Open_Hour>=24)Open_Hour=Open_Hour-24;   if (Close_Hour>=24)Close_Hour=Close_Hour-24;         return (0);}int deinit() {   return (0);}// EA Start int start() {//////////////////////////////////// Trade Timing ///////////////////////////////////////////////        if (Use_Auto_Time==True) {Alert("Please set Use_Auto_Time=False.  Use GMT Offset below in the EA inputs"); Sleep(60000);return(0);}         Trade = true;   if (!TradeOnFriday && TimeDayOfWeek(TimeCurrent()-GMT_Offset*3600) == 5) Trade = FALSE;   if (TradeOnFriday && DayOfWeek() == 5 && TimeHour(TimeCurrent()) > (Friday_Hour)) Trade = FALSE;               if (Open_Hour < Close_Hour && (TimeHour(TimeCurrent())<Open_Hour || TimeHour(TimeCurrent())>=Close_Hour)) Trade = FALSE;   if (Open_Hour > Close_Hour && TimeHour(TimeCurrent())<Open_Hour && TimeHour(TimeCurrent())>= Close_Hour) Trade = FALSE;    if (Month()==12 && Day()>22)  Trade = FALSE;    if (Month()==1 && Day()<5)  Trade = FALSE;       if (Trade && MyRealOrdersTotal(Magic)==0 && !Allow_Second_Open_Trade && Spread()<Max_Spread*PointValue() && (Ask-Bid)<Max_Spread*PointValue()) Session="Trade Session Open .. Waiting for trades";   if (Trade && MyRealOrdersTotal(Magic)==0 && Spread()<Max_Spread*PointValue() && (Ask-Bid)<Max_Spread*PointValue()) Session="Trade Session Open .. Waiting for trades";      if (Trade && MyRealOrdersTotal(Magic)==0 && (Spread()>Max_Spread*PointValue()|| (Ask-Bid)>Max_Spread*PointValue())) Session="Trade Session Open .. Spread is High .. Trading Halted";   if (Trade && MyRealOrdersTotal(Magic)>0 && (Spread()>Max_Spread*PointValue()|| (Ask-Bid)>Max_Spread*PointValue())) Session="Trade Session Open..Waiting to exit trades..Trading Halted";    if (Trade && MyRealOrdersTotal(Magic)>0 && (Spread()<Max_Spread*PointValue()|| (Ask-Bid)<Max_Spread*PointValue())) Session="Trade Session Open..Waiting to exit trades..";    if (!Trade && MyRealOrdersTotal(Magic)==0) Session="Trade Session Closed";   if (!Trade && MyRealOrdersTotal(Magic)>0) Session="Trade Session Closed .. Waiting to exit trades";    ////////////////////////////  Add Disply /////////////////////////////   if (!IsTesting() && !IsOptimization())    {      Display();       if (Show_Fractal_Levels) iCustom(NULL,0,"Fractal_Levels",MidFractalDist,OppositFractalDist,0,0);   }   ////////////////////   Calculate Average Spread  /////////////////////     if (!IsTesting() && !IsOptimization()) Spread(Ask-Bid);    /////////////////////////////  Indicator(s) /////////////////////////       if (Trade || OrdersTotal()>0)  {     if (Use_CCI) CCI_1 = iCCI(NULL, 0, CCI_Period, PRICE_CLOSE, 0);         if (Use_WPR) WPR_1 = iWPR(NULL, 0, WPR_Period, 0);     if (Use_MA1) MA_1_1  = iMA(NULL,0,MA_Period1,0,MA_Mode1,PRICE_CLOSE,1);     if (Use_MA1) MA_1_2  = iMA(NULL,0,MA_Period1,0,MA_Mode1,PRICE_CLOSE,2);                if (Use_MA2 || Use_MA2_Slope) MA_2_1  = iMA(NULL,0,MA_Period2,0,MA_Mode2,PRICE_CLOSE,1);     if (Use_MA2 || Use_MA2_Slope) MA_2_2  = iMA(NULL,0,MA_Period2,0,MA_Mode2,PRICE_CLOSE,2);     if (Use_MA_Dist) MA_3_1  = iMA(NULL,0,MA_Dist_Period,0,MA_Dist_Mode,PRICE_CLOSE,1);     if (Use_BB) BB_L_1  = iBands(NULL,0,BB_Period,BB_Dev,0,PRICE_CLOSE,MODE_LOWER,0);     if (Use_BB) BB_L_2  = iBands(NULL,0,BB_Period,BB_Dev,0,PRICE_CLOSE,MODE_LOWER,1);      if (Use_BB) BB_L_3  = iBands(NULL,0,BB_Period,BB_Dev,0,PRICE_CLOSE,MODE_LOWER,2);               if (Use_BB) BB_U_1  = iBands(NULL,0,BB_Period,BB_Dev,0,PRICE_CLOSE,MODE_UPPER,0);               if (Use_BB) BB_U_2  = iBands(NULL,0,BB_Period,BB_Dev,0,PRICE_CLOSE,MODE_UPPER,1);     if (Use_BB) BB_U_3  = iBands(NULL,0,BB_Period,BB_Dev,0,PRICE_CLOSE,MODE_UPPER,2);                if (Use_RSI) RSI_1  = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, 0);              if (Use_Fractals)     {            for(int a=1;a<Bars;a++){         if(iFractals(NULL, 0, MODE_UPPER,a)!=0){            LastUpFractal=iFractals(NULL, 0, MODE_UPPER,a);            break;            }         }        for(int s=1;s<Bars;s++){         if(iFractals(NULL, 0, MODE_LOWER,s)!=0){            LastDownFractal=iFractals(NULL, 0, MODE_LOWER,s);            break;            }         }        midFractal=(LastUpFractal+LastDownFractal)/2;      }  }        //////////////////////////////////// Trade Signals ///////////////////////////////////////////////         CCI_Buy_Sig=0;   CCI_Sell_Sig=0;     WPR_Buy_Sig=0;   WPR_Sell_Sig=0;   MA_Buy_Sig1=0;   MA_Sell_Sig1=0;   MA_Buy_Sig2=0;   MA_Sell_Sig2=0;      MA_Slope_Buy_Sig=0;   MA_Slope_Sell_Sig=0;      Fractals_Buy_Sig=0;   Fractals_Sell_Sig=0;   BB_Buy_Sig=0;   BB_Sell_Sig=0;   Trade_Pause_Buy_Sig=1;   Trade_Pause_Sell_Sig=1;    MA_Dist_Buy_Sig=0;   MA_Dist_Sell_Sig=0;           RSI_Buy_Sig=0;   RSI_Sell_Sig=0;                if (!Use_CCI) {CCI_Buy_Sig=1;CCI_Sell_Sig=1;}         if (!Use_WPR) {WPR_Buy_Sig=1;WPR_Sell_Sig=1;}         if (!Use_MA1) {MA_Buy_Sig1=1; MA_Sell_Sig1=1;}       if (!Use_MA2) {MA_Buy_Sig2=1; MA_Sell_Sig2=1;}          if (!Use_MA2_Slope) {MA_Slope_Buy_Sig=1; MA_Slope_Sell_Sig=1;}          if (!Use_Fractals) {Fractals_Buy_Sig=1; Fractals_Sell_Sig=1;}      if (!Use_BB) {BB_Buy_Sig=1; BB_Sell_Sig=1;}      if (!Use_MA_Dist) {MA_Dist_Buy_Sig=1; MA_Dist_Sell_Sig=1;}       if (!Use_RSI) {RSI_Buy_Sig=1; RSI_Sell_Sig=1;}          if (Use_CCI && CCI_1<-CCI_Entry) CCI_Buy_Sig=1;   if (Use_CCI && CCI_1>CCI_Entry) CCI_Sell_Sig=1;        if (Use_WPR && WPR_1<-WPR_Entry) WPR_Buy_Sig=1;     if (Use_WPR && WPR_1>-(100-WPR_Entry)) WPR_Sell_Sig=1;       if (Use_MA1 && MA_1_1>MA_1_2)  MA_Buy_Sig1=1;      if (Use_MA1 && MA_1_1<MA_1_2)  MA_Sell_Sig1=1;   if (Use_MA2 && MA_2_1>MA_2_2)  MA_Buy_Sig2=1;      if (Use_MA2 && MA_2_1<MA_2_2)  MA_Sell_Sig2=1;       if (Use_MA2_Slope && (MA_2_1-MA_2_2)>=MA_Slope*PointValue())  MA_Slope_Buy_Sig=1;      if (Use_MA2_Slope && (MA_2_2-MA_2_1)>=MA_Slope*PointValue())  MA_Slope_Sell_Sig=1;             if (Use_Fractals && Ask<(midFractal-MidFractalDist*PointValue()) && Ask<(LastUpFractal-OppositFractalDist*PointValue())) Fractals_Buy_Sig=1;       if (Use_Fractals && Bid>(midFractal+MidFractalDist*PointValue()) && Bid>(LastDownFractal+OppositFractalDist*PointValue())) Fractals_Sell_Sig=1;   if (Use_BB && !Use_BB_Direction && Ask<BB_L_1 && (BB_U_1-BB_L_1)>BB_Range*PointValue() && BB_L_1-Ask>=BB_Penetration*PointValue()) BB_Buy_Sig=1;   if (Use_BB && !Use_BB_Direction && Bid>BB_U_1 && (BB_U_1-BB_L_1)>BB_Range*PointValue() && Bid-BB_U_1>=BB_Penetration*PointValue()) BB_Sell_Sig=1;         if (Use_BB && Use_BB_Direction && Ask<BB_L_1 && (BB_U_1-BB_L_1)>BB_Range*PointValue() && BB_L_1-Ask>=BB_Penetration*PointValue() && BB_L_1>BB_L_2) BB_Buy_Sig=1;   if (Use_BB && Use_BB_Direction && Bid>BB_U_1 && (BB_U_1-BB_L_1)>BB_Range*PointValue() && Bid-BB_U_1>=BB_Penetration*PointValue() && BB_U_1<BB_U_2) BB_Sell_Sig=1;      if (Trade_Pause_On_Loss && Pause_Type==1 && LastClosedType(Magic)==0 && LastClosedProfit(Magic)<0 && (Time[0]-LastClosedTime(Magic))<Trade_Pause_Minutes*60) Trade_Pause_Buy_Sig=0;    if (Trade_Pause_On_Loss && Pause_Type==1 && LastClosedType(Magic)==1 && LastClosedProfit(Magic)<0 && (Time[0]-LastClosedTime(Magic))<Trade_Pause_Minutes*60) Trade_Pause_Sell_Sig=0;    if (Trade_Pause_On_Loss && Pause_Type==2 && LastClosedType(Magic)==0 && LastClosedPrice(Magic)-Ask<Trade_Pause_Pips*PointValue()) Trade_Pause_Buy_Sig=0;    if (Trade_Pause_On_Loss && Pause_Type==2 && LastClosedType(Magic)==1 && Bid-LastClosedPrice(Magic)<Trade_Pause_Pips*PointValue()) Trade_Pause_Sell_Sig=0;   if (Use_MA_Dist && Bid-MA_3_1>=Dist_to_MA*PointValue())  MA_Dist_Sell_Sig=1;          if (Use_RSI && RSI_1>=RSI_Entry)  RSI_Buy_Sig=1;      if (Use_RSI && RSI_1<=(100-RSI_Entry))  RSI_Sell_Sig=1;                if (!Use_CCI  && !Use_WPR && !Use_Fractals) {Print("You must use at least one signal (CCI, WPR, or Fractals"); return(0);}    //////////////////////////////////// Exit Signals ///////////////////////////////////////////////         CCI_Exit_Buy_Sig=0;   CCI_Exit_Sell_Sig=0;      WPR_Exit_Buy_Sig=0;   WPR_Exit_Sell_Sig=0;                   if (Use_CCI && CCI_1>CCI_Exit) CCI_Exit_Buy_Sig=1;   if (Use_CCI && CCI_1<-CCI_Exit) CCI_Exit_Sell_Sig=1;         if (Use_WPR && WPR_1>-WPR_Exit) WPR_Exit_Buy_Sig=1;     if (Use_WPR && WPR_1<(-100+WPR_Exit)) WPR_Exit_Sell_Sig=1;                               //////////////////////////////////// Close Trades ///////////////////////////////////////////////        if (OrdersTotal()>0)  {    for(int k=0; k<OrdersTotal(); k++)         {             bool cg = OrderSelect(k, SELECT_BY_POS, MODE_TRADES);             if(OrderType()==OP_BUY &&   OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && (CCI_Exit_Buy_Sig==1 || WPR_Exit_Buy_Sig==1)            && Spread()<Max_Spread*PointValue() && (Ask-Bid)<Max_Spread*PointValue())       {                          //OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position          CloseAll(Magic);                                         }               if(OrderType()==OP_SELL &&   OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && (CCI_Exit_Sell_Sig==1 || WPR_Exit_Sell_Sig==1)            && Spread()<Max_Spread*PointValue() && (Ask-Bid)<Max_Spread*PointValue())       {                           //OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position          CloseAll(Magic);                                                 }    }      for(k=0; k<OrdersTotal(); k++)         {             cg = OrderSelect(k, SELECT_BY_POS, MODE_TRADES);             if(OrderType()==OP_BUY &&   OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && ((Ask-OrderOpenPrice())>=TakeProfit*PointValue()  || (OrderOpenPrice()-Ask)>=StopLoss*PointValue()))       {                          cg = OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position          //CloseAll(Magic);                                         }               if(OrderType()==OP_SELL &&   OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && ((OrderOpenPrice()-Bid)>=TakeProfit*PointValue()  || (Bid-OrderOpenPrice())>=StopLoss*PointValue()))       {                           cg = OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position          //CloseAll(Magic);                                                 }    }  }      //////////////////////////////////// Open Trade ///////////////////////////////////////////////              if (New_Trade && Spread()<Max_Spread*PointValue() && (Ask-Bid)<Max_Spread*PointValue() && MyRealOrdersTotal(Magic)==0  && Trade && Time[0]!=Last_Time        && CCI_Buy_Sig==1 && WPR_Buy_Sig==1 && MA_Buy_Sig1==1 && MA_Buy_Sig2==1&& MA_Slope_Buy_Sig==1 && Fractals_Buy_Sig==1 && BB_Buy_Sig==1 && Trade_Pause_Buy_Sig==1        && MA_Dist_Buy_Sig==1 && RSI_Buy_Sig==1)    {        Lot=CalculateLots(Risk);        int Ticket_1 = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, 0, 0, EA_Comment, Magic, 0, Lime);        if (Ticket_1>0)         {           Last_Time=iTime(NULL,0,0);           if (!Hide_SL_TP) ModifyAll();         }   }      if (New_Trade && Spread()<Max_Spread*PointValue() && (Ask-Bid)<Max_Spread*PointValue() && MyRealOrdersTotal(Magic)==0  && Trade && Time[0]!=Last_Time        && CCI_Sell_Sig==1 && WPR_Sell_Sig==1 && MA_Sell_Sig1==1 && MA_Sell_Sig2==1&& MA_Slope_Sell_Sig && Fractals_Sell_Sig==1 && BB_Sell_Sig==1 && Trade_Pause_Sell_Sig==1        && MA_Dist_Sell_Sig==1 && RSI_Sell_Sig==1)    {        Lot=CalculateLots(Risk);        int Ticket_2 = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, EA_Comment, Magic, 0, Red);        if (Ticket_2>0)         {           Last_Time=iTime(NULL,0,0);           if (!Hide_SL_TP) ModifyAll();         }   }               //////////////////////////////////// Second Trade ///////////////////////////////////////////////              if (MyRealOrdersTotal(Magic)==1  && Allow_Second_Open_Trade && Time[0]!=Last_Time && Trade_Pause_Buy_Sig==1 && Trade_Pause_Buy_Sig==1 && LastOpenType()==0 && Ask<=(LastBuyPrice()-Distance*PointValue()))     {        Lot=CalculateLots(Risk*Lot_Factor);        Ticket_1 = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, 0, 0, EA_Comment, Magic, 0, Lime);        if (Ticket_1>0)         {           Last_Time=iTime(NULL,0,0);           if (!Hide_SL_TP) ModifyAll();         }   }      if (MyRealOrdersTotal(Magic)==1  && Allow_Second_Open_Trade && Time[0]!=Last_Time && Trade_Pause_Sell_Sig==1 && Trade_Pause_Sell_Sig==1 && LastOpenType()==1 && Bid>=(LastSellPrice()+Distance*PointValue()))   {        Lot=CalculateLots(Risk*Lot_Factor);        Ticket_2 = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, EA_Comment, Magic, 0, Red);        if (Ticket_2>0)         {           Last_Time=iTime(NULL,0,0);           if (!Hide_SL_TP) ModifyAll();         }   }        if   (!Hide_SL_TP && MyRealOrdersTotal(Magic)>0) ModifyAll();    // Double check to make sure all trades have TP and SL                return (0);}// EA End /////////////////////////////////////////////////////////////////////////////////////////////////////////////int MyRealOrdersTotal(int){  int c=0;  int total  = OrdersTotal();   for (int cnt = 0 ; cnt < total ; cnt++)  {    bool cg = OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);    if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()<=OP_SELL)    {      c++;    }  }  return(c);}/////////////////////////////////////////////////////////////////////////////////////////////////////////////double LastSellPrice() {   double l_ord_open_price_8=0;   int l_ticket_24;   double ld_unused_0 = 0;   int l_ticket_20 = 0;   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {      bool cg = OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) {         l_ticket_24 = OrderTicket();         if (l_ticket_24 > l_ticket_20) {            l_ord_open_price_8 = OrderOpenPrice();            ld_unused_0 = l_ord_open_price_8;            l_ticket_20 = l_ticket_24;         }      }   }   return (l_ord_open_price_8);}//////////////////////////////////////////////////////////////////////////////////////////////////////////double LastBuyPrice() {   double l_ord_open_price_8=0;   int l_ticket_24=0;   double ld_unused_0 = 0;   int l_ticket_20 = 0;   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {      bool cg = OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY ) {         l_ticket_24 = OrderTicket();         if (l_ticket_24 > l_ticket_20) {            l_ord_open_price_8 = OrderOpenPrice();            ld_unused_0 = l_ord_open_price_8;            l_ticket_20 = l_ticket_24;         }      }   }   return (l_ord_open_price_8);}///////////////////////////////////////////////////////////////////////////////////////////////////////////////int LastOpenType() {   int l_ord_type=-1;   int l_ticket_24=0;   double ld_unused_0 = 0;   int l_ticket_20 = 0;   for (int l_pos_16 = OrdersTotal() - 1; l_pos_16 >= 0; l_pos_16--) {      bool cg = OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() <= OP_SELL) {         l_ticket_24 = OrderTicket();         if (l_ticket_24 > l_ticket_20) {            l_ord_type = OrderType();            ld_unused_0 = l_ord_type;            l_ticket_20 = l_ticket_24;         }      }   }   return (l_ord_type);}////////////////////////////////////////////////////////////////////////////////////////////////////////int CloseAll(int) {    for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--)    {       bool cg = OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);       if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderCloseTime()==0)       {             if(OrderType()==OP_BUY)  cg = OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);             if(OrderType()==OP_SELL) cg = OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);       }    }   return(0); }/////////////////////////////////////////////////////////////////////////////////////////////////////////////double CalculateLots(double RISK) {   int Lot_Dec;   double l_minlot_0 = MarketInfo(Symbol(), MODE_MINLOT);   double l_maxlot_8 = MarketInfo(Symbol(), MODE_MAXLOT);   double ld_ret_16 = 0.0;   if (MarketInfo(Symbol(), MODE_MINLOT) < 1.0) Lot_Dec = 1;   if (MarketInfo(Symbol(), MODE_MINLOT) < 0.1) Lot_Dec = 2;   if (MarketInfo(Symbol(), MODE_MINLOT) < 0.01) Lot_Dec = 3;   if (MarketInfo(Symbol(), MODE_MINLOT) < 0.001) Lot_Dec = 4;   if (MarketInfo(Symbol(), MODE_MINLOT) < 0.0001) Lot_Dec = 5;   if (lot > 0.0) {ld_ret_16 = lot;return (ld_ret_16);}   if (ld_ret_16 == 0.0)    {      ld_ret_16=NormalizeDouble(AccountBalance() / 100000.0 * RISK, Lot_Dec);      if (ld_ret_16 < l_minlot_0) ld_ret_16 = l_minlot_0;      if (ld_ret_16 > l_maxlot_8) ld_ret_16 = l_maxlot_8;   }         return (ld_ret_16);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////double PointValue() {   if (MarketInfo(Symbol(), MODE_DIGITS) == 5.0 || MarketInfo(Symbol(), MODE_DIGITS) == 3.0) return (10.0 * Point);   return (Point);}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void ModifyAll() {    for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--)    {       bool cg = OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);       if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic )       {          if (OrderStopLoss()==0 || OrderTakeProfit()==0)                     {               if((OrderType()==OP_BUY))                cg = OrderModify(OrderTicket(),OrderOpenPrice(),ND(OrderOpenPrice()-PointValue()*StopLoss), ND(OrderOpenPrice()+TakeProfit*PointValue()),0,Green);                if((OrderType()==OP_SELL))                cg = OrderModify(OrderTicket(),OrderOpenPrice(),ND(OrderOpenPrice()+PointValue()*StopLoss), ND(OrderOpenPrice()-TakeProfit*PointValue()),0,Red);            }         }    } }///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////double Spread(double AddValue=0){   double LastValue;   static double ArrayTotal=0;      if (AddValue == 0 && SpreadSampleSize <= 0) return(Ask-Bid);   if (AddValue == 0 && ArrayTotal == 0) return(Ask-Bid);   if (AddValue == 0 ) return(ArrayTotal/ArraySize(Spread));      ArrayTotal = ArrayTotal + AddValue;   ArraySetAsSeries(Spread, true);    if (ArraySize(Spread) == SpreadSampleSize)      {      LastValue = Spread[0];      ArrayTotal = ArrayTotal - LastValue;      ArraySetAsSeries(Spread, false);      ArrayResize(Spread, ArraySize(Spread)-1 );      ArraySetAsSeries(Spread, true);      ArrayResize(Spread, ArraySize(Spread)+1 );       }   else ArrayResize(Spread, ArraySize(Spread)+1 ); //   Print("ArraySize = ",ArraySize(lSpread)," AddedNo. = ",AddValue);   ArraySetAsSeries(Spread, false);   Spread[0] = AddValue;   return(NormalizeDouble(ArrayTotal/ArraySize(Spread), Digits));}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////double ND(double Price){  double ND_Price=0;  ND_Price = NormalizeDouble(Price,Digits);  return(ND_Price);  } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void Display(){      Comment(             "\n*=====================*",               "\n    "+EA_Name,            "\n*=====================*",            "\n   "+Session,            "\n*=====================*",            "\n    Broker Time          =  ", TimeToStr(TimeCurrent(), TIME_MINUTES),            "\n    Start Hour             =  "+DoubleToStr(Open_Hour,2),                      "\n    End Hour              =  "+DoubleToStr(Close_Hour,2),             "\n",                                    "\n    Magic Number       = "+Magic,            "\n    Maximum Spread   = "+DoubleToStr(Max_Spread,1),            "\n    Average Spread    = "+DoubleToStr(Spread()/PointValue(),1),            "\n    Lot size                 =  " +DoubleToStr(CalculateLots(Risk),2),            "\n    Stop Loss              = "+DoubleToStr(StopLoss,0),             "\n*=====================*",                                                                        "\n    Total Profit (Loss)     = "+DoubleToStr(TotalProfit()+Profit(),2),                                                             "\n*=====================*",            "\n    B A L A N C E        =  " + DoubleToStr(AccountBalance(),2),            "\n    E Q U I T Y           =  " + DoubleToStr(AccountEquity(),2),            "\n    Leverage                =  " + DoubleToStr(AccountLeverage(),2),                        "\n*=====================*"                         );             } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////double TotalProfit(){  double profit = 0;   int cnt = OrdersHistoryTotal();  for (int i=0; i < cnt; i++) {    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;     if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) profit += OrderProfit();  }   return (profit);}    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////double Profit(){  int c=0;  int total  = OrdersTotal();  double Profit=0;   for (int cnt = 0 ; cnt < total ; cnt++)  {    bool cg = OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);    if (OrderMagicNumber() == Magic && OrderType()<=OP_SELL)    {      Profit=Profit+OrderProfit();    }      }     return(Profit);}///////////////////////////////////////////////////////////////////////////////////////////////////////////////int LastClosedType(int) {   int xyz=OrdersHistoryTotal() - 2;   if (!IsTesting() && !IsOptimization()) xyz=0;   int l_ord_type=-1;   int l_ticket_24=0;   double ld_unused_0 = 0;   int l_ticket_20 = 0;   for (int l_pos_16 = OrdersHistoryTotal() - 1; l_pos_16 >= xyz; l_pos_16--) {      bool cg = OrderSelect(l_pos_16, SELECT_BY_POS, MODE_HISTORY);      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() <= OP_SELL) {         l_ticket_24 = OrderTicket();         if (l_ticket_24 > l_ticket_20) {            l_ord_type = OrderType();            ld_unused_0 = l_ord_type;            l_ticket_20 = l_ticket_24;         }      }   }   return (l_ord_type);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////double LastClosedProfit(int) {   int xyz=OrdersHistoryTotal() - 2;   if (!IsTesting() && !IsOptimization()) xyz=0;   double l_ord_profit=0;   int l_ticket_24=0;   double ld_unused_0 = 0;   int l_ticket_20 = 0;   for (int l_pos_16 = OrdersHistoryTotal() - 1; l_pos_16 >= xyz; l_pos_16--) {      bool cg = OrderSelect(l_pos_16, SELECT_BY_POS, MODE_HISTORY);      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() <= OP_SELL) {         l_ticket_24 = OrderTicket();         if (l_ticket_24 > l_ticket_20) {            l_ord_profit = OrderProfit();            ld_unused_0 = l_ord_profit;            l_ticket_20 = l_ticket_24;         }      }   }   return (l_ord_profit);} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////double LastClosedPrice(int) {   int xyz=OrdersHistoryTotal() - 2;   if (!IsTesting() && !IsOptimization()) xyz=0;   double l_ord_price=0;   int l_ticket_24=0;   double ld_unused_0 = 0;   int l_ticket_20 = 0;   for (int l_pos_16 = OrdersHistoryTotal() - 1; l_pos_16 >= xyz; l_pos_16--) {      bool cg = OrderSelect(l_pos_16, SELECT_BY_POS, MODE_HISTORY);      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() <= OP_SELL) {         l_ticket_24 = OrderTicket();         if (l_ticket_24 > l_ticket_20) {            l_ord_price = OrderClosePrice();            ld_unused_0 = l_ord_price;            l_ticket_20 = l_ticket_24;         }      }   }   return (l_ord_price);}   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////datetime LastClosedTime(int) {   int xyz=OrdersHistoryTotal() - 2;   if (!IsTesting() && !IsOptimization()) xyz=0;   datetime l_ord_time=0;   int l_ticket_24=0;   datetime ld_unused_0 = 0;   int l_ticket_20 = 0;   for (int l_pos_16 = OrdersHistoryTotal() - 1; l_pos_16 >= xyz; l_pos_16--) {      bool cg = OrderSelect(l_pos_16, SELECT_BY_POS, MODE_HISTORY);      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() <= OP_SELL) {         l_ticket_24 = OrderTicket();         if (l_ticket_24 > l_ticket_20) {            l_ord_time = OrderCloseTime();            ld_unused_0 = l_ord_time;            l_ticket_20 = l_ticket_24;         }      }   }   return (l_ord_time);}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////int DST() {   int month_0 = Month();   int day_4 = Day();   int day_of_week_8 = DayOfWeek();   if (day_of_week_8 == 0) day_of_week_8 = 7;   if (month_0 > 3 && month_0 < 10) return (0);   if (month_0 > 10 || month_0 < 3) return (1);   if (month_0 == 3 && 31 - day_4 + day_of_week_8 >= 7) return (1);   if (month_0 == 10 && 31 - day_4 + day_of_week_8 < 7) return (1);   return (0);} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Major part of this code was done by maximo @ worldwide-invest.org int Time_Offset(string site,int location){   string msg1 = "";   string msg2 = "";   int HOUR=100;   int Time_Diff;   int HttpOpen    = InternetOpenA("HTTP_Test", 0, "", "", 0);    int HttpConnect = InternetConnectA(HttpOpen, "", 80, "", "", 3, 0, 1);    int HttpRequest = InternetOpenUrlA(HttpOpen, site, NULL, 0, 0, 0);   Comment ("Looking Time Offset");      int read[1];   string Buffer = "          "; // 10 characters are read at a time    string page = "";             // join each 10 onto page string   int Nchars = 16000; // how many bytes to read to find GMT in HTML source   while (true)   {      InternetReadFile(HttpRequest, Buffer, StringLen(Buffer), read);      if (read[0] > 0) page = page + StringSubstr(Buffer, 0, read[0]);      else break;      Nchars = Nchars - StringLen(Buffer);      if (Nchars <= 0) break;     }    int index=StringFind(page, "Current Date and Time in", 0);     if (index > 0)    {      msg1 = StringSubstr(page,index+location,2);        //msg2 = StringSubstr(page,location+3,2);       msg2 = StringSubstr(page,index+location+6,4);              HOUR=StrToInteger(msg1);      if (HOUR>=0 && HOUR<=11)      {         if (msg2=="A.M.") HOUR=HOUR;        if (msg2=="P.M.") HOUR=12+HOUR;      }        }       if (HttpRequest > 0) InternetCloseHandle(HttpRequest);    if (HttpConnect > 0) InternetCloseHandle(HttpConnect);    if (HttpOpen > 0) InternetCloseHandle(HttpOpen);      if (HOUR==100) return (HOUR);     if (Hour()>=HOUR) Time_Diff=Hour()-HOUR;   if (Hour()<HOUR) Time_Diff=24-HOUR+Hour();       return (Time_Diff);   }    
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
海龟交易系统 MT4 源码
用代码在MT4中画等距通道线
(8)外汇MT4编程:MACD背离指标
EA(原码)学习用
【MQL4】MQL4常用自定义函数
//[]i 44 分钟时框图表显示小时K线
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服