From 5b7abbb679722a28350e714bdc624586bac87e44 Mon Sep 17 00:00:00 2001 From: GODFREY KIGGUNDU <140074856+Kiggundug1@users.noreply.github.com> Date: Mon, 22 Jul 2024 04:41:32 +0300 Subject: [PATCH] Add files via upload --- !FT M-MATH v3.mq4 | 616 ++++++ #Pallada_Assistant.mq4 | 186 ++ #Pallada_Bars.mq4 | 120 ++ #Pallada_ExitSignal.mq4 | 204 ++ #Pallada_MainSignal_AllAverages.mq4 | 220 ++ #Pallada_Volatility.mq4 | 105 + 00adx_close0test.mq4 | 132 ++ 10.7 3.1 SSG 100.50.6xxmq4.ex4 | Bin 0 -> 9638 bytes ACD_PV.mq4 | 193 ++ ADX FiboMA.mq4 | 203 ++ ADX Filter sBarM mtf.mq4 | 176 ++ ADX_Crossing_v_2_0.mq4 | 86 + ADXbars.mq4 | 83 + Advanced_ADX.mq4 | 66 + AlphaTrendSpotter_free.mq4 | Bin 0 -> 8688 bytes BE-clock.mq4 | 66 + Bears.mq4 | 67 + BetterVolume 1.4.mq4 | Bin 0 -> 17992 bytes Bulls.mq4 | 67 + CCI.mq4 | 125 ++ CHT_Value_chart_v2.5.3.mq4 | 454 ++++ Channels.mq4 | Bin 0 -> 42400 bytes CurrencyStrengthAlerts (2).mq4 | Bin 0 -> 28688 bytes Custom Moving Averages.mq4 | 190 ++ DDFX 9 Xtra Sig v3.mq4 | 136 ++ DarvasBoxes nmc.mq4 | 515 +++++ Equity-Free-Margin-Manager-EA.mq4 | 224 ++ FTLM-STLMxAMm.mq4 | 582 ++++++ ForexComboSystem_v5.0(4in1)EURUSD.mq4 | 1529 ++++++++++++++ ForexComboSystem_v5.0(4in1)GBPUSD.mq4 | 1551 ++++++++++++++ GPSForexRobotEURGBP_edu.mq4 | 1210 +++++++++++ GPSForexRobotEURUSD_edu.mq4 | 1200 +++++++++++ GPSForexRobotUSDCHF_edu.mq4 | 1210 +++++++++++ Geo crossover_signal.mq4 | Bin 0 -> 66172 bytes Gmacd2.mq4 | 328 +++ HMA Trend Arrows TT.mq4 | Bin 0 -> 13994 bytes HalfTrend-1.02.mq4 | 219 ++ HamaSystem.mq4 | 93 + MACD_Histogram.mq4 | 349 ++++ MetaCOT2_CIT_Absolute_Changes.mq4 | Bin 0 -> 15838 bytes MetaCOT2_CIT_Absolute_Position.mq4 | Bin 0 -> 14304 bytes MetaCOT2_CIT_Index.mq4 | Bin 0 -> 14926 bytes MetaCOT2_CIT_Movement_Index.mq4 | Bin 0 -> 18066 bytes MetaCOT2_CIT_Netto_Changes.mq4 | Bin 0 -> 15806 bytes MetaCOT2_CIT_Netto_Position.mq4 | Bin 0 -> 14274 bytes MetaCOT2_CIT_Williams_Commercial_Index.mq4 | Bin 0 -> 14928 bytes MetaCOT2_COT_Absolute_Changes.mq4 | Bin 0 -> 16108 bytes MetaCOT2_COT_Absolute_Position.mq4 | Bin 0 -> 14510 bytes MetaCOT2_COT_Index.mq4 | Bin 0 -> 15150 bytes MetaCOT2_COT_Movement_Index.mq4 | Bin 0 -> 18318 bytes MetaCOT2_COT_Netto_Changes.mq4 | Bin 0 -> 16174 bytes MetaCOT2_COT_Netto_Position.mq4 | Bin 0 -> 14432 bytes MetaCOT2_COT_Williams_Commercial_Index.mq4 | Bin 0 -> 15144 bytes MetaCOT2_D-COT_Absolute_Changes.mq4 | Bin 0 -> 15952 bytes MetaCOT2_D-COT_Absolute_Position.mq4 | Bin 0 -> 14610 bytes MetaCOT2_D-COT_Index.mq4 | Bin 0 -> 15224 bytes MetaCOT2_D-COT_Movement_Index.mq4 | Bin 0 -> 18312 bytes MetaCOT2_D-COT_Netto_Changes.mq4 | Bin 0 -> 16046 bytes MetaCOT2_D-COT_Netto_Position.mq4 | Bin 0 -> 14442 bytes MetaCOT2_D-COT_Williams_Commercial_Index.mq4 | Bin 0 -> 15146 bytes MetaCOT2_L-COT_Largest_Changes.mq4 | Bin 0 -> 15428 bytes MetaCOT2_L-COT_Largest_Position.mq4 | Bin 0 -> 13842 bytes MetaCOT2_L-COT_Movement_Index.mq4 | Bin 0 -> 16980 bytes MetaCOT2_L-COT_Netto_Changes.mq4 | Bin 0 -> 15448 bytes MetaCOT2_L-COT_Netto_Largest_Position.mq4 | Bin 0 -> 13832 bytes MetaCOT2_L-COT_Williams_Commercial_Index.mq4 | Bin 0 -> 14544 bytes MetaCOT2_SaveIndicatorValuesInFile.mq4 | Bin 0 -> 12868 bytes MetaCOT2_TFF_Absolute_Changes.mq4 | Bin 0 -> 16190 bytes MetaCOT2_TFF_Absolute_Position.mq4 | Bin 0 -> 14598 bytes MetaCOT2_TFF_Index.mq4 | Bin 0 -> 15180 bytes MetaCOT2_TFF_Movement_Index.mq4 | Bin 0 -> 18268 bytes MetaCOT2_TFF_Netto_Changes.mq4 | Bin 0 -> 15996 bytes MetaCOT2_TFF_Netto_Position.mq4 | Bin 0 -> 14468 bytes MetaCOT2_TFF_Williams_Commercial_Index.mq4 | Bin 0 -> 15230 bytes Momentum.mq4 | 78 + OsMA.mq4 | 91 + Parabolic.mq4 | 239 +++ Pivot Points - Daily (Shifted).mq4 | 288 +++ RSI.mq4 | 133 ++ Stochastic X.mq4 | 187 ++ TARGET BANDS.mq4 | 335 +++ TMA_Fair .mq4 | 326 +++ TREND_alexcud_v_2MEn.mq4 | 436 ++++ TRO_HOLO.mq4 | 530 +++++ TRO_TRAININGWHEELS.mq4 | 234 +++ Ultimate Arrows.mq4 | 150 ++ VENOM A.mq4 | 426 ++++ VENOM B.mq4 | 1972 ++++++++++++++++++ Waddah_Attar_BUY_SELL_Vol.mq4 | 93 + afl_winner.mq4 | 172 ++ arbitrage.mq4 | 518 +++++ closeatprofit.mq4 | 448 ++++ cracked_Mega_Fx.mq4 | 156 ++ eXclusive_MTF_RSI.mq4 | 275 +++ fiji-trend-indicator.mq4 | 276 +++ holy grail EA.mq4 | Bin 0 -> 439310 bytes ifibonacci.mq4 | Bin 0 -> 63096 bytes ind_aMU.mq4 | 109 + rsima_bands nmc 6 lines.mq4 | 515 +++++ tma-macd-indicator.mq4 | Bin 0 -> 50048 bytes 100 files changed, 20492 insertions(+) create mode 100644 !FT M-MATH v3.mq4 create mode 100644 #Pallada_Assistant.mq4 create mode 100644 #Pallada_Bars.mq4 create mode 100644 #Pallada_ExitSignal.mq4 create mode 100644 #Pallada_MainSignal_AllAverages.mq4 create mode 100644 #Pallada_Volatility.mq4 create mode 100644 00adx_close0test.mq4 create mode 100644 10.7 3.1 SSG 100.50.6xxmq4.ex4 create mode 100644 ACD_PV.mq4 create mode 100644 ADX FiboMA.mq4 create mode 100644 ADX Filter sBarM mtf.mq4 create mode 100644 ADX_Crossing_v_2_0.mq4 create mode 100644 ADXbars.mq4 create mode 100644 Advanced_ADX.mq4 create mode 100644 AlphaTrendSpotter_free.mq4 create mode 100644 BE-clock.mq4 create mode 100644 Bears.mq4 create mode 100644 BetterVolume 1.4.mq4 create mode 100644 Bulls.mq4 create mode 100644 CCI.mq4 create mode 100644 CHT_Value_chart_v2.5.3.mq4 create mode 100644 Channels.mq4 create mode 100644 CurrencyStrengthAlerts (2).mq4 create mode 100644 Custom Moving Averages.mq4 create mode 100644 DDFX 9 Xtra Sig v3.mq4 create mode 100644 DarvasBoxes nmc.mq4 create mode 100644 Equity-Free-Margin-Manager-EA.mq4 create mode 100644 FTLM-STLMxAMm.mq4 create mode 100644 ForexComboSystem_v5.0(4in1)EURUSD.mq4 create mode 100644 ForexComboSystem_v5.0(4in1)GBPUSD.mq4 create mode 100644 GPSForexRobotEURGBP_edu.mq4 create mode 100644 GPSForexRobotEURUSD_edu.mq4 create mode 100644 GPSForexRobotUSDCHF_edu.mq4 create mode 100644 Geo crossover_signal.mq4 create mode 100644 Gmacd2.mq4 create mode 100644 HMA Trend Arrows TT.mq4 create mode 100644 HalfTrend-1.02.mq4 create mode 100644 HamaSystem.mq4 create mode 100644 MACD_Histogram.mq4 create mode 100644 MetaCOT2_CIT_Absolute_Changes.mq4 create mode 100644 MetaCOT2_CIT_Absolute_Position.mq4 create mode 100644 MetaCOT2_CIT_Index.mq4 create mode 100644 MetaCOT2_CIT_Movement_Index.mq4 create mode 100644 MetaCOT2_CIT_Netto_Changes.mq4 create mode 100644 MetaCOT2_CIT_Netto_Position.mq4 create mode 100644 MetaCOT2_CIT_Williams_Commercial_Index.mq4 create mode 100644 MetaCOT2_COT_Absolute_Changes.mq4 create mode 100644 MetaCOT2_COT_Absolute_Position.mq4 create mode 100644 MetaCOT2_COT_Index.mq4 create mode 100644 MetaCOT2_COT_Movement_Index.mq4 create mode 100644 MetaCOT2_COT_Netto_Changes.mq4 create mode 100644 MetaCOT2_COT_Netto_Position.mq4 create mode 100644 MetaCOT2_COT_Williams_Commercial_Index.mq4 create mode 100644 MetaCOT2_D-COT_Absolute_Changes.mq4 create mode 100644 MetaCOT2_D-COT_Absolute_Position.mq4 create mode 100644 MetaCOT2_D-COT_Index.mq4 create mode 100644 MetaCOT2_D-COT_Movement_Index.mq4 create mode 100644 MetaCOT2_D-COT_Netto_Changes.mq4 create mode 100644 MetaCOT2_D-COT_Netto_Position.mq4 create mode 100644 MetaCOT2_D-COT_Williams_Commercial_Index.mq4 create mode 100644 MetaCOT2_L-COT_Largest_Changes.mq4 create mode 100644 MetaCOT2_L-COT_Largest_Position.mq4 create mode 100644 MetaCOT2_L-COT_Movement_Index.mq4 create mode 100644 MetaCOT2_L-COT_Netto_Changes.mq4 create mode 100644 MetaCOT2_L-COT_Netto_Largest_Position.mq4 create mode 100644 MetaCOT2_L-COT_Williams_Commercial_Index.mq4 create mode 100644 MetaCOT2_SaveIndicatorValuesInFile.mq4 create mode 100644 MetaCOT2_TFF_Absolute_Changes.mq4 create mode 100644 MetaCOT2_TFF_Absolute_Position.mq4 create mode 100644 MetaCOT2_TFF_Index.mq4 create mode 100644 MetaCOT2_TFF_Movement_Index.mq4 create mode 100644 MetaCOT2_TFF_Netto_Changes.mq4 create mode 100644 MetaCOT2_TFF_Netto_Position.mq4 create mode 100644 MetaCOT2_TFF_Williams_Commercial_Index.mq4 create mode 100644 Momentum.mq4 create mode 100644 OsMA.mq4 create mode 100644 Parabolic.mq4 create mode 100644 Pivot Points - Daily (Shifted).mq4 create mode 100644 RSI.mq4 create mode 100644 Stochastic X.mq4 create mode 100644 TARGET BANDS.mq4 create mode 100644 TMA_Fair .mq4 create mode 100644 TREND_alexcud_v_2MEn.mq4 create mode 100644 TRO_HOLO.mq4 create mode 100644 TRO_TRAININGWHEELS.mq4 create mode 100644 Ultimate Arrows.mq4 create mode 100644 VENOM A.mq4 create mode 100644 VENOM B.mq4 create mode 100644 Waddah_Attar_BUY_SELL_Vol.mq4 create mode 100644 afl_winner.mq4 create mode 100644 arbitrage.mq4 create mode 100644 closeatprofit.mq4 create mode 100644 cracked_Mega_Fx.mq4 create mode 100644 eXclusive_MTF_RSI.mq4 create mode 100644 fiji-trend-indicator.mq4 create mode 100644 holy grail EA.mq4 create mode 100644 ifibonacci.mq4 create mode 100644 ind_aMU.mq4 create mode 100644 rsima_bands nmc 6 lines.mq4 create mode 100644 tma-macd-indicator.mq4 diff --git a/!FT M-MATH v3.mq4 b/!FT M-MATH v3.mq4 new file mode 100644 index 0000000..30207a6 --- /dev/null +++ b/!FT M-MATH v3.mq4 @@ -0,0 +1,616 @@ + +// +----------------------------------------------------------------------------------------+ // +// | !FT M-MATH v3 \¦/ | // +// | Knowledge of the ancients (ò ó) | // +// |_________________________________________________o0o___(_)___o0o________________________| // +// |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|____|_____| // +// | 2011 | // +// |----------------------------------------------------------------------------------------| // +// | Programming language: MQL4 | // +// | Development platform: MetaTrader 4 | // +// | End product: Indicator for MetaTrader 4 designed | // +// | for Build 229 (current version) | // +// +----------------------------------------------------------------------------------------+ // + +#property indicator_chart_window +//+------------------------------------------------------------------+ +extern color midcol = Blue; + +double s1[]; +extern int P = 512; +extern int FW = 512; +extern int StepBack = 0; + +extern bool show.timeleft=false; +extern bool show.symbol.price=false; +extern int win = 0; +extern int Adjust_Side_to_side = 10; +extern int Shift_UP_DN = 0; + +extern bool showcomments=true; +//+------------------------------------------------------------------+ +extern bool bml.25.lines=false; +extern color bml.25.color=DarkSlateGray; +extern int bml.25.style=0; +//+------ +extern bool bml.33.lines=true; +extern color bml.33.color=DarkSlateGray; +extern int bml.33.style=0; +//+------ +extern bool bml.50.lines=false; +extern color bml.50.color=DarkSlateGray; +extern int bml.50.style=1; +//+------------------------------------------------------------------+ +extern bool color.frame=false; +color MM1Color = C'0,6,60'; //C'0,90,90'; +color MM2Color = C'100,5,60'; //C'90,0,90'; +color MM3Color = C'0,6,60'; //C'0,30,90'; +//+------------------------------------------------------------------+ +#define FF1 "FF1" +#define FF2 "FF2" +#define FF3 "FF3" +#define FF4 "FF4" +#define FF5 "FF5" +//+------------------------------------------------------------------+ +int l996 = 0; +int l1004 = 0; + + +double bml.25[26], bml.33[26], bml.50[12]; +double dmml = 0, + dvtl = 0, + sum = 0, + v1 = 0, + v2 = 0, + mn = 0, + mx = 0, + x1 = 0, + x2 = 0, + x3 = 0, + x4 = 0, + x5 = 0, + x6 = 0, + y1 = 0, + y2 = 0, + y3 = 0, + y4 = 0, + y5 = 0, + y6 = 0, + octave = 0, + fractal = 0, + range = 0, + finalH = 0, + finalL = 0, + DecNos, + mml[13]; + + + +//+------------------------------------------------------------------+ +string ln_txt[13], ln_tx[13], + buff_str = "", buff_str2 = "", buff_str3 = "", buff_str4 = ""; +//+------------------------------------------------------------------+ +int bn_v1=0, bn_v2=0, OctLinesCnt=13, mml_thk=8, mml_clr[13], mml_shft=3, nTime=0, CurPeriod=0, x33 = 0, x25 = 0, x50 = 0, + nDigits=0, frametemp=0, i=0, gb=0, gb.T=0, mP=0, lperiod=0, d=0,ts=0, mml_wdth[13], + bml.33.Cnt = 26, bml.25.Cnt = 38, bml.50.Cnt = 12; +//+------------------------------------------------------------------+ +int init() { +//---- indicators + ln_txt[0] = "[-2/8] "; + ln_txt[1] = "[-1/8] "; + ln_txt[2] = "[0/8] "; + ln_txt[3] = "[1/8] "; + ln_txt[4] = "[2/8] "; + ln_txt[5] = "[3/8] "; + ln_txt[6] = "[4/8] "; + ln_txt[7] = "[5/8] "; + ln_txt[8] = "[6/8] "; + ln_txt[9] = "[7/8] "; + ln_txt[10] = "[8/8] "; + ln_txt[11] = "[+1/8] "; + ln_txt[12] = "[+2/8] "; +//+------------------------------------------------------------------+ + mml_wdth[0] = 2; + mml_wdth[1] = 1; + mml_wdth[2] = 3; + mml_wdth[3] = 1; + mml_wdth[4] = 2; + mml_wdth[5] = 1; + mml_wdth[6] = 3; + mml_wdth[7] = 1; + mml_wdth[8] = 2; + mml_wdth[9] = 1; + mml_wdth[10] = 3; + mml_wdth[11] = 1; + mml_wdth[12] = 2; +//+------------------------------------------------------------------+ + ln_tx[0] = ""; + ln_tx[1] = ""; + ln_tx[2] = ""; + ln_tx[3] = ""; + ln_tx[4] = ""; + ln_tx[5] = ""; + ln_tx[6] = ""; + ln_tx[7] = ""; + ln_tx[8] = ""; + ln_tx[9] = ""; + ln_tx[10] = ""; + ln_tx[11] = ""; + ln_tx[12] = ""; +//+------------------------------------------------------------------+ + mml_shft = 0;//original was 3 + mml_thk = 3; +//+------------------------------------------------------------------+ + mml_clr[0] = Red;//Maroon; // [-2]/8 + mml_clr[1] = Orange;//C'60,60,60'; // [-1]/8 + mml_clr[2] = Blue;//Red; // [0]/8 + mml_clr[3] = Yellow;//C'60,60,60'; // [1]/8 + mml_clr[4] = HotPink;//DarkGreen; // [2]/8 + mml_clr[5] = Lime;//C'60,60,60'; // [3]/8 + mml_clr[6] = midcol;//Lavender; // [4]/8 + mml_clr[7] = Lime;//C'60,60,60'; // [5]/8 + mml_clr[8] = HotPink;//DarkGreen; // [6]/8 + mml_clr[9] = Yellow;//C'60,60,60'; // [7]/8 + mml_clr[10] = Blue;//Red; // [8]/8 + mml_clr[11] = Orange;//C'60,60,60';//DarkViolet; // [+1]/8 + mml_clr[12] = Red;//Maroon;//LightSlateGray; // [+2]/8 +//+------------------------------------------------------------------+ + bn_v1 = Lowest(NULL,0,MODE_LOW,0); + bn_v2 = Highest(NULL,0,MODE_HIGH,0); + + v1 = Low[bn_v1]; + v2 = High[bn_v2]; + + return(0); + } +//+------------------------------------------------------------------+ +int deinit() { +//---- TODO: add your code here +Comment(" "); +//+------------------------------------------------------------------+ +for(i=0;i25000 ) + fractal=100000; + else + if( v2<=25000 && v2>2500 ) + fractal=10000; + else + if( v2<=2500 && v2>250 ) + fractal=1000; + else + if( v2<=250 && v2>25 ) + fractal=100; + else + if( v2<=25 && v2>12.5 ) + fractal=12.5; + else + if( v2<=12.5 && v2>6.25) + fractal=12.5; + else + if( v2<=6.25 && v2>3.125 ) + fractal=6.25; + else + if( v2<=3.125 && v2>1.5625 ) + fractal=3.125; + else + if( v2<=1.5625 && v2>0.390625 ) + fractal=1.5625; + else + if( v2<=0.390625 && v2>0) + fractal=0.1953125; +//+------------------------------------------------------------------+ + range=(v2-v1); + sum=MathFloor(MathLog(fractal/range)/MathLog(2)); + octave=fractal*(MathPow(0.5,sum)); + mn=MathFloor(v1/octave)*octave; + if( (mn+octave)>v2 ) + mx=mn+octave; + else + mx=mn+(2*octave); +//+------------------------------------------------------------------+ +// calculating xx +//x2 + if( (v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) ) + x2=mn+(mx-mn)/2; + else x2=0; +//x1 + if( (v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) ) + x1=mn+(mx-mn)/2; + else x1=0; + +//x4 + if( (v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) ) + x4=mn+3*(mx-mn)/4; + else x4=0; + +//x5 + if( (v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) ) + x5=mx; + else x5=0; + +//x3 + if( (v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) ) + x3=mn+3*(mx-mn)/4; + else x3=0; + +//x6 + if( (x1+x2+x3+x4+x5) ==0 ) + x6=mx; + else x6=0; + + finalH = x1+x2+x3+x4+x5+x6; +// calculating yy +//y1 + if( x1>0 ) + y1=mn; + else y1=0; + +//y2 + if( x2>0 ) + y2=mn+(mx-mn)/4; + else y2=0; + +//y3 + if( x3>0 ) + y3=mn+(mx-mn)/4; + else y3=0; + +//y4 + if( x4>0 ) + y4=mn+(mx-mn)/2; + else y4=0; + +//y5 + if( x5>0 ) + y5=mn+(mx-mn)/2; + else y5=0; + +//y6 + if( (finalH>0) && ((y1+y2+y3+y4+y5)==0) ) + y6=mn; + else y6=0; + + finalL = y1+y2+y3+y4+y5+y6; +//+------------------------------------------------------------------+ +double xo = (finalH-finalL); +double xmm = xo/8; +//+------------------------------------------------------------------+ + for( i=0; i= 0; li_8--) + if (StringFind(ObjectName(li_8), as_0, 0) == 0) ObjectDelete(ObjectName(li_8)); +} + +int start() { + bool li_8; + bool li_12; + //if (TimeCurrent() > StrToTime("2050.04.20")) { + // Alert("New version available! Download it using re-activated link from Plimus"); + // return; + //} + int li_0 = Bars - IndicatorCounted(); + for (int li_4 = li_0 - 1; li_4 >= 0; li_4--) { + g_ibuf_164[li_4] = g_ibuf_164[li_4 + 1]; + g_ibuf_168[li_4] = g_ibuf_168[li_4 + 1]; + g_ibuf_172[li_4] = g_ibuf_172[li_4 + 1]; + g_ibuf_176[li_4] = g_ibuf_176[li_4 + 1]; + g_ibuf_180[li_4] = g_ibuf_180[li_4 + 1]; + g_ibuf_184[li_4] = g_ibuf_184[li_4 + 1]; + g_ibuf_188[li_4] = g_ibuf_188[li_4 + 1]; + li_8 = fTimeInZone(StartHour, gi_80, EndHour, gi_88, Time[li_4]); + li_12 = fTimeInZone(StartHour, gi_80, EndHour, gi_88, Time[li_4 + 1]); + if (li_8) { + if (!li_12) { + g_high_192 = High[li_4]; + g_low_200 = Low[li_4]; + gd_unused_208 = Open[li_4]; + } + g_high_192 = MathMax(g_high_192, High[li_4]); + g_low_200 = MathMin(g_low_200, Low[li_4]); + } + if (!li_8) { + if (li_12) { + g_ibuf_164[li_4] = (g_high_192 + g_low_200) / 2.0; + gd_216 = g_high_192 - g_low_200; + g_ibuf_168[li_4] = g_high_192 - 1.61 * gd_216; + g_ibuf_172[li_4] = g_high_192 - 2.0 * gd_216; + g_ibuf_176[li_4] = g_high_192 - 2.61 * gd_216; + g_ibuf_180[li_4] = g_low_200 + 1.61 * gd_216; + g_ibuf_184[li_4] = g_low_200 + 2.0 * gd_216; + g_ibuf_188[li_4] = g_low_200 + 2.61 * gd_216; + } + } + } + double l_iwpr_16 = iWPR(NULL, 0, g_period_116, 0); + double l_icci_24 = iCCI(NULL, 0, g_period_120, g_applied_price_124, 0); + double l_irsi_32 = iRSI(NULL, 0, g_period_128, g_applied_price_132, 0); + string ls_40 = "Direction: UNKN"; + string ls_48 = "Direction: UNKN"; + string ls_56 = "Direction: UNKN"; + string ls_64 = "Direction: UNKN"; + int l_color_72 = ColorUNKN; + if (l_iwpr_16 > -50.0 && l_icci_24 > 0.0 && l_irsi_32 > 50.0) { + ls_40 = "Direction: UP"; + l_color_72 = ColorUP; + ls_48 = "1. Target - " + DS(g_ibuf_180[0]); + ls_56 = "2. Target - " + DS(g_ibuf_184[0]); + ls_64 = "3. Target - " + DS(g_ibuf_188[0]); + } + if (l_iwpr_16 < -50.0 && l_icci_24 < 0.0 && l_irsi_32 < 50.0) { + ls_40 = "Direction: DN"; + l_color_72 = ColorDN; + ls_48 = "1. Target - " + DS(g_ibuf_168[0]); + ls_56 = "2. Target - " + DS(g_ibuf_172[0]); + ls_64 = "3. Target - " + DS(g_ibuf_176[0]); + } + if (Corner == 0 || Corner == 1) { + fObjLabel("MSFP2_1", PosX, PosY, " " + "++PALLADA ASSISTANT++", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_2", PosX, PosY + 5, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_3", PosX, PosY + 20, " " + ls_40, Corner, l_color_72, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_4", PosX, PosY + 25, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_5", PosX, PosY + 40, " " + ls_48, Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_6", PosX, PosY + 50, " " + ls_56, Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_7", PosX, PosY + 60, " " + ls_64, Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_8", PosX, PosY + 65, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_9", PosX, PosY + 80, " Range: " + DS0(gd_216 / Point), Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_10", PosX, PosY + 85, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_11", PosX, PosY + 100, " " + "PalladaSE.©2009 TradeWays", Corner, ColorCommon, 8, 0, "Arial", FALSE); + } else { + fObjLabel("MSFP2_1", PosX, PosY + 100, " " + "++PALLADA ASSISTANT++", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_2", PosX, PosY + 95, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_3", PosX, PosY + 80, " " + ls_40, Corner, l_color_72, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_4", PosX, PosY + 75, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_5", PosX, PosY + 60, " " + ls_48, Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_6", PosX, PosY + 50, " " + ls_56, Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_7", PosX, PosY + 40, " " + ls_64, Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_8", PosX, PosY + 35, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_9", PosX, PosY + 20, " Range: " + DS0(gd_216 / Point), Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_10", PosX, PosY + 15, "_______________", Corner, ColorCommon, 8, 0, "Arial", FALSE); + fObjLabel("MSFP2_11", PosX, PosY, " " + "PalladaSE.©2009 TradeWays", Corner, ColorCommon, 8, 0, "Arial", FALSE); + } + return (0); +} + +string DS0(double ad_0) { + return (DoubleToStr(ad_0, 0)); +} + +string DS(double ad_0) { + return (DoubleToStr(ad_0, Digits)); +} + +void fObjLabel(string a_name_0, int a_x_8, int a_y_12, string a_text_16, int a_corner_24 = 0, color a_color_28 = 255, int a_fontsize_32 = 8, int a_window_36 = 0, string a_fontname_40 = "Arial", bool a_bool_48 = FALSE) { + if (ObjectFind(a_name_0) != a_window_36) ObjectCreate(a_name_0, OBJ_LABEL, a_window_36, 0, 0); + ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8); + ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_12); + ObjectSetText(a_name_0, a_text_16, a_fontsize_32, a_fontname_40, a_color_28); + ObjectSet(a_name_0, OBJPROP_BACK, a_bool_48); + ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_24); +} + +int fTimeInZone(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16) { + int li_20 = 3600 * ai_0 + 60 * ai_4; + int li_24 = 3600 * ai_8 + 60 * ai_12; + int li_28 = ai_16 - 86400 * (ai_16 / 86400); + if (li_20 <= li_24) { + if (li_28 >= li_20 && li_28 < li_24) return (1); + } else + if (li_28 >= li_20 || li_28 < li_24) return (1); + return (0); +} \ No newline at end of file diff --git a/#Pallada_Bars.mq4 b/#Pallada_Bars.mq4 new file mode 100644 index 0000000..344e39c --- /dev/null +++ b/#Pallada_Bars.mq4 @@ -0,0 +1,120 @@ + +#property copyright "Copyright © 2009, TradeWays" +#property link "http://www.tradeways.org" + +#property indicator_chart_window +#property indicator_buffers 8 +#property indicator_color1 Blue +#property indicator_color2 Red +#property indicator_color3 DodgerBlue +#property indicator_color4 Tomato +#property indicator_color5 Blue +#property indicator_color6 Red +#property indicator_color7 DodgerBlue +#property indicator_color8 Tomato + +double g_period_76 = 50.0; +double g_period_84 = 30.0; +double g_period_92 = 38.0; +double g_ibuf_100[]; +double g_ibuf_104[]; +double g_ibuf_108[]; +double g_ibuf_112[]; +double g_ibuf_116[]; +double g_ibuf_120[]; +double g_ibuf_124[]; +double g_ibuf_128[]; + +int init() { + SetIndexStyle(0, DRAW_HISTOGRAM); + SetIndexBuffer(0, g_ibuf_100); + SetIndexStyle(1, DRAW_HISTOGRAM); + SetIndexBuffer(1, g_ibuf_104); + SetIndexStyle(2, DRAW_HISTOGRAM); + SetIndexBuffer(2, g_ibuf_108); + SetIndexStyle(3, DRAW_HISTOGRAM); + SetIndexBuffer(3, g_ibuf_112); + SetIndexStyle(4, DRAW_HISTOGRAM); + SetIndexBuffer(4, g_ibuf_116); + SetIndexStyle(5, DRAW_HISTOGRAM); + SetIndexBuffer(5, g_ibuf_120); + SetIndexStyle(6, DRAW_HISTOGRAM); + SetIndexBuffer(6, g_ibuf_124); + SetIndexStyle(7, DRAW_HISTOGRAM); + SetIndexBuffer(7, g_ibuf_128); + string ls_0 = "#PalladaSE_Bars©2009 TradeWays"; + IndicatorShortName(ls_0); + return (0); +} + +int start() { + double l_icci_8; + double l_iwpr_16; + double l_iforce_24; + int li_32; + //if (TimeCurrent() > StrToTime("2050.04.20")) { + // Alert("New version available! Download it using re-activated link from Plimus"); + // return; + //} + //if (AccountNumber() != 0 && 0) { + // Alert("This expert is not licensed to your account number!"); + // return; + //} + int l_ind_counted_4 = IndicatorCounted(); + if (Bars <= 15) return (0); + if (l_ind_counted_4 < 1) { + for (int li_0 = 1; li_0 <= 15; li_0++) { + g_ibuf_100[Bars - li_0] = 0.0; + g_ibuf_108[Bars - li_0] = 0.0; + g_ibuf_104[Bars - li_0] = 0.0; + g_ibuf_112[Bars - li_0] = 0.0; + g_ibuf_116[Bars - li_0] = 0.0; + g_ibuf_124[Bars - li_0] = 0.0; + g_ibuf_120[Bars - li_0] = 0.0; + g_ibuf_128[Bars - li_0] = 0.0; + } + } + if (l_ind_counted_4 > 0) li_32 = Bars - l_ind_counted_4; + if (l_ind_counted_4 == 0) li_32 = Bars - 15 - 1; + for (li_0 = li_32; li_0 >= 0; li_0--) { + l_icci_8 = iCCI(NULL, 0, g_period_84, PRICE_TYPICAL, li_0); + l_iwpr_16 = iWPR(NULL, 0, g_period_92, li_0); + l_iforce_24 = iForce(NULL, 0, g_period_76, MODE_EMA, PRICE_CLOSE, li_0); + g_ibuf_100[li_0] = EMPTY_VALUE; + g_ibuf_108[li_0] = EMPTY_VALUE; + g_ibuf_104[li_0] = EMPTY_VALUE; + g_ibuf_112[li_0] = EMPTY_VALUE; + g_ibuf_116[li_0] = EMPTY_VALUE; + g_ibuf_124[li_0] = EMPTY_VALUE; + g_ibuf_120[li_0] = EMPTY_VALUE; + g_ibuf_128[li_0] = EMPTY_VALUE; + if (l_icci_8 > 0.0 && l_iwpr_16 > -50.0 && l_iforce_24 > 0.0) { + g_ibuf_100[li_0] = MathMax(Open[li_0], Close[li_0]); + g_ibuf_104[li_0] = MathMin(Open[li_0], Close[li_0]); + g_ibuf_116[li_0] = High[li_0]; + g_ibuf_120[li_0] = Low[li_0]; + } else { + if (l_icci_8 > 0.0 && l_iwpr_16 < -50.0) { + g_ibuf_108[li_0] = MathMax(Open[li_0], Close[li_0]); + g_ibuf_112[li_0] = MathMin(Open[li_0], Close[li_0]); + g_ibuf_124[li_0] = High[li_0]; + g_ibuf_128[li_0] = Low[li_0]; + } else { + if (l_icci_8 < 0.0 && l_iwpr_16 < -50.0 && l_iforce_24 < 0.0) { + g_ibuf_104[li_0] = MathMax(Open[li_0], Close[li_0]); + g_ibuf_100[li_0] = MathMin(Open[li_0], Close[li_0]); + g_ibuf_120[li_0] = High[li_0]; + g_ibuf_116[li_0] = Low[li_0]; + } else { + if (l_icci_8 < 0.0 && l_iwpr_16 > -50.0) { + g_ibuf_112[li_0] = MathMax(Open[li_0], Close[li_0]); + g_ibuf_108[li_0] = MathMin(Open[li_0], Close[li_0]); + g_ibuf_128[li_0] = High[li_0]; + g_ibuf_124[li_0] = Low[li_0]; + } + } + } + } + } + return (0); +} \ No newline at end of file diff --git a/#Pallada_ExitSignal.mq4 b/#Pallada_ExitSignal.mq4 new file mode 100644 index 0000000..8e20576 --- /dev/null +++ b/#Pallada_ExitSignal.mq4 @@ -0,0 +1,204 @@ +#property copyright "Copyright © 2008, TradeWays" +#property link "http://www.tradeways.org" + +#property indicator_chart_window +#property indicator_buffers 2 +#property indicator_color1 DodgerBlue +#property indicator_color2 Red + +extern int Fx = 34; +extern double Deviation = 5.0; +extern int FEMA = 5; +extern int SEMA = 13; +extern bool EmailON = TRUE; +extern bool SoundON = TRUE; +extern bool AlertON = TRUE; +extern int AlertRepeat = 3; +extern bool EndLessRepeat = FALSE; +extern string SoundFile = "Alert"; +double g_ibuf_124[]; +double g_ibuf_128[]; +double g_ibuf_132[]; +double g_ibuf_136[]; +double g_ibuf_140[]; +double g_ibuf_144[]; +int gi_148; +int gi_152; +int g_datetime_156; +int g_datetime_160; +int g_time_164 = 0; +int g_time_168 = 0; + +int init() { + ObjectDelete("Exit_Signal_Bell"); + IndicatorBuffers(6); + SetIndexStyle(0, DRAW_ARROW); + SetIndexArrow(0, 233); + SetIndexBuffer(0, g_ibuf_124); + SetIndexStyle(1, DRAW_ARROW); + SetIndexArrow(1, 234); + SetIndexBuffer(1, g_ibuf_128); + SetIndexBuffer(2, g_ibuf_136); + SetIndexBuffer(3, g_ibuf_132); + SetIndexBuffer(4, g_ibuf_140); + SetIndexBuffer(5, g_ibuf_144); + if (Fx < 2) Fx = 2; + if (Deviation < 0.0) Deviation = 1; + if (FEMA < 1) FEMA = 1; + if (SEMA < 1) SEMA = 1; + IndicatorShortName("Exit_Signal"); + SetIndexDrawBegin(0, Fx + SEMA); + SetIndexDrawBegin(1, Fx + SEMA); + SetIndexLabel(0, "Exit_Signal Up"); + SetIndexLabel(1, "Exit_Signal Down"); + SetIndexEmptyValue(0, 0); + SetIndexEmptyValue(1, 0); + IndicatorDigits(4); + return (0); +} + +int deinit() { + ObjectDelete("Exit_Signal_Bell"); + return (0); +} + +double NormalizedX(int a_period_0, int ai_4) { + double ld_ret_8; + double l_ima_16; + double l_istddev_24; + double l_close_32; + if (ai_4 < Bars - a_period_0) { + l_close_32 = Close[ai_4]; + l_ima_16 = iMA(NULL, 0, a_period_0, 0, MODE_SMA, PRICE_CLOSE, ai_4); + l_istddev_24 = iStdDev(NULL, 0, a_period_0, 0, MODE_SMA, PRICE_CLOSE, ai_4); + ld_ret_8 = (l_close_32 - l_ima_16) / l_istddev_24; + } else ld_ret_8 = 0; + return (ld_ret_8); +} + +double FisherNormalizedX(int ai_0, double ad_4, int ai_12) { + double ld_ret_16; + double ld_24; + if (ai_12 < Bars - ai_0 && ad_4 > 0.0) { + ld_24 = NormalizedX(ai_0, ai_12) / ad_4; + if (ld_24 > 0.99) ld_24 = 0.99; + if (ld_24 < -0.99) ld_24 = -0.99; + ld_ret_16 = MathLog((ld_24 + 1.0) / (1 - ld_24)) / 2.0; + } else ld_ret_16 = 0; + return (ld_ret_16); +} + +int start() { + int li_4 = IndicatorCounted(); + if (li_4 < 0) return (-1); + if (li_4 > 0) li_4--; + int li_0 = Bars - li_4; + for (int li_8 = 0; li_8 < li_0; li_8++) g_ibuf_144[li_8] = FisherNormalizedX(Fx, Deviation, li_8); + for (li_8 = 0; li_8 < li_0; li_8++) g_ibuf_140[li_8] = iMAOnArray(g_ibuf_144, Bars, SEMA, 0, MODE_EMA, li_8); + for (li_8 = 0; li_8 < li_0; li_8++) { + if (iMAOnArray(g_ibuf_144, Bars, FEMA, 0, MODE_EMA, li_8) > g_ibuf_140[li_8]) { + g_ibuf_132[li_8] = iMAOnArray(g_ibuf_144, Bars, FEMA, 0, MODE_EMA, li_8); + g_ibuf_136[li_8] = 0; + } else { + g_ibuf_132[li_8] = 0; + g_ibuf_136[li_8] = iMAOnArray(g_ibuf_144, Bars, FEMA, 0, MODE_EMA, li_8); + } + } + for (li_8 = 0; li_8 < li_0; li_8++) { + g_ibuf_124[li_8] = EMPTY_VALUE; + g_ibuf_128[li_8] = EMPTY_VALUE; + if (g_ibuf_132[li_8] != 0.0 && g_ibuf_132[li_8 + 1] == 0.0) g_ibuf_124[li_8] = Low[li_8] - 5.0 * Point; + if (g_ibuf_136[li_8] != 0.0 && g_ibuf_136[li_8 + 1] == 0.0) g_ibuf_128[li_8] = High[li_8] + 5.0 * Point; + } + int li_unused_12 = 1; + if (g_ibuf_132[1] != 0.0 && g_ibuf_132[2] == 0.0) { + if (Time[0] != g_time_164) { + g_time_164 = Time[0]; + if (EmailON) SendMail("Exit_Signal(" + Symbol() + " " + fTimeFrameName(Period()) + ")", "BUY"); + if (SoundON || AlertON) { + fObjLabel("Exit_Signal_Bell", 100, 100, StringSetChar("", 0, '%'), 3, Red, 16, 0, "Wingdings", FALSE); + if (EndLessRepeat) gi_148 = 1; + else gi_148 = AlertRepeat; + g_datetime_156 = 0; + gi_152 = 0; + } + } + } + if (g_ibuf_136[1] != 0.0 && g_ibuf_136[2] == 0.0) { + if (Time[0] != g_time_168) { + g_time_168 = Time[0]; + if (EmailON) SendMail("Exit_Signal(" + Symbol() + " " + fTimeFrameName(Period()) + ")", "SELL"); + if (SoundON || AlertON) { + fObjLabel("Exit_Signal_Bell", 100, 100, StringSetChar("", 0, '%'), 3, Red, 16, 0, "Wingdings", FALSE); + if (EndLessRepeat) gi_152 = 1; + else gi_152 = AlertRepeat; + g_datetime_160 = 0; + gi_148 = 0; + } + } + } + if (ObjectFind("Exit_Signal_Bell") == 0) { + if (gi_148 > 0) { + if (TimeLocal() > g_datetime_156 + 1) { + if (!EndLessRepeat) gi_148--; + g_datetime_156 = TimeLocal(); + if (AlertON) Alert("Exit_Signal(" + Symbol() + " " + fTimeFrameName(Period()) + "): BUY"); + if (SoundON) { + Print("Exit_Signal(" + Symbol() + " " + fTimeFrameName(Period()) + "): BUY"); + PlaySound(SoundFile); + } + } + } + if (gi_152 > 0) { + if (TimeLocal() > g_datetime_160 + 1) { + if (!EndLessRepeat) gi_152--; + g_datetime_160 = TimeLocal(); + if (AlertON) Alert("Exit_Signal(" + Symbol() + " " + fTimeFrameName(Period()) + "): SELL"); + if (SoundON) { + Print("Exit_Signal(" + Symbol() + " " + fTimeFrameName(Period()) + "): SELL"); + PlaySound(SoundFile); + } + } + } + } + if (gi_152 <= 0 && gi_148 <= 0) ObjectDelete("Exit_Signal_Bell"); + return (0); +} + +string fTimeFrameName(int ai_0) { + int l_timeframe_4; + if (ai_0 == 0) l_timeframe_4 = Period(); + else l_timeframe_4 = ai_0; + switch (l_timeframe_4) { + case 0: + return ("0"); + case PERIOD_M1: + return ("M1"); + case PERIOD_M5: + return ("M5"); + case PERIOD_M15: + return ("M15"); + case PERIOD_M30: + return ("M30"); + case PERIOD_H1: + return ("H1"); + case PERIOD_H4: + return ("H4"); + case PERIOD_D1: + return ("D1"); + case PERIOD_W1: + return ("W1"); + case PERIOD_MN1: + return ("MN1"); + } + return ("Wrong TimeFrame"); +} + +void fObjLabel(string a_name_0, int a_x_8, int a_y_12, string a_text_16, int a_corner_24 = 0, color a_color_28 = 255, int a_fontsize_32 = 8, int a_window_36 = 0, string a_fontname_40 = "Arial", bool a_bool_48 = FALSE) { + if (ObjectFind(a_name_0) != a_window_36) ObjectCreate(a_name_0, OBJ_LABEL, a_window_36, 0, 0); + ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8); + ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_12); + ObjectSetText(a_name_0, a_text_16, a_fontsize_32, a_fontname_40, a_color_28); + ObjectSet(a_name_0, OBJPROP_BACK, a_bool_48); + ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_24); +} \ No newline at end of file diff --git a/#Pallada_MainSignal_AllAverages.mq4 b/#Pallada_MainSignal_AllAverages.mq4 new file mode 100644 index 0000000..79a4511 --- /dev/null +++ b/#Pallada_MainSignal_AllAverages.mq4 @@ -0,0 +1,220 @@ +#property copyright "Copyright © 2008, TradeWays" +#property link "http://www.tradeways.org" + +#property indicator_chart_window +#property indicator_buffers 3 +#property indicator_color1 RoyalBlue +#property indicator_color2 Red +#property indicator_color3 Yellow + +extern int AAB_Price = 0; +extern int AAB_MAPeriod = 46; +extern int AAB_MAShift = 0; +extern int AAB_MAMethod = 11; +extern int AAB_BandsType = 1; +extern int AAB_STDPeriod = 20; +extern bool AAB_STDUseMAPeriod = TRUE; +extern double AAB_STDDevations = 1.5; +extern double AAB_ENVDevations = 0.1; +extern int AAB_ATRPeriod = 20; +extern bool AAB_ATRUseMAPeriod = TRUE; +extern double AAB_ATRDevations = 2.0; +extern double AAB_NLMADeviation = 0.0; +extern double AAB_NLMAPctFilter = 0.0; +extern bool EmailON = TRUE; +extern bool SoundON = TRUE; +extern bool AlertON = TRUE; +extern int AlertRepeat = 3; +extern bool EndLessRepeat = FALSE; +extern string SoundFile = "Alert"; +extern int Nbars = -1; +double gd_184 = 1.0; +int gi_unused_192 = 1; +double g_ibuf_196[]; +double g_ibuf_200[]; +double g_ibuf_204[]; +double g_ibuf_208[]; +double g_ibuf_212[]; +double g_ibuf_216[]; +double g_ibuf_220[]; +double g_ibuf_224[]; +bool gi_unused_228 = FALSE; +bool gi_unused_232 = FALSE; +int gi_236; +int gi_240; +int g_datetime_244; +int g_datetime_248; +int gi_252 = 0; +int gi_256 = 0; + +int init() { + string ls_unused_0; + ObjectDelete("B_Bell"); + gi_236 = 0; + gi_240 = 0; + IndicatorBuffers(8); + SetIndexBuffer(0, g_ibuf_196); + SetIndexBuffer(1, g_ibuf_200); + SetIndexBuffer(2, g_ibuf_204); + SetIndexBuffer(3, g_ibuf_208); + SetIndexBuffer(4, g_ibuf_212); + SetIndexBuffer(5, g_ibuf_216); + SetIndexBuffer(6, g_ibuf_220); + SetIndexBuffer(7, g_ibuf_224); + SetIndexEmptyValue(0, 0); + SetIndexEmptyValue(1, 0); + SetIndexEmptyValue(2, 0); + SetIndexEmptyValue(3, 0); + SetIndexEmptyValue(4, 0); + SetIndexEmptyValue(5, 0); + SetIndexEmptyValue(6, 0); + SetIndexEmptyValue(7, 0); + SetIndexStyle(0, DRAW_LINE, STYLE_SOLID); + SetIndexStyle(1, DRAW_LINE, STYLE_SOLID); + SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID); + SetIndexArrow(2, 159); + SetIndexLabel(0, "UpTrend Stop"); + SetIndexLabel(1, "DownTrend Stop"); + SetIndexLabel(2, "UpTrend Signal"); + SetIndexLabel(3, "DownTrend Signal"); + return (0); +} + +int deinit() { + ObjectDelete("B_Bell"); + return (0); +} + +void start() { + double l_icustom_12; + double l_icustom_20; + int li_0 = Bars - IndicatorCounted(); + li_0 = MathMin(Bars - MathMax(AAB_MAPeriod, MathMax(AAB_STDPeriod, AAB_ATRPeriod)) - 10.0, li_0); + if (Nbars > 0) { + SetIndexDrawBegin(0, Bars - Nbars); + SetIndexDrawBegin(1, Bars - Nbars); + SetIndexDrawBegin(2, Bars - Nbars); + SetIndexDrawBegin(3, Bars - Nbars); + SetIndexDrawBegin(4, Bars - Nbars); + SetIndexDrawBegin(5, Bars - Nbars); + } + for (int li_8 = li_0 - 1; li_8 >= 0; li_8--) { + l_icustom_12 = iCustom(NULL, 0, "#Pallada_AllAveragesBands", AAB_Price, AAB_MAPeriod, AAB_MAShift, AAB_MAMethod, AAB_BandsType, AAB_STDPeriod, AAB_STDUseMAPeriod, AAB_STDDevations, AAB_ENVDevations, AAB_ATRPeriod, AAB_ATRUseMAPeriod, AAB_ATRDevations, AAB_NLMADeviation, AAB_NLMAPctFilter, 1, li_8); + l_icustom_20 = iCustom(NULL, 0, "#Pallada_AllAveragesBands", AAB_Price, AAB_MAPeriod, AAB_MAShift, AAB_MAMethod, AAB_BandsType, AAB_STDPeriod, AAB_STDUseMAPeriod, AAB_STDDevations, AAB_ENVDevations, AAB_ATRPeriod, AAB_ATRUseMAPeriod, AAB_ATRDevations, AAB_NLMADeviation, AAB_NLMAPctFilter, 2, li_8); + g_ibuf_196[li_8] = 0; + g_ibuf_200[li_8] = 0; + g_ibuf_204[li_8] = 0; + g_ibuf_208[li_8] = g_ibuf_208[li_8 + 1]; + g_ibuf_220[li_8] = l_icustom_12; + g_ibuf_224[li_8] = l_icustom_20; + if (Close[li_8] > g_ibuf_220[li_8 + 1]) g_ibuf_208[li_8] = 1; + if (Close[li_8] < g_ibuf_224[li_8 + 1]) g_ibuf_208[li_8] = -1; + if (g_ibuf_208[li_8] > 0.0 && g_ibuf_224[li_8] < g_ibuf_224[li_8 + 1]) g_ibuf_224[li_8] = g_ibuf_224[li_8 + 1]; + if (g_ibuf_208[li_8] < 0.0 && g_ibuf_220[li_8] > g_ibuf_220[li_8 + 1]) g_ibuf_220[li_8] = g_ibuf_220[li_8 + 1]; + g_ibuf_212[li_8] = g_ibuf_220[li_8] + (gd_184 - 1.0) / 2.0 * (g_ibuf_220[li_8] - g_ibuf_224[li_8]); + g_ibuf_216[li_8] = g_ibuf_224[li_8] - (gd_184 - 1.0) / 2.0 * (g_ibuf_220[li_8] - g_ibuf_224[li_8]); + if (g_ibuf_208[li_8] > 0.0 && g_ibuf_216[li_8] < g_ibuf_216[li_8 + 1]) g_ibuf_216[li_8] = g_ibuf_216[li_8 + 1]; + if (g_ibuf_208[li_8] < 0.0 && g_ibuf_212[li_8] > g_ibuf_212[li_8 + 1]) g_ibuf_212[li_8] = g_ibuf_212[li_8 + 1]; + if (g_ibuf_208[li_8] > 0.0) { + g_ibuf_196[li_8] = g_ibuf_216[li_8]; + g_ibuf_200[li_8] = 0; + } + if (g_ibuf_208[li_8] < 0.0) { + g_ibuf_200[li_8] = g_ibuf_212[li_8]; + g_ibuf_196[li_8] = 0; + } + g_ibuf_204[li_8] = 0; + if (g_ibuf_200[li_8] != 0.0 && g_ibuf_200[li_8 + 1] == 0.0) g_ibuf_204[li_8] = g_ibuf_200[li_8]; + if (g_ibuf_196[li_8] != 0.0 && g_ibuf_196[li_8 + 1] == 0.0) g_ibuf_204[li_8] = g_ibuf_196[li_8]; + } + int li_28 = 1; + if (g_ibuf_196[li_28] != 0.0 && g_ibuf_196[li_28 + 1] == 0.0) { + if (Time[0] != gi_252) { + gi_252 = Time[0]; + if (EmailON) SendMail("B_Sig(" + Symbol() + " " + fTimeFrameName(Period()) + ")", "Bands going Up"); + if (SoundON || AlertON) { + fObjLabel("B_Bell", 100, 100, StringSetChar("", 0, '%'), 3, Red, 16, 0, "Wingdings", FALSE); + if (EndLessRepeat) gi_236 = 1; + else gi_236 = AlertRepeat; + g_datetime_244 = 0; + gi_240 = 0; + } + } + } + if (g_ibuf_200[li_28] != 0.0 && g_ibuf_200[li_28 + 1] == 0.0) { + if (Time[0] != gi_256) { + gi_256 = Time[0]; + if (EmailON) SendMail("B_Sig(" + Symbol() + " " + fTimeFrameName(Period()) + ")", "Bands going Down"); + if (SoundON || AlertON) { + fObjLabel("B_Bell", 100, 100, StringSetChar("", 0, '%'), 3, Red, 16, 0, "Wingdings", FALSE); + if (EndLessRepeat) gi_240 = 1; + else gi_240 = AlertRepeat; + g_datetime_248 = 0; + gi_236 = 0; + } + } + } + if (ObjectFind("B_Bell") == 0) { + if (gi_236 > 0) { + if (TimeLocal() > g_datetime_244 + 1) { + if (!EndLessRepeat) gi_236--; + g_datetime_244 = TimeLocal(); + if (AlertON) Alert("B_Sig(" + Symbol() + " " + fTimeFrameName(Period()) + "): Bands going UP"); + if (SoundON) { + Print("B_Sig(" + Symbol() + " " + fTimeFrameName(Period()) + "): Bands going UP"); + PlaySound(SoundFile); + } + } + } + if (gi_240 > 0) { + if (TimeLocal() > g_datetime_248 + 1) { + if (!EndLessRepeat) gi_240--; + g_datetime_248 = TimeLocal(); + if (AlertON) Alert("B_Sig(" + Symbol() + " " + fTimeFrameName(Period()) + "): Bands going DOWN"); + if (SoundON) { + Print("B_Sig(" + Symbol() + " " + fTimeFrameName(Period()) + "): Bands going DOWN"); + PlaySound(SoundFile); + } + } + } + } + if (gi_240 <= 0 && gi_236 <= 0) ObjectDelete("B_Bell"); +} + +string fTimeFrameName(int ai_0) { + int l_timeframe_4; + if (ai_0 == 0) l_timeframe_4 = Period(); + else l_timeframe_4 = ai_0; + switch (l_timeframe_4) { + case 0: + return ("0"); + case PERIOD_M1: + return ("M1"); + case PERIOD_M5: + return ("M5"); + case PERIOD_M15: + return ("M15"); + case PERIOD_M30: + return ("M30"); + case PERIOD_H1: + return ("H1"); + case PERIOD_H4: + return ("H4"); + case PERIOD_D1: + return ("D1"); + case PERIOD_W1: + return ("W1"); + case PERIOD_MN1: + return ("MN1"); + } + return ("Wrong TimeFrame"); +} + +void fObjLabel(string a_name_0, int a_x_8, int a_y_12, string a_text_16, int a_corner_24 = 0, color a_color_28 = 255, int a_fontsize_32 = 8, int a_window_36 = 0, string a_fontname_40 = "Arial", bool a_bool_48 = FALSE) { + if (ObjectFind(a_name_0) != a_window_36) ObjectCreate(a_name_0, OBJ_LABEL, a_window_36, 0, 0); + ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8); + ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_12); + ObjectSetText(a_name_0, a_text_16, a_fontsize_32, a_fontname_40, a_color_28); + ObjectSet(a_name_0, OBJPROP_BACK, a_bool_48); + ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_24); +} \ No newline at end of file diff --git a/#Pallada_Volatility.mq4 b/#Pallada_Volatility.mq4 new file mode 100644 index 0000000..56c200c --- /dev/null +++ b/#Pallada_Volatility.mq4 @@ -0,0 +1,105 @@ + +#property copyright "Copyright © 2009, TradeWays" +#property link "http://www.tradeways.org" + +#property indicator_chart_window +#property indicator_buffers 1 +#property indicator_color1 Black + +extern int PosX = 10; +extern int PosY = 15; +extern int Corner = 1; +extern int N = 20; +string gs_92 = "1"; +double g_ibuf_100[]; +double g_ibuf_104[]; +double g_ibuf_108[]; +double g_ibuf_112[]; +double g_ibuf_116[]; +double g_ibuf_120[]; + +int init() { + IndicatorBuffers(6); + SetIndexBuffer(0, g_ibuf_100); + SetIndexBuffer(1, g_ibuf_104); + SetIndexBuffer(2, g_ibuf_108); + SetIndexBuffer(3, g_ibuf_112); + SetIndexBuffer(4, g_ibuf_116); + SetIndexBuffer(5, g_ibuf_120); + return (0); +} + +int deinit() { + fObjDeleteByPrefix("HHL_Semafor_" + gs_92); + return (0); +} + +int start() { + double l_high_8; + double l_low_16; + //if (TimeCurrent() > StrToTime("2050.04.20")) { + // Alert("New version available! Download it using re-activated link from Plimus"); + // return; + //} + int li_0 = Bars - IndicatorCounted(); + for (int li_4 = li_0 - 1; li_4 >= 0; li_4--) { + l_high_8 = High[iHighest(Symbol(), 0, MODE_HIGH, N, li_4)]; + l_low_16 = Low[iLowest(Symbol(), 0, MODE_LOW, N, li_4)]; + g_ibuf_100[li_4] = (l_high_8 - l_low_16) / Point; + g_ibuf_104[li_4] = EMPTY_VALUE; + g_ibuf_108[li_4] = EMPTY_VALUE; + g_ibuf_112[li_4] = EMPTY_VALUE; + if (g_ibuf_104[li_4 + 1] != EMPTY_VALUE) g_ibuf_104[li_4] = g_ibuf_100[li_4]; + if (g_ibuf_108[li_4 + 1] != EMPTY_VALUE) g_ibuf_108[li_4] = g_ibuf_100[li_4]; + if (g_ibuf_112[li_4 + 1] != EMPTY_VALUE) g_ibuf_112[li_4] = g_ibuf_100[li_4]; + g_ibuf_116[li_4] = g_ibuf_116[li_4 + 1]; + if (g_ibuf_100[li_4 + 1] > g_ibuf_100[li_4]) + if (g_ibuf_100[li_4 + 2] <= g_ibuf_100[li_4 + 1]) g_ibuf_116[li_4] = g_ibuf_100[li_4 + 1]; + if (g_ibuf_100[li_4 + 1] > g_ibuf_100[li_4]) { + g_ibuf_104[li_4] = g_ibuf_100[li_4]; + g_ibuf_108[li_4] = EMPTY_VALUE; + g_ibuf_112[li_4] = EMPTY_VALUE; + } + if (g_ibuf_100[li_4 + 1] < g_ibuf_100[li_4]) { + if (g_ibuf_116[li_4] < g_ibuf_100[li_4]) { + g_ibuf_104[li_4] = EMPTY_VALUE; + g_ibuf_108[li_4] = EMPTY_VALUE; + g_ibuf_112[li_4] = g_ibuf_100[li_4]; + } else { + g_ibuf_104[li_4] = EMPTY_VALUE; + g_ibuf_108[li_4] = g_ibuf_100[li_4]; + g_ibuf_112[li_4] = EMPTY_VALUE; + } + } + } + if (Corner < 2) { + fObjLabel("HHL_Semafor_" + gs_92 + "_Red", PosX, PosY, StringSetChar("", 0, 'l'), Corner, Gray, 16, 0, "Wingdings", FALSE); + fObjLabel("HHL_Semafor_" + gs_92 + "_Yellow", PosX, PosY + 15, StringSetChar("", 0, 'l'), Corner, Gray, 16, 0, "Wingdings", FALSE); + fObjLabel("HHL_Semafor_" + gs_92 + "_Green", PosX, PosY + 30, StringSetChar("", 0, 'l'), Corner, Gray, 16, 0, "Wingdings", FALSE); + if (g_ibuf_104[0] != EMPTY_VALUE) fObjLabel("HHL_Semafor_" + gs_92 + "_Red", PosX, PosY, StringSetChar("", 0, 'l'), Corner, Red, 16, 0, "Wingdings", FALSE); + if (g_ibuf_108[0] != EMPTY_VALUE) fObjLabel("HHL_Semafor_" + gs_92 + "_Yellow", PosX, PosY + 15, StringSetChar("", 0, 'l'), Corner, Yellow, 16, 0, "Wingdings", FALSE); + if (g_ibuf_112[0] != EMPTY_VALUE) fObjLabel("HHL_Semafor_" + gs_92 + "_Green", PosX, PosY + 30, StringSetChar("", 0, 'l'), Corner, Lime, 16, 0, "Wingdings", FALSE); + } else { + fObjLabel("HHL_Semafor_" + gs_92 + "_Red", PosX, PosY + 30, StringSetChar("", 0, 'l'), Corner, Gray, 16, 0, "Wingdings", FALSE); + fObjLabel("HHL_Semafor_" + gs_92 + "_Yellow", PosX, PosY + 15, StringSetChar("", 0, 'l'), Corner, Gray, 16, 0, "Wingdings", FALSE); + fObjLabel("HHL_Semafor_" + gs_92 + "_Green", PosX, PosY, StringSetChar("", 0, 'l'), Corner, Gray, 16, 0, "Wingdings", FALSE); + if (g_ibuf_104[0] != EMPTY_VALUE) fObjLabel("HHL_Semafor_" + gs_92 + "_Red", PosX, PosY + 30, StringSetChar("", 0, 'l'), Corner, Red, 16, 0, "Wingdings", FALSE); + if (g_ibuf_108[0] != EMPTY_VALUE) fObjLabel("HHL_Semafor_" + gs_92 + "_Yellow", PosX, PosY + 15, StringSetChar("", 0, 'l'), Corner, Yellow, 16, 0, "Wingdings", FALSE); + if (g_ibuf_112[0] != EMPTY_VALUE) fObjLabel("HHL_Semafor_" + gs_92 + "_Green", PosX, PosY, StringSetChar("", 0, 'l'), Corner, Lime, 16, 0, "Wingdings", FALSE); + } + return (0); +} + +void fObjLabel(string a_name_0, int a_x_8, int a_y_12, string a_text_16, int a_corner_24 = 0, color a_color_28 = 255, int a_fontsize_32 = 8, int a_window_36 = 0, string a_fontname_40 = "Arial", bool a_bool_48 = FALSE) { + if (ObjectFind(a_name_0) != a_window_36) ObjectCreate(a_name_0, OBJ_LABEL, a_window_36, 0, 0); + ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8); + ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_12); + ObjectSetText(a_name_0, a_text_16, a_fontsize_32, a_fontname_40, a_color_28); + ObjectSet(a_name_0, OBJPROP_BACK, a_bool_48); + ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_24); +} + +void fObjDeleteByPrefix(string as_0) { + for (int li_8 = ObjectsTotal() - 1; li_8 >= 0; li_8--) + if (StringFind(ObjectName(li_8), as_0, 0) == 0) ObjectDelete(ObjectName(li_8)); +} \ No newline at end of file diff --git a/00adx_close0test.mq4 b/00adx_close0test.mq4 new file mode 100644 index 0000000..d8b30b4 --- /dev/null +++ b/00adx_close0test.mq4 @@ -0,0 +1,132 @@ +//+------------------------------------------------------------------+ +//| ADX.mq4 | +//| Copyright © 2004, MetaQuotes Software Corp. | +//| http://www.metaquotes.net/ | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2004, MetaQuotes Software Corp." +#property link "http://www.metaquotes.net/" + +#property indicator_separate_window +#property indicator_buffers 3 +#property indicator_color1 LightSeaGreen +#property indicator_color2 YellowGreen +#property indicator_color3 Wheat +//---- input parameters +extern int ADXPeriod=14; +extern bool close0 = false; + +//---- buffers +double ADXBuffer[]; +double PlusDiBuffer[]; +double MinusDiBuffer[]; +double PlusSdiBuffer[]; +double MinusSdiBuffer[]; +double TempBuffer[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { +//---- 3 additional buffers are used for counting. + IndicatorBuffers(6); +//---- indicator buffers + SetIndexBuffer(0,ADXBuffer); + SetIndexBuffer(1,PlusDiBuffer); + SetIndexBuffer(2,MinusDiBuffer); + SetIndexBuffer(3,PlusSdiBuffer); + SetIndexBuffer(4,MinusSdiBuffer); + SetIndexBuffer(5,TempBuffer); +//---- name for DataWindow and indicator subwindow label + IndicatorShortName("ADX("+ADXPeriod+")"); + SetIndexLabel(0,"ADX"); + SetIndexLabel(1,"+DI"); + SetIndexLabel(2,"-DI"); +//---- + SetIndexDrawBegin(0,ADXPeriod); + SetIndexDrawBegin(1,ADXPeriod); + SetIndexDrawBegin(2,ADXPeriod); +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Average Directional Movement Index | +//+------------------------------------------------------------------+ +int start() + { + double pdm,mdm,tr; + double price_high,price_low; + int starti,i,counted_bars=IndicatorCounted(); +//---- + i=Bars-2; + PlusSdiBuffer[i+1]=0; + MinusSdiBuffer[i+1]=0; + if(counted_bars>=i) i=Bars-counted_bars-1; + starti=i; +//---- + while(i>=0) + { + price_low=Low[i]; + price_high=High[i]; + //---- + pdm=price_high-High[i+1]; + mdm=Low[i+1]-price_low; + if(pdm<0) pdm=0; // +DM + if(mdm<0) mdm=0; // -DM + if(pdm==mdm) { pdm=0; mdm=0; } + else if(pdm0) counted_bars--; + int limit=Bars-counted_bars; +//---- apply EMA to +DI + for(i=0; i<=limit; i++) + PlusDiBuffer[i]=iMAOnArray(PlusSdiBuffer,Bars,ADXPeriod,0,MODE_EMA,i); +//---- apply EMA to -DI + for(i=0; i<=limit; i++) + MinusDiBuffer[i]=iMAOnArray(MinusSdiBuffer,Bars,ADXPeriod,0,MODE_EMA,i); +//---- Directional Movement (DX) + i=Bars-2; + TempBuffer[i+1]=0; + i=starti; + while(i>=0) + { + double div=MathAbs(PlusDiBuffer[i]+MinusDiBuffer[i]); + if(div==0.00) TempBuffer[i]=0; + else TempBuffer[i]=100*(MathAbs(PlusDiBuffer[i]-MinusDiBuffer[i])/div); + i--; + } +//---- ADX is exponential moving average on DX + for(i=0; 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 literal 0 HcmV?d00001 diff --git a/ACD_PV.mq4 b/ACD_PV.mq4 new file mode 100644 index 0000000..6ec217e --- /dev/null +++ b/ACD_PV.mq4 @@ -0,0 +1,193 @@ +//+------------------------------------------------------------------+ +//| | +//| Copyright © 2000-2007, MetaQuotes Software Corp. | +//| http://www.metaquotes.ru | +//+------------------------------------------------------------------+ +/** +* ACD_2.mq4 +* Pivot Range and Previous High/Low +**/ +#property indicator_chart_window +#property indicator_buffers 8 +#property indicator_color1 Aqua +#property indicator_color2 Aqua +#property indicator_color3 Aqua +#property indicator_color4 White +#property indicator_color5 White +#property indicator_color6 Red +#property indicator_color7 Green +#property indicator_color8 Orchid +//Input Params +extern string PivotRangeStart="00:30"; +extern string PivotRangeEnd="00:30"; +extern bool DisplayPivotPoint=true; +extern bool DisplayPreviousHighLow=true; +extern bool DisplayMAs=false; +//---- +double Buffer1[]; +double Buffer2[]; +double Buffer3[]; +double Buffer4[]; +double Buffer5[]; +double Buffer6[]; +double Buffer7[]; +double Buffer8[]; +double pivots[50]; +//---- +double pivotRangeHigh; +double pivotRangeLow; +double pivotRangeClose; +double pivotPoint; +double pivotDiff; +double pivotTop=0; +double pivotBottom=0; +double pivot14MA; +double pivot30MA; +double pivot50MA; +//---- +int openBar; +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int init() + { + SetIndexStyle(0,DRAW_LINE, STYLE_DOT, 1); + SetIndexBuffer(0,Buffer1); + SetIndexLabel(0,"Pivot Point"); + SetIndexStyle(1,DRAW_LINE, STYLE_DASH, 1); + SetIndexBuffer(1,Buffer2); + SetIndexLabel(1,"Pivot Range Top"); + SetIndexStyle(2,DRAW_LINE, STYLE_DASH, 1); + SetIndexBuffer(2,Buffer3); + SetIndexLabel(2,"Pivot Range Bottom"); + SetIndexStyle(3,DRAW_LINE, STYLE_SOLID, 1); + SetIndexBuffer(3,Buffer4); + SetIndexLabel(3,"Previous Day High"); + SetIndexStyle(4,DRAW_LINE, STYLE_SOLID, 1); + SetIndexBuffer(4,Buffer5); + SetIndexLabel(4,"Previous Day Low"); + SetIndexStyle(5,DRAW_LINE); + SetIndexBuffer(5,Buffer6); + SetIndexLabel(5,"14 MA"); + SetIndexStyle(6,DRAW_LINE); + SetIndexBuffer(6,Buffer7); + SetIndexLabel(6,"30 MA"); + SetIndexStyle(7,DRAW_LINE); + SetIndexBuffer(7,Buffer8); + SetIndexLabel(7,"50 MA"); + return(0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int deinit() + { + return(0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int start() + { + string barTime="", lastBarTime=""; + string barDay="", lastBarDay=""; + int closeBar; +//---- + for(int i=Bars; i>=0; i--) + { + barTime=TimeToStr(Time[i], TIME_MINUTES); + lastBarTime=TimeToStr(Time[i+1], TIME_MINUTES); + barDay=TimeToStr(Time[i],TIME_DATE); + lastBarDay=TimeToStr(Time[i+1],TIME_DATE); + //need to handle if pivotrangestart/end is 00:00 + if ((PivotRangeEnd=="00:00" && barTime>=PivotRangeEnd && barDay>lastBarDay) || (barTime>=PivotRangeEnd && lastBarTime0) + { + calculatePivotRangeValues(openBar, closeBar); + } + } + if ((PivotRangeStart=="00:00" && barTime>=PivotRangeStart && barDay>lastBarDay) || (barTime>=PivotRangeStart && lastBarTime0) + { + drawIndicators(i); + } + } + return(0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void calculatePivotRangeValues(int openBar, int closeBar) + { + pivotRangeHigh=High[Highest(NULL, 0, MODE_HIGH, (openBar - closeBar + 1), closeBar)]; + pivotRangeLow=Low[Lowest(NULL, 0, MODE_LOW, (openBar - closeBar + 1), closeBar)]; + pivotRangeClose=Close[closeBar]; + pivotPoint=(pivotRangeHigh + pivotRangeLow + pivotRangeClose)/3; + pivotDiff=MathAbs(((pivotRangeHigh + pivotRangeLow)/2) - pivotPoint); + pivotTop=pivotPoint + pivotDiff; + pivotBottom=pivotPoint - pivotDiff; +//---- + if (DisplayMAs) calcPivotMA(); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void calcPivotMA() + { + //create temp array + double pivs[50]; + //load new pivot + ArrayCopy(pivs,pivots,1,0,49); + pivs[0]=pivotPoint; + ArrayCopy(pivots, pivs, 0, 0, WHOLE_ARRAY); + //calcMA + double pivSum=0; + int count=ArraySize(pivots); + if (count>=14) + { + for(int p=0; p9.0170,1=>14.5898,2=>23.6068,3=>38.1966,4=>50.0000,5=>61.8034,Null +extern int GoldenRatioPwr;//default=8 +extern int ADXPr;//default = 50 (1-100) +extern int ADXtype;//0=ADX, 1=ADXR +//---- buffers +double FIMA[]; +double FIMA_Osc[]; +double StdFIMA[]; +double AdjFIMA[]; +double B1[]; +double B2[]; +double B3[]; +double B4[]; +double ADX[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { +//---- indicators + IndicatorBuffers(8); + SetIndexStyle(0,DRAW_LINE, STYLE_DOT); + SetIndexBuffer(0,FIMA); + SetIndexLabel(0,"FIMA"); + + SetIndexStyle(1,DRAW_LINE); + SetIndexBuffer(1,FIMA_Osc); + SetIndexLabel(1,"FIMA_Osc"); + + SetIndexStyle(2,DRAW_LINE); + SetIndexBuffer(2,StdFIMA); + SetIndexLabel(2,"StdFIMA"); + + SetIndexStyle(3,DRAW_LINE); + SetIndexBuffer(3,B1); + SetIndexLabel(3,"B1"); + + SetIndexStyle(4,DRAW_LINE); + SetIndexBuffer(4,B2); + SetIndexLabel(4,"B2"); + + SetIndexStyle(5,DRAW_LINE); + SetIndexBuffer(5,B3); + SetIndexLabel(5,"B3"); + + SetIndexStyle(6,DRAW_LINE); + SetIndexBuffer(6,B4); + SetIndexLabel(6,"B4"); + SetIndexStyle(7,DRAW_LINE); + SetIndexBuffer(7,ADX); +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Custor indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int start() + { + int i,p; + int counted_bars = IndicatorCounted(); +//---- + + /* + double TR; + double TH; + double TL; + double PlusDM, PlusDI, MinusDM, MinusDI, DIDif, DISum; + */ + double FMA; + double ADXFinal; + double ADXRCustom; + double EmaIndex, Diff, MyConst; + double Hhv, Llv; + + double GoldenRatio, GoldVal,FBase,F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13; + + + //test default vals + FiboMA = 2; + GoldenRatio = 1;//=8; + ADXPr = 23;//50; + ADXtype = 0; +// + + if ( ADXPr<1 || ADXPr >100) {ADXPr =50;} //default = 50 (1-100) + + //calc FMA to use + switch (FiboMA) + { + case 0: FMA = 9.0170; break; + case 1: FMA = 14.5898; break; + case 2: FMA = 23.6068; break; + case 3: FMA = 38.1966; break; + case 4: FMA = 50.0000; break; + case 5: FMA = 61.8034; break; + default: FMA = 23.6068; break; + } + + //Calculate & Plot Tushar Chande style Fibonacci Based Moving Average Using Wilders ADX} + i=Bars; + //if (counted_bars>=i) {i=Bars-counted_bars-1;} + while (i>=0) + { + + ADXFinal = iADX(NULL,0,ADXPr,PRICE_CLOSE,MODE_MAIN,i); + ADXRCustom = ( ADXFinal + iADX(NULL,0,ADXPr,PRICE_CLOSE,MODE_MAIN,(i+ADXPr-1)) )/2; + if ( ADXtype == 0 ) { ADX[i] = ADXFinal; } else { ADX[i] = ADXRCustom;} + if ( FMA>0) { EmaIndex = (2/(1+FMA)); } else {EmaIndex = 0.20;} + + //get Hhv(_ADX, ADXPr) and Llv(_ADX, ADXPr) - substituted for VT Hhv and Llv functions + Hhv = ADX[i]; + Llv = ADX[i]; + for(p=i; p < (i+ADXPr) ; p++) + { + if (ADX[p]>Hhv) {Hhv = ADX[p];} + if (ADX[p] 0) {MyConst = (ADX[i] - Llv)/Diff;} else {MyConst = EmaIndex;} + if ( MyConst > EmaIndex) {MyConst = EmaIndex;} + //if (IndicatorCounted() < ADXPr+(ADXPr*1.5)) + if (Bars < ADXPr+(ADXPr*1.5)) + { + FIMA[i] = Close[i]; + } + else + { + //sub for VT expression, subst simple average for 2 period MA + //FIMA[i] = MOV( (((1 - MyConst) * Ref(FIMA,-1)) + (MyConst * Close)),2,s)); + FIMA[i] = ( (1-MyConst)*FIMA[i+1]+MyConst*Close[i] + (1-MyConst)*FIMA[i+2]+MyConst*Close[i+1] )/2; + } + FIMA_Osc[i] = iMAOnArray(FIMA, 0, FMA*0.236068 , 0,MODE_LWMA,i); + StdFIMA[i] = iMA(NULL,0,FMA,0,MODE_EMA,PRICE_CLOSE,i); + + //{Control the distance from Price to F Lines} + if (GoldenRatioPwr <=0) {GoldenRatioPwr=8;}//default=8 + GoldenRatio = MathPow(1.618034 ,GoldenRatioPwr ); + GoldVal = 1.618034; + FBase = 0.1919/2; + F0 = FBase * GoldenRatio; + + F1 = F0*GoldVal;F2 = F1*GoldVal;F3 = F2*GoldVal;F4 = F3*GoldVal; + F5 = F4*GoldVal;F6 = F5*GoldVal;F7 = F6*GoldVal;F8 = F7*GoldVal; + F9 = F8*GoldVal;F10 = F9*GoldVal;F11 = F10*GoldVal;F12 = F11*GoldVal; + F13 = F12*GoldVal; + + if (Close[i]>=FIMA[i]) + { + B1[i] = FIMA[i]+(FIMA[i]*(FMA*(F1/100000))); + B2[i] = FIMA[i]+(FIMA[i]*(FMA*(F2/100000))); + B3[i] = FIMA[i]+(FIMA[i]*(FMA*(F3/100000))); + B4[i] = FIMA[i]+(FIMA[i]*(FMA*(F4/100000))); + } + else + { + B1[i] = FIMA[i]-(FIMA[i]*(FMA*(F1/100000))); + B2[i] = FIMA[i]-(FIMA[i]*(FMA*(F2/100000))); + B3[i] = FIMA[i]-(FIMA[i]*(FMA*(F3/100000))); + B4[i] = FIMA[i]-(FIMA[i]*(FMA*(F4/100000))); + } + i--; + } + +//---- + return(0); + } + +//+------------------------------------------------------------------+ \ No newline at end of file diff --git a/ADX Filter sBarM mtf.mq4 b/ADX Filter sBarM mtf.mq4 new file mode 100644 index 0000000..d9ebefe --- /dev/null +++ b/ADX Filter sBarM mtf.mq4 @@ -0,0 +1,176 @@ +//+------------------------------------------------------------------+ +//| ADX Filter SideBar based on SAR Color Bar.mq4| +//+------------------------------------------------------------------+ +//2008fxtsd ki +//mod adx & +-di separate sett + +#property copyright "Kalenzo Code adapted by cja" +#property link "http://www.foreksik.prv.pl" + +#property indicator_color1 Green +#property indicator_color2 Red +#property indicator_color3 Yellow +#property indicator_color4 Lime +#property indicator_color5 Orchid + +#property indicator_width1 3 +#property indicator_width2 3 +#property indicator_width3 3 +#property indicator_width4 4 +#property indicator_width5 4 + +#property indicator_separate_window +#property indicator_buffers 5 +#property indicator_maximum 77 +#property indicator_minimum 1 + +double ADX_buff[],ADX_Up[],ADX_Dn[],PADX_buff[],NADX_buff[];//buffers + +extern int TimeFrame = 0; + +extern int ADX_Period = 14; +extern int ADX_Level = 20; +extern int DI_Period = 21; +extern int applied_price = 0; + +extern int sBarLevel = 5; + +extern bool _ADXstyleLine = false; +extern bool pADXstyleLine = false; +extern bool nADXstyleLine = true; + +extern int MaxBarsToCount = 1500; + +extern string note_sBarLevel = "sBarLevel:1-77(bar position)"; +extern string note_ADXstyle = " ADXstyle: Line/Dot"; +extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN"; + + +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { +//---- indicators + SetIndexBuffer(0,PADX_buff); + SetIndexStyle (0,DRAW_ARROW); + SetIndexArrow (0,167);//110 + SetIndexEmptyValue (0,EMPTY_VALUE); + + SetIndexBuffer(1,NADX_buff); + SetIndexStyle (1,DRAW_ARROW); + SetIndexArrow (1,167); + SetIndexEmptyValue (1,EMPTY_VALUE); + + + if (_ADXstyleLine) SetIndexStyle(2,DRAW_LINE); + else {SetIndexStyle (2,DRAW_ARROW); + SetIndexArrow (2,158); + SetIndexEmptyValue (2,EMPTY_VALUE);} + SetIndexBuffer(2,ADX_buff); + + if (pADXstyleLine) SetIndexStyle(3,DRAW_LINE); + else { SetIndexStyle (3,DRAW_ARROW); + SetIndexArrow (3,158); + SetIndexEmptyValue (3,EMPTY_VALUE);} + SetIndexBuffer(3,ADX_Up); + + if (nADXstyleLine) SetIndexStyle(4,DRAW_LINE); + else {SetIndexStyle (4,DRAW_ARROW); + SetIndexArrow (4,158); + SetIndexEmptyValue (4,EMPTY_VALUE);} + SetIndexBuffer(4,ADX_Dn); + + + + switch(TimeFrame) + { + case 1 : string TimeFrameStr="M1"; break; + case 5 : TimeFrameStr="M5"; break; + case 15 : TimeFrameStr="M15"; break; + case 30 : TimeFrameStr="M30"; break; + case 60 : TimeFrameStr="H1"; break; + case 240 : TimeFrameStr="H4"; break; + case 1440 : TimeFrameStr="D1"; break; + case 10080 : TimeFrameStr="W1"; break; + case 43200 : TimeFrameStr="MN"; break; + default : TimeFrameStr="TF0"; + } + TimeFrame = MathMax(TimeFrame, Period()); + + IndicatorShortName("ADX("+ADX_Period+")+-DI("+DI_Period+") Filter sBar["+TimeFrameStr+"]"); + + SetIndexLabel(0,"posDI ["+TimeFrame+"]Up"); + SetIndexLabel(1,"negDI ["+TimeFrame+"]Down"); + SetIndexLabel(2,"ADX ["+TimeFrame+"] Level < "+ADX_Level+""); + SetIndexLabel(3,"ADX ["+TimeFrame+"] Up"); + SetIndexLabel(4,"ADX ["+TimeFrame+"] Down"); + + SetIndexDrawBegin(0,2); + SetIndexDrawBegin(1,2); + SetIndexDrawBegin(2,2); + SetIndexDrawBegin(3,2); + SetIndexDrawBegin(4,2); + + return(0); + } + +//+--- +int deinit() + { + return(0); + } +//+------- + + +int start() + { + + int i,y,limit; + datetime TimeArray[]; + ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); + + int counted_bars=IndicatorCounted(); + if(counted_bars<0) return(-1); + if(counted_bars>0) counted_bars--; + + limit=Bars-counted_bars; + limit = MathMax (limit,TimeFrame/Period()); + limit = MathMin (limit,MaxBarsToCount); + + + + for(i =0, y=0; iADX1) + { + ADX_Up[i] = sBarLevel; + ADX_Dn[i] = EMPTY_VALUE; + } + else + { + ADX_Up[i] = EMPTY_VALUE; + ADX_Dn[i] = sBarLevel; + } + + if(ADX < ADX_Level) ADX_buff[i]= sBarLevel+5; + if(PADX > NADX) PADX_buff[i]=sBarLevel+2; + if(PADX < NADX) NADX_buff[i]=sBarLevel+2; + + } + + return(0); + } + +//+------------------------------------------------------------- \ No newline at end of file diff --git a/ADX_Crossing_v_2_0.mq4 b/ADX_Crossing_v_2_0.mq4 new file mode 100644 index 0000000..171339d --- /dev/null +++ b/ADX_Crossing_v_2_0.mq4 @@ -0,0 +1,86 @@ +//+------------------------------------------------------------------+ +//| ADX Crossing.mq4 +//| Amir +//+------------------------------------------------------------------+ +#property copyright "Author - Amir" +//---- +#property indicator_chart_window +#property indicator_buffers 2 +#property indicator_color1 Lime +#property indicator_color2 Red +//---- input parameters +extern int ADXbars=50; +extern int CountBars=350; +extern bool UseSound=True; +extern string SoundFile="wait.waw"; +//---- buffers +double val1[]; +double val2[]; +double b4plusdi,nowplusdi,b4minusdi,nowminusdi; +bool SoundBuy=False; +bool SoundSell=False; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { + string short_name; +//---- indicator line + IndicatorBuffers(2); + SetIndexStyle(0,DRAW_ARROW); + SetIndexArrow(0,108); + SetIndexStyle(1,DRAW_ARROW); + SetIndexArrow(1,108); + SetIndexBuffer(0,val1); + SetIndexBuffer(1,val2); +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| AltrTrend_Signal_v2_2 | +//+------------------------------------------------------------------+ +int start() + { + if (CountBars>=Bars) CountBars=Bars; + SetIndexDrawBegin(0,Bars-CountBars); + SetIndexDrawBegin(1,Bars-CountBars); + int i,shift,limit,CountedBars=IndicatorCounted(); + if (CountedBars < 1) + { + for(i=0; i<=CountBars; i++) {val1[i]=0.0; val2[i]=0.0;} + } + + if(CountedBars > 0) CountedBars--; +//---- + limit=Bars - CountedBars; +//---- + for(shift=limit; shift>=0; shift--) + { + b4plusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift+1); + nowplusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_PLUSDI,shift); + b4minusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift+1); + nowminusdi=iADX(NULL,0,ADXbars,PRICE_CLOSE,MODE_MINUSDI,shift); + if (b4plusdinowminusdi) + { + val1[shift]=Low[shift]-5*Point; + } + if (b4plusdi>b4minusdi && nowplusdi0) counted_bars--; + int limit=Bars-counted_bars; + if(counted_bars==0) limit-=1+ADXPeriod; +//----Calculation--------------------------- + for(i=0; inowplusdi) + { + ind_buffer2[i]=Low[i]; + ind_buffer1[i]=High[i]; + } + if(nowplusdi>nowminusdi) + { + ind_buffer1[i]=Low[i]; + ind_buffer2[i]=High[i]; + } + } +//---- done + return(0); + } +//+------------------------------------------------------------------+ diff --git a/Advanced_ADX.mq4 b/Advanced_ADX.mq4 new file mode 100644 index 0000000..7beda87 --- /dev/null +++ b/Advanced_ADX.mq4 @@ -0,0 +1,66 @@ +//+------------------------------------------------------------------+ +//| Advanced_ADX.mq4 | +//| Copyright © 2006, Eng. Waddah Attar | +//| waddahattar@hotmail.com | +//+------------------------------------------------------------------+ +#property copyright "Waddah Attar" +#property link "waddahattar@hotmail.com" +//---- +#property indicator_separate_window +#property indicator_buffers 2 +#property indicator_color1 Green +#property indicator_color2 Red +//---- +extern int ADXPeriod = 13; +//---- +double ExtBuffer1[]; +double ExtBuffer2[]; +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int init() + { + SetIndexBuffer(0, ExtBuffer1); + SetIndexStyle(0, DRAW_HISTOGRAM, 0, 2); +//---- + SetIndexBuffer(1, ExtBuffer2); + SetIndexStyle(1, DRAW_HISTOGRAM, 0, 2); +//---- + IndicatorShortName("Advanced_ADX (" + ADXPeriod + ")"); + return(0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int start() + { + int i, limit; + double ADX0,ADX1,ADX2; + int counted_bars = IndicatorCounted(); + if(counted_bars < 0) + return(-1); + if(counted_bars > 0) + counted_bars--; + limit = Bars - counted_bars; +//---- + for(i = 0; i < limit ; i++) + { + ADX0 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MAIN, i); + ADX1 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_PLUSDI, i); + ADX2 = iADX(NULL, 0, ADXPeriod, PRICE_CLOSE, MODE_MINUSDI, i); + //---- + if(ADX1 >= ADX2) + { + ExtBuffer1[i] = ADX0; + ExtBuffer2[i] = 0; + } + else + { + ExtBuffer1[i] = 0; + ExtBuffer2[i] = ADX0; + } + } + return(0); + } +//+------------------------------------------------------------------+ + diff --git a/AlphaTrendSpotter_free.mq4 b/AlphaTrendSpotter_free.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..d4df778edd41b117dffcc768399908925662ca85 GIT binary patch literal 8688 zcmdT|`%hv=6h1#U>Hly;6N3?yhfSI;nz(A#O?*Y%nx<(83MyFyD_ClG_g`=OeRJ+O zb6>oKgyseq=FU0iJC8Z%%>4V$mTbv}6j$KckniO?pxKhI5-jQ2lde3XJ~vI;t#N!X2C&k zbq%I6w0@6q6S{n!lSc(SK0v27p5B~1s^D<}`qrHE%qC~Xu08De_Do#5SkFl48gI1V znR{?ki!xVg<_?Uf9$|Op6YIqX&}mj17@70}J#W`>%=Pi-1QtIBEu*Lpt;@25?DQ^N zN2!4vU=1@9_m{s`waen{OG-+ioN_2frCb3;8@^wpoC>5QWm7wqc?7+fnW>lVqxQmd ztWJ=9Z1&nX$w9=E^q#9^=Z2bo+d)lvXI9#5z{m^WZPvPx@$C+B$N@gO&eq=dk-f`V z?*C_00Y)PCqubkM`AvQg>9bc=rdm~ntvyH{Sc@h!Ng?TuaJm~}{t?}aO~7ruEsh%zew0DSKZ@&UN}|JK8O zp#Dix){#+IXNPhM#LUcj$lC+LI<(+8Ks2-KV@_^E3it6PXzKXSJVgESDVb{>bUE~n zIsDE}OH($py5!Liccrns+LP;4zNg z&nL>kpCP(&)U=J2UXDmV0>(P*cZTXuL??KAi0^aE{fhDS1kOH+JR+tL$$XUw)IP4t z5^<5YkF+`iuIdtTk++Y_S=;Sz))tK^c4tHE>nFr`9)3H;=MoWAmruy1`|#T#;))+X z8g!@rpR0iOW{b`JYEgc#eihg^_3s9rXOB;7ZcNp?8)L^423u&xdbUBS!L zPV4xHr-?W}o)FnpHz17_*hkPp_)M($%Zi=@HyoutNH&b?8 z#n{mWv2%e^+O@1p%Aq=uX7swYf;e(?qcM~Nqo-oiG3j(<>0G5LdOKSCLTjg5qMu>~ zjn<=5r0VGTOKpD(+dm;^S&wvJcgwkGGFj3y#qfmNkzK5&MVaT=@v&XD?Dd7Y?P#%@_lN{qI7{9Vg(}pMLl2~6G_;6hTUD5?=Fe`5Z-^X}g z$GBjS#(OeFYNKVGyc2lMzbjyrOqS11?t>f|>3;oJxi-p5&@x-oxa8?Hr`}g7a?@>{ zCBKYbb9)ARpTS0l@YG~$PnH>z;cmHw;Ps=A!}cxd&uT$>z_I@%tay>m2j_JLcL)|*fhVLSl(6c$}O9h+ikOP zbQVkEV@0$PG!0ijMplCvprSHC0V|EQ|cprVk+MImj zEbr4;UeWbB%bRY0?Z{Lq%3^JfzS|A!ZFH6twhpINH1%RyUE6>)c>5c-#5Z&{UGQXI ztyXc`*D~#*Z_?~i3-LLNS$>vVR3pnNIy;gY@X|8Xgk`LRB*lD|DP~$mt*PH}yXmZd zpQSUl19JChwzJqp6iw$d-sx&DV(*!KBs%te%-daE@9tn4@(VJ-F*=gN6t5?F@a}gu z9?8h@F*XR}Mjos6z9M=f;diGF0) + limit++; + for(int i=0; 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 + limit++; + for(int i=0; i + +#property indicator_separate_window +#property indicator_buffers 1 +#property indicator_color1 LightSeaGreen +#property indicator_level1 -100.0 +#property indicator_level2 100.0 +#property indicator_levelcolor clrSilver +#property indicator_levelstyle STYLE_DOT +//--- input parameter +input int InpCCIPeriod=14; // CCI Period +//--- buffers +double ExtCCIBuffer[]; +double ExtPriceBuffer[]; +double ExtMovBuffer[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int OnInit(void) + { + string short_name; +//--- 2 additional buffers are used for counting. + IndicatorBuffers(3); + SetIndexBuffer(1,ExtPriceBuffer); + SetIndexBuffer(2,ExtMovBuffer); +//--- indicator line + SetIndexStyle(0,DRAW_LINE); + SetIndexBuffer(0,ExtCCIBuffer); +//--- check for input parameter + if(InpCCIPeriod<=1) + { + Print("Wrong input parameter CCI Period=",InpCCIPeriod); + return(INIT_FAILED); + } +//--- + SetIndexDrawBegin(0,InpCCIPeriod); +//--- name for DataWindow and indicator subwindow label + short_name="CCI("+IntegerToString(InpCCIPeriod)+")"; + IndicatorShortName(short_name); + SetIndexLabel(0,short_name); +//--- initialization done + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Commodity Channel Index | +//+------------------------------------------------------------------+ +int OnCalculate(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[]) + { + int i,k,pos; + double dSum,dMul; +//--- + if(rates_total<=InpCCIPeriod || InpCCIPeriod<=1) + return(0); +//--- counting from 0 to rates_total + ArraySetAsSeries(ExtCCIBuffer,false); + ArraySetAsSeries(ExtPriceBuffer,false); + ArraySetAsSeries(ExtMovBuffer,false); + ArraySetAsSeries(high,false); + ArraySetAsSeries(low,false); + ArraySetAsSeries(close,false); +//--- initial zero + if(prev_calculated<1) + { + for(i=0; i. + * + * FILE: CHT_Value_Chart_v2.5.mq4 + * VERSION: 2.5 + * AUTHOR: Thierry Chappuis + * DESCRIPTION: + * MT4 Custom indicator that aims at calculating and displaying a value chart + * + * LOG: + * - 20121104: version 1.0 + * - 20121207: version 2.0, improvement of the display + * - 20121211: version 2.1, multiple timeframes version + * - 20121228: version 2.2, bug fix with vc_delete(). VC_Bars2Check has been added. + * - 20130110: version 2.3, add support for automatic vc support/resistance display + * - 20130110: version 2.3.1 bug fix in the value chart computation algorithm + * - 20130110: version 2.4, bug fixes with multiple timeframes functionalities + * - 20130122: version 2.5, integration of the alert system + * + * Copyright 2012-2013 Thierry Chappuis + */ + +#property copyright "Copyright 2012-2013, Thierry Chappuis" + +#property indicator_separate_window + +#property indicator_buffers 4 + +#property indicator_level1 6 +#property indicator_level2 8 +#property indicator_level3 -6 +#property indicator_level4 -8 +#property indicator_level5 10 +#property indicator_level6 -10 +#property indicator_level7 12 +#property indicator_level8 -12 + +#property indicator_levelstyle 2 +#property indicator_levelcolor DimGray + +#property indicator_maximum 15 +#property indicator_minimum -15 + +/* Input parameters */ +extern int VC_Period = 0; +extern int VC_NumBars = 5; +extern int VC_Bars2Check = 500; +extern bool VC_DisplayChart = true; +extern bool VC_UseDynamicSRLevels = true; +extern int VC_DynamicSRPeriod = 100; +extern double VC_DynamicSRCut = 0.02; +extern double VC_Overbought = 6; +extern double VC_Oversold = -6; +extern bool VC_AlertON = false; +extern double VC_AlertSRAnticipation = 1.0; + +extern color VC_UpColor = Lime; +extern color VC_DownColor = Red; +extern int VC_WickWidth = 1; +extern int VC_BodyWidth = 4; +extern color VC_ResistanceColor = Red; +extern color VC_SupportColor = Lime; + +int alert_confirmation_value = 1; + +/* Buffers */ +double vcHigh[]; +double vcLow[]; +double vcOpen[]; +double vcClose[]; + +/* Global variables */ +string indicator_short_name; +int bar_new_ID; + +/* Initialisation of the indicator */ +int init() +{ + indicator_short_name = "CHT_Value_Chart (" + VC_NumBars + "," + VC_Period + ")"; + + IndicatorShortName(indicator_short_name); + + SetIndexStyle(0, DRAW_NONE); + SetIndexStyle(1, DRAW_NONE); + SetIndexStyle(2, DRAW_NONE); + SetIndexStyle(3, DRAW_NONE); + SetIndexStyle(4, DRAW_NONE); + + SetIndexBuffer(0, vcHigh); + SetIndexBuffer(1, vcLow); + SetIndexBuffer(2, vcOpen); + SetIndexBuffer(3, vcClose); + + SetIndexEmptyValue(0, 0.0); + SetIndexEmptyValue(1, 0.0); + SetIndexEmptyValue(2, 0.0); + SetIndexEmptyValue(3, 0.0); + + // Value chart can only calculate data for TFs >= Period() + if (VC_Period != 0 && VC_Period < Period()) + { + VC_Period = 0; + } + + string name; + for (int i = ObjectsTotal() - 1; i >= 0; i--) + { + name = ObjectName(i); + string s = "CHT_VC_"; + + if (StringSubstr(name, 0, StringLen(s)) == s) + { + ObjectDelete(name); + } + } + + return (0); +} + +/* Entry point for the indicator action */ +int start() +{ + int bars; + int counted_bars = IndicatorCounted(); + static int pa_profile[]; + + double vc_support; + double vc_resistance; + int alert_signal = 0; + + ObjectDelete("CHT_VC_(" + VC_NumBars + "," + VC_Period + ")" + "_Support"); + ObjectDelete("CHT_VC_(" + VC_NumBars + "," + VC_Period + ")" + "_Resistance"); + + // The last counted bar is counted again + if(counted_bars > 0) + { + counted_bars--; + } + + bars = Bars - counted_bars; + + if (bars > VC_Bars2Check && VC_Bars2Check > 10) + { + bars = VC_Bars2Check; + } + + computes_value_chart(bars, VC_Period); + + computes_pa_profile(VC_Period, pa_profile, vc_support, vc_resistance); + + if (VC_DisplayChart== true) + { + dispays_value_chart(bars); + vc_displays_sr(vc_support, vc_resistance); + } + + if (VC_UseDynamicSRLevels == true) + { + VC_Overbought = vc_resistance - VC_AlertSRAnticipation; + VC_Oversold = vc_support + VC_AlertSRAnticipation; + } + + vc_check(vcClose[0], alert_signal); + + vc_alert_trigger(alert_signal, VC_AlertON); + + return(0); +} + +int deinit() +{ + vc_delete(); + Comment(""); + return (0); +} + +void computes_value_chart(int bars, int period) +{ + double sum; + double floatingAxis; + double volatilityUnit; + static datetime last_time; + + static double high; + static double low; + static double open; + static double close; + + for(int i = bars-1; i >= 0; i--) + { + datetime t = Time[i]; + int y = iBarShift(NULL, period, t); + int z = iBarShift(NULL, 0, iTime(NULL, period, y)); + + /* Determination of the floating axis */ + sum = 0; + for (int k = y; k < y+VC_NumBars; k++) + { + sum += (iHigh(NULL, period, k) + iLow(NULL, period, k)) / 2.0; + } + floatingAxis = sum / VC_NumBars; + + /* Determination of the volatility unit */ + sum = 0; + for (k = y; k < VC_NumBars + y; k++) + { + sum += iHigh(NULL, period, k) - iLow(NULL, period, k); + } + volatilityUnit = 0.2 * (sum / VC_NumBars); + + /* Determination of relative high, low, open and close values */ + vcHigh[i] = (iHigh(NULL, period, y) - floatingAxis) / volatilityUnit; + vcLow[i] = (iLow(NULL, period, y) - floatingAxis) / volatilityUnit; + vcOpen[i] = (iOpen(NULL, period, y) - floatingAxis) / volatilityUnit; + vcClose[i] = (iClose(NULL, period, y) - floatingAxis) / volatilityUnit; + } +} + +void dispays_value_chart(int bars) +{ + int window = WindowFind(indicator_short_name); + + string current_body_ID; + string current_wick_ID; + + for(int i = 0; i < bars; i++) + { + if (vcHigh[i] == 0.0 && vcOpen[i] == 0.0 && vcClose[i] == 0.0 && vcLow[i] == 0.0) + { + // Do nothing + } + else + { + current_body_ID = "CHT_VC_(" + VC_NumBars + "," + VC_Period + ")" + "_BODY_ID(" + Time[i] + ")"; + current_wick_ID = "CHT_VC_(" + VC_NumBars + "," + VC_Period + ")" + "_WICK_ID(" + Time[i] + ")"; + + ObjectDelete(current_body_ID); + ObjectDelete(current_wick_ID); + + ObjectCreate(current_body_ID, OBJ_TREND, window, Time[i], vcOpen[i], Time[i], vcClose[i]); + ObjectSet(current_body_ID, OBJPROP_STYLE, STYLE_SOLID); + ObjectSet(current_body_ID, OBJPROP_RAY, false); + ObjectSet(current_body_ID, OBJPROP_WIDTH, VC_BodyWidth); + + + ObjectCreate(current_wick_ID, OBJ_TREND, window, Time[i], vcHigh[i], Time[i], vcLow[i]); + ObjectSet(current_wick_ID, OBJPROP_STYLE, STYLE_SOLID); + ObjectSet(current_wick_ID, OBJPROP_RAY, false); + ObjectSet(current_wick_ID, OBJPROP_WIDTH, VC_WickWidth); + + if (vcOpen[i] <= vcClose[i]) + { + ObjectSet(current_body_ID, OBJPROP_COLOR, VC_UpColor); + ObjectSet(current_wick_ID, OBJPROP_COLOR, VC_UpColor); + } + else + { + ObjectSet(current_body_ID, OBJPROP_COLOR, VC_DownColor); + ObjectSet(current_wick_ID, OBJPROP_COLOR, VC_DownColor); + } + } + } +} + +void vc_delete() +{ + string name; + for (int i = ObjectsTotal() - 1; i >= 0; i--) + { + name = ObjectName(i); + string s = "CHT_VC_(" + VC_NumBars + "," + VC_Period + ")"; + + if (StringSubstr(name, 0, StringLen(s)) == s) + { + ObjectDelete(name); + } + } +} + +int computes_pa_profile(int period, int & pa_profile[], double & support, double & resistance) +{ + int err = 0; + static datetime last_time; + static bool initialized = false; + + if (err == 0 && VC_UseDynamicSRLevels) + { + double pap_max = 15; + double pap_min = -15; + double pap_increment = 0.1; + int pap_size = (pap_max - pap_min) / pap_increment + 1; + double value; + int n; + int sum; + + if (initialized == false) + { + ArrayResize(pa_profile, pap_size); + initialized = true; + } + + int i, j; + + if (last_time < iTime(NULL, period, 0)) + { + // Initialization + for (j = 0; j < pap_size; j++) + { + pa_profile[j] = 0; + } + + // Scan of value chart + for (i = 1; i < VC_DynamicSRPeriod; i++) + { + int z = iBarShift(NULL, 0, iTime(NULL, period, i)); + + for (j = 1; j < pap_size; j++) + { + value = pap_min + j * pap_increment; + + if (vcLow[z] <= value && vcHigh[z] > value) + { + pa_profile[0]++; + pa_profile[j]++; + } + } + } + } + + n = VC_DynamicSRCut * pa_profile[0]; + for (j = 1, sum = 0; j < pap_size; j++) + { + sum += pa_profile[j]; + if (sum >= n) + { + break; + } + } + + support = pap_min + j * pap_increment; + + for (j = pap_size - 1, sum = 0; j > 0; j--) + { + sum = sum + pa_profile[j]; + if (sum >= n) + { + break; + } + } + + resistance = pap_min + j * pap_increment; + } + + return (err); +} + +int vc_displays_sr(double & vc_support, double & vc_resistance) +{ + int err = 0; + + vc_delete_sr(); + + if (err == 0 && VC_UseDynamicSRLevels) + { + int window = WindowFind(indicator_short_name); + string support_name = "CHT_VC_(" + VC_NumBars + "," + VC_Period + ")" + "_Support"; + string resistance_name = "CHT_VC_(" + VC_NumBars + "," + VC_Period + ")" + "_Resistance"; + + ObjectCreate(support_name, OBJ_HLINE, window, Time[0], vc_support); + ObjectSet(support_name, OBJPROP_COLOR, VC_SupportColor); + + ObjectCreate(resistance_name, OBJ_HLINE, window, Time[0], vc_resistance); + ObjectSet(resistance_name, OBJPROP_COLOR, VC_ResistanceColor); + + } + + return (err); +} + +void vc_delete_sr() +{ + string name; + for (int i = ObjectsTotal() - 1; i >= 0; i--) + { + name = ObjectName(i); + + if (StringSubstr(name, StringLen(name) - 12, 11) == "_Resistance" && StringSubstr(name, 0, 7) == "CHT_VC_") + { + ObjectDelete(name); + } + if (StringSubstr(name, StringLen(name) - 9, 8) == "_Support" && StringSubstr(name, 0, 7) == "CHT_VC_") + { + ObjectDelete(name); + } + } +} + +void vc_check(double value, int & alert_signal) +{ + if (value > VC_Overbought) + { + alert_signal++; + } + else if (value > VC_Oversold) + { + // Do nothing + } + else // value < VC_Oversold + { + alert_signal--; + } +} + +void vc_alert_trigger(int alert_signal, bool use_alert) +{ + if (use_alert) + { + static datetime last_alert; + static int last_alert_signal; + + if (VC_Period == 0) + { + VC_Period = Period(); + } + + if (last_alert_signal != alert_signal && last_alert < iTime(NULL, VC_Period, 0)) + { + if (alert_signal == alert_confirmation_value) // Overbought + { + + Alert(Symbol() + "(" + VC_Period + "min): value chart is overbought. vcClose = " + vcClose[0] + "!"); + } + else if (alert_signal == -alert_confirmation_value) // Oversold + { + Alert(Symbol() + "(" + VC_Period + "min): value chart is oversold. vcClose = " + vcClose[0] + "!"); + } + + last_alert = iTime(NULL, VC_Period, 0); + last_alert_signal = alert_signal; + } + } +} + diff --git a/Channels.mq4 b/Channels.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..44ec631d5240e60236b2af9ff4e357f9a730720a GIT binary patch literal 42400 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 literal 0 HcmV?d00001 diff --git a/CurrencyStrengthAlerts (2).mq4 b/CurrencyStrengthAlerts (2).mq4 new file mode 100644 index 0000000000000000000000000000000000000000..2bb06ec9632772a806f85f751574a09b8eb17782 GIT binary patch literal 28688 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 0; l_shift_4--) { + g_ibuf_104[l_shift_4] = 0; + g_ibuf_108[l_shift_4] = 0; + g_ibuf_112[l_shift_4] = 0; + g_ibuf_116[l_shift_4] = 0; + g_ibuf_120[l_shift_4] = EMPTY_VALUE; + g_ibuf_124[l_shift_4] = EMPTY_VALUE; + } + for (l_shift_4 = Nbars - Length - 1; l_shift_4 >= 0; l_shift_4--) { + lda_12[l_shift_4] = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_UPPER, l_shift_4); + lda_16[l_shift_4] = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_LOWER, l_shift_4); + if (Close[l_shift_4] > lda_12[l_shift_4 + 1]) li_8 = 1; + if (Close[l_shift_4] < lda_16[l_shift_4 + 1]) li_8 = -1; + if (li_8 > 0 && lda_16[l_shift_4] < lda_16[l_shift_4 + 1]) lda_16[l_shift_4] = lda_16[l_shift_4 + 1]; + if (li_8 < 0 && lda_12[l_shift_4] > lda_12[l_shift_4 + 1]) lda_12[l_shift_4] = lda_12[l_shift_4 + 1]; + lda_20[l_shift_4] = lda_12[l_shift_4] + (MoneyRisk - 1.0) / 2.0 * (lda_12[l_shift_4] - lda_16[l_shift_4]); + lda_24[l_shift_4] = lda_16[l_shift_4] - (MoneyRisk - 1.0) / 2.0 * (lda_12[l_shift_4] - lda_16[l_shift_4]); + if (li_8 > 0 && lda_24[l_shift_4] < lda_24[l_shift_4 + 1]) lda_24[l_shift_4] = lda_24[l_shift_4 + 1]; + if (li_8 < 0 && lda_20[l_shift_4] > lda_20[l_shift_4 + 1]) lda_20[l_shift_4] = lda_20[l_shift_4 + 1]; + if (li_8 > 0) { + if (Signal > 0 && g_ibuf_104[l_shift_4 + 1] == -1.0) { + g_ibuf_112[l_shift_4] = lda_24[l_shift_4]; + g_ibuf_104[l_shift_4] = lda_24[l_shift_4]; + if (Line > 0) g_ibuf_120[l_shift_4] = lda_24[l_shift_4]; + if (SoundON == TRUE && l_shift_4 == 0 && !gi_132) { + Alert("Xtra Sig going Up on ", Symbol(), "-", Period()); + gi_132 = TRUE; + gi_136 = FALSE; + } + } else { + g_ibuf_104[l_shift_4] = lda_24[l_shift_4]; + if (Line > 0) g_ibuf_120[l_shift_4] = lda_24[l_shift_4]; + g_ibuf_112[l_shift_4] = -1; + } + if (Signal == 2) g_ibuf_104[l_shift_4] = 0; + g_ibuf_116[l_shift_4] = -1; + g_ibuf_108[l_shift_4] = -1.0; + g_ibuf_124[l_shift_4] = EMPTY_VALUE; + } + if (li_8 < 0) { + if (Signal > 0 && g_ibuf_108[l_shift_4 + 1] == -1.0) { + g_ibuf_116[l_shift_4] = lda_20[l_shift_4]; + g_ibuf_108[l_shift_4] = lda_20[l_shift_4]; + if (Line > 0) g_ibuf_124[l_shift_4] = lda_20[l_shift_4]; + if (SoundON == TRUE && l_shift_4 == 0 && !gi_136) { + Alert("Xtra Sig going Down on ", Symbol(), "-", Period()); + gi_136 = TRUE; + gi_132 = FALSE; + } + } else { + g_ibuf_108[l_shift_4] = lda_20[l_shift_4]; + if (Line > 0) g_ibuf_124[l_shift_4] = lda_20[l_shift_4]; + g_ibuf_116[l_shift_4] = -1; + } + if (Signal == 2) g_ibuf_108[l_shift_4] = 0; + g_ibuf_112[l_shift_4] = -1; + g_ibuf_104[l_shift_4] = -1.0; + g_ibuf_120[l_shift_4] = EMPTY_VALUE; + } + } + return (0); +} diff --git a/DarvasBoxes nmc.mq4 b/DarvasBoxes nmc.mq4 new file mode 100644 index 0000000..a7c0003 --- /dev/null +++ b/DarvasBoxes nmc.mq4 @@ -0,0 +1,515 @@ +//+------------------------------------------------------------------+ +//| DarvasBoxes_v3.mq4 | +//| Copyright © 2013, TrendLaboratory | +//| http://finance.groups.yahoo.com/group/TrendLaboratory | +//| E-mail: igorad2003@yahoo.co.uk | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2013, TrendLaboratory" +#property link "http://finance.groups.yahoo.com/group/TrendLaboratory" + +#include + +#property indicator_chart_window +#property indicator_buffers 6 +#property indicator_color1 RoyalBlue +#property indicator_color2 Tomato +#property indicator_color3 RoyalBlue +#property indicator_color4 Tomato +#property indicator_color5 RoyalBlue +#property indicator_color6 Tomato + +#property indicator_width1 1 +#property indicator_width2 1 +#property indicator_width3 2 +#property indicator_width4 2 +#property indicator_width5 2 +#property indicator_width6 2 + +//Darvas Modes; +//0-Classic (by Upper Pivot) +//1-Modern (by Upper Pivot) +//2-Bi-directional Classic (UpTrend by Upper Pivot, DownTrend by Lower Pivot) +//3-Bi-directional Modern (UpTrend by Upper Pivot, DownTrend by Lower Pivot) +//4-Classic by 1st Pivot (Upper or Lower) +//5-Modern by 1st Pivot (Upper or Lower) + +//---- input parameters +extern string UniqueName = "D_Box"; +extern int DarvasMode = 3; //Darvas Modes (See table above) +extern int PivotStrength = 3; //Pivot Strength in bars +extern int RollingPeriod = 1; //Rolling period of evaluation(Classic-12 months,Modern-6 months or less) +extern color NeutralColor = Silver; +extern color UpTrendColor = DodgerBlue; +extern color DnTrendColor = Coral; +extern int BoxWidth = 2; +extern int BoxesMode = 1; //0-off,1-on +extern int ChannelMode = 0; //0-off,1-on +extern int PivotsMode = 1; //0-off,1-on +extern int GhostBoxesMode = 0; //0-off,1-on +extern int SignalMode = 1; //0-off,1-on + +//---- buffers +double topBox[]; +double botBox[]; +double pivotHi[]; +double pivotLo[]; +double upSignal[]; +double dnSignal[]; +double trend[]; + +double HiArray[],LoArray[], boxTop[2], boxBottom[2], ghostHeight[2], ghostTop[2], ghostBottom[2], hiPrice[2], loPrice[2]; +int Length, startState[2], confirmState[2], prevState; +string short_name, IndicatorName, name; +datetime prevtime, startTime[2], endTime[2], ghostTime[2], prevTime, confTime, prevGhostTime; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() +{ + IndicatorDigits(Digits); +//---- indicator line + IndicatorBuffers(7); + SetIndexBuffer(0, topBox); SetIndexStyle(0, DRAW_LINE); + SetIndexBuffer(1, botBox); SetIndexStyle(1, DRAW_LINE); + SetIndexBuffer(2, pivotHi); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,159); + SetIndexBuffer(3, pivotLo); SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,159); + SetIndexBuffer(4,upSignal); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,233); + SetIndexBuffer(5,dnSignal); SetIndexStyle(5,DRAW_ARROW); SetIndexArrow(5,234); + SetIndexBuffer(6, trend); +//---- name for DataWindow and indicator subwindow label + IndicatorName = WindowExpertName(); + short_name = IndicatorName+"("+DarvasMode+","+PivotStrength+","+RollingPeriod+")"; + IndicatorShortName(short_name); + SetIndexLabel(0,"Top of Darvas Box"); + SetIndexLabel(1,"Bottom of Darvas Box"); + SetIndexLabel(2,"Pivot High"); + SetIndexLabel(3,"Pivot Low"); +//---- + Length = PivotStrength+2; + int begin = MathMax(2,Length); + SetIndexDrawBegin(0,begin); + SetIndexDrawBegin(1,begin); + SetIndexDrawBegin(2,begin); + SetIndexDrawBegin(3,begin); + +//---- + ArrayResize(HiArray,Length); + ArrayResize(LoArray,Length); + + return(0); +} +//+------------------------------------------------------------------+ +//| Custom indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + deleteObj(UniqueName); + +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| DarvasBoxes_v3 | +//+------------------------------------------------------------------+ +int start() +{ + int counted_bars=IndicatorCounted(); + + + if ( counted_bars > 0 ) int limit = Bars-counted_bars-1; + if ( counted_bars < 0 ) return(0); + if ( counted_bars ==0 ) limit = Bars-Length; + + if ( counted_bars < 1 ) + { + for(int i=0;i=0;shift--) + { + if(prevtime != Time[shift]) + { + startState[1] = startState[0]; + confirmState[1] = confirmState[0]; + boxTop[1] = boxTop[0]; + boxBottom[1] = boxBottom[0]; + startTime[1] = startTime[0]; + endTime[1] = endTime[0]; + ghostHeight[1] = ghostHeight[0]; + ghostTime[1] = ghostTime[0]; + ghostTop[1] = ghostTop[0]; + ghostBottom[1] = ghostBottom[0]; + hiPrice[1] = hiPrice[0]; + loPrice[1] = loPrice[0]; + prevtime = Time[shift]; + } + + for(int j = 0; j < Length; j++) + { + HiArray[j] = iMA(NULL,0,1,0,0,PRICE_HIGH,shift+j); + LoArray[j] = iMA(NULL,0,1,0,0,PRICE_LOW,shift+j); + } + + double hiBoxPrice = High[shift]; + double loBoxPrice = Low [shift]; + + if(DarvasMode == 0 || DarvasMode == 2 || DarvasMode == 4) {hiPrice[0] = High[shift]; loPrice[0] = Low[shift];} + else {hiPrice[0] = Close[shift]; loPrice[0] = Close[shift];} + + trend[shift] = trend[shift+1]; + botBox[shift] = botBox[shift+1]; + topBox[shift] = topBox[shift+1]; + + double upPivot = DarvasPivot(HiArray,0,PivotStrength); + double loPivot = DarvasPivot(LoArray,1,PivotStrength); + + if(PivotsMode > 0) + { + pivotHi[shift+PivotStrength] = EMPTY_VALUE; + pivotLo[shift+PivotStrength] = EMPTY_VALUE; + + if(upPivot > 0) pivotHi[shift+PivotStrength] = upPivot; + if(loPivot > 0) pivotLo[shift+PivotStrength] = loPivot; + } + + startState[0] = startState[1]; + confirmState[0] = confirmState[1]; + boxTop[0] = boxTop[1]; + boxBottom[0] = boxBottom[1]; + startTime[0] = startTime[1]; + endTime[0] = endTime[1]; + ghostHeight[0] = ghostHeight[1]; + ghostTime[0] = ghostTime[1]; + ghostTop[0] = ghostTop[1]; + ghostBottom[0] = ghostBottom[1]; + + + if(startState[0] == 0) + { + bool allPivotVerify = false; + + bool upPivotVerify = upPivot > 0 && shift+PivotStrength == iHighest(NULL,0,MODE_HIGH,RollingPeriod,shift+PivotStrength); + bool loPivotVerify = loPivot > 0 && shift+PivotStrength == iLowest (NULL,0,MODE_LOW ,RollingPeriod,shift+PivotStrength); + + if(DarvasMode < 2) allPivotVerify = upPivotVerify; + else + if(DarvasMode < 4) {if(trend[shift] > 0) allPivotVerify = upPivotVerify; else allPivotVerify = loPivotVerify;} + else allPivotVerify = upPivotVerify || loPivotVerify; + + if(allPivotVerify) + { + startTime[0] = Time[shift+PivotStrength]; + if(startTime[0] >= endTime[0]) + { + if(DarvasMode < 2) {boxTop[0] = upPivot; startState[0] = 1;} + else + if(DarvasMode < 4) + { + startState[0] = 1; + if(trend[shift] > 0) boxTop[0] = upPivot; else boxBottom[0] = loPivot; + } + else + { + if(upPivotVerify ||(upPivotVerify && loPivotVerify)) {boxTop[0] = upPivot; startState[0] = 1;} + else {boxBottom[0] = loPivot; startState[0] =-1;} + } + + prevTime = startTime[0]; + prevState = startState[0]; + } + } + } + + if(startState[0] != 0 && confirmState[0] == 0) + { + if(DarvasMode < 2) + { + if(upPivot > boxTop[0] || hiBoxPrice > boxTop[0]) {startState[0] = 0; startTime[0] = 0;} + else + if(loPivot > 0 && Time[shift] > startTime[0]) {confirmState[0] = 1; boxBottom[0] = loPivot; confTime = Time[shift];} + } + else + if(DarvasMode < 4) + { + + if(trend[shift] > 0 && (upPivot > boxTop[0] || hiBoxPrice > boxTop[0])) {startState[0] = 0; startTime[0] = 0;} + else + if(trend[shift] < 0 && ((loPivot > 0 && loPivot < boxBottom[0]) || loBoxPrice < boxBottom[0])) {startState[0] = 0; startTime[0] = 0; } + else + if(Time[shift] > startTime[0]) + { + if(trend[shift] > 0 && loPivot > 0){confirmState[0] = 1; boxBottom[0] = loPivot; confTime = Time[shift];} + else + if(trend[shift] < 0 && upPivot > 0){confirmState[0] = 1; boxTop[0] = upPivot; confTime = Time[shift];} + } + } + else + { + if(startState[0] > 0 && (upPivot > boxTop[0] || hiBoxPrice > boxTop[0])) {startState[0] = 0; startTime[0] = 0;} + else + if(startState[0] < 0 && ((loPivot > 0 && loPivot < boxBottom[0]) || loBoxPrice < boxBottom[0])) {startState[0] = 0; startTime[0] = 0;} + else + if(Time[shift] > startTime[0]) + { + if(startState[0] > 0 && loPivot > 0 && confirmState[0] == 0){confirmState[0] = 1; boxBottom[0] = loPivot; confTime = Time[shift];} + else + if(startState[0] < 0 && upPivot > 0 && confirmState[0] == 0){confirmState[0] = 1; boxTop[0] = upPivot; confTime = Time[shift];} + } + } + } + else + if(startState[0] != 0 && confirmState[0] != 0) + { + if(BoxesMode > 0) + { + name = UniqueName + " " + TimeToStr(startTime[0]); + DeleteBox(name); + + if(DarvasMode < 2) PlotBox(name,startTime[0],boxTop[0],Time[shift],boxBottom[0],STYLE_SOLID,NeutralColor,BoxWidth,0); + else + if(DarvasMode < 4) + { + if(trend[shift] > 0) PlotBox(name,startTime[0],boxTop[0],Time[shift],boxBottom[0],STYLE_SOLID,NeutralColor,BoxWidth,0); + else + if(trend[shift] < 0) PlotBox(name,startTime[0],boxBottom[0],Time[shift],boxTop[0],STYLE_SOLID,NeutralColor,BoxWidth,0); + } + else + { + if(startState[0] > 0) PlotBox(name,startTime[0],boxTop[0],Time[shift],boxBottom[0],STYLE_SOLID,NeutralColor,BoxWidth,0); + else + if(startState[0] < 0) PlotBox(name,startTime[0],boxBottom[0],Time[shift],boxTop[0],STYLE_SOLID,NeutralColor,BoxWidth,0); + } + } + + upSignal[shift] = EMPTY_VALUE; + dnSignal[shift] = EMPTY_VALUE; + + double gap = 0.5*MathCeil(iATR(NULL,0,14,shift)/Point); + + if(hiPrice[0] > boxTop[0]) + { + trend[shift] = 1; + startState[0] = 0; + confirmState[0] = 0; + endTime[0] = Time[shift]; + startTime[0] = 0; + if(SignalMode > 0) upSignal[shift] = Low [shift] - gap*Point; + } + + if(loPrice[0] < boxBottom[0]) + { + trend[shift] =-1; + startState[0] = 0; + confirmState[0] = 0; + endTime[0] = Time[shift]; + startTime[0] = 0; + if(SignalMode > 0) dnSignal[shift] = High[shift] + gap*Point; + } + + if(ChannelMode > 0) {botBox[shift] = boxBottom[0]; topBox[shift] = boxTop[0];} + + if(endTime[0] != endTime[1]) + { + if(BoxesMode > 0) + { + DeleteBox(name); + if(trend[shift] > 0) + { + PlotBox(name,prevTime,boxTop[0],endTime[0],boxBottom[0],STYLE_SOLID,UpTrendColor,BoxWidth,0); + PlotBox(name,prevTime,boxTop[0],endTime[0],boxBottom[0],STYLE_SOLID,UpTrendColor,BoxWidth,1); + } + else + if(trend[shift] < 0) + { + if(DarvasMode < 2) + { + PlotBox(name,prevTime,boxTop[0],endTime[0],boxBottom[0],STYLE_SOLID,DnTrendColor,BoxWidth,0); + PlotBox(name,prevTime,boxTop[0],endTime[0],boxBottom[0],STYLE_SOLID,DnTrendColor,BoxWidth,1); + } + else + { + PlotBox(name,prevTime,boxBottom[0],endTime[0],boxTop[0],STYLE_SOLID,DnTrendColor,BoxWidth,0); + PlotBox(name,prevTime,boxBottom[0],endTime[0],boxTop[0],STYLE_SOLID,DnTrendColor,BoxWidth,1); + } + } + } + + if(GhostBoxesMode > 0) + { + ghostTime[0] = endTime[0]; + ghostHeight[0] = boxTop[0] - boxBottom[0]; + prevGhostTime = ghostTime[0]; + + if(trend[shift] > 0) + { + ghostBottom[0] = boxTop[0]; + ghostTop[0] = ghostBottom[0] + ghostHeight[0]; + } + else + { + ghostTop[0] = boxBottom[0]; + ghostBottom[0] = ghostTop[0] - ghostHeight[0]; + } + } + } + } + else if(prevState > 0 && prevTime > 0 && confTime == Time[shift]) DeleteBox(UniqueName+" "+TimeToStr(prevTime)); + + + if(GhostBoxesMode > 0) + { + if(trend[shift] > 0) + { + string gname = UniqueName+" Ghost "+TimeToStr(ghostTime[0]); + + if(confirmState[0] == 0 || (confirmState[0] > 0 && confirmState[1] == 0)) + { + DeleteBox(gname); + PlotBox(gname,ghostTime[0],ghostTop[0],Time[shift],ghostBottom[0],STYLE_DOT,UpTrendColor,1,0); + + if(hiPrice[0] <= ghostTop[0] && ghostTime[0] == Time[shift]) DeleteBox(UniqueName+" Ghost "+TimeToStr(prevGhostTime)); + + if(hiPrice[0] > ghostTop[0] && hiPrice[1] <= ghostTop[1]) + { + PlotBox(gname,ghostTime[0],ghostTop[0],Time[shift],ghostBottom[0],STYLE_DOT,UpTrendColor,1,1); + + ghostTime[0] = Time[shift]; + ghostBottom[0] = ghostTop[0]; + ghostTop[0] = ghostBottom[0] + ghostHeight[0]; + prevGhostTime = ghostTime[0]; + } + } + + if(confirmState[0] > 0) + { + + PlotBox(gname,ghostTime[0],ghostTop[0],Time[shift],ghostBottom[0],STYLE_DOT,UpTrendColor,1,1); + } + } + else + { + gname = UniqueName+" Ghost "+TimeToStr(ghostTime[0]); + + if(confirmState[0] == 0 || (confirmState[0] > 0 && confirmState[1] == 0)) + { + DeleteBox(gname); + PlotBox(gname,ghostTime[0],ghostTop[0],Time[shift],ghostBottom[0],STYLE_DOT,DnTrendColor,1,0); + + if(loPrice[0] >= ghostBottom[0] && ghostTime[0] == Time[shift]) DeleteBox(UniqueName+" Ghost "+TimeToStr(prevGhostTime)); + + if(loPrice[0] < ghostBottom[0] && loPrice[1] >= ghostBottom[1]) + { + PlotBox(gname,ghostTime[0],ghostTop[0],Time[shift],ghostBottom[0],STYLE_DOT,DnTrendColor,1,1); + + ghostTime[0] = Time[shift]; + ghostTop[0] = ghostBottom[0]; + ghostBottom[0] = ghostTop[0] - ghostHeight[0]; + prevGhostTime = ghostTime[0]; + } + } + + if(confirmState[0] > 0) + { + + PlotBox(gname,ghostTime[0],ghostTop[0],Time[shift],ghostBottom[0],STYLE_DOT,DnTrendColor,1,1); + } + } + } + } +} + + +double DarvasPivot(double& price[],int type,int size) +{ + + double upPivot; + + if (type==0) bool condition = ArrayMaximum(price,0,0) == size; + else condition = ArrayMinimum(price,0,0) == size; + + if(condition) upPivot = price[size]; else upPivot=0; + +return(upPivot); +} + +//+------------------------------------------------------------------+ + + +void PlotBox(string tname,datetime time1,double value1, datetime time2,double value2,int style,color clr,double width,int mode) +{ + + if(mode == 0) + { + ObjectCreate(tname+" 1H",OBJ_TREND,0,time1,value1,time2,value1); + ObjectSet(tname+" 1H",OBJPROP_COLOR,clr); + ObjectSet(tname+" 1H",OBJPROP_STYLE,style); + ObjectSet(tname+" 1H",OBJPROP_RAY,false); + ObjectSet(tname+" 1H",OBJPROP_BACK,true); + ObjectSet(tname+" 1H",OBJPROP_WIDTH,width); + + ObjectCreate(tname+" 1V",OBJ_TREND,0,time1,value1,time1,value2); + ObjectSet(tname+" 1V",OBJPROP_COLOR,clr); + ObjectSet(tname+" 1V",OBJPROP_STYLE,style); + ObjectSet(tname+" 1V",OBJPROP_RAY,false); + ObjectSet(tname+" 1V",OBJPROP_BACK,true); + ObjectSet(tname+" 1V",OBJPROP_WIDTH,width); + + ObjectCreate(tname+" 2H",OBJ_TREND,0,time1,value2,time2,value2); + ObjectSet(tname+" 2H",OBJPROP_COLOR,clr); + ObjectSet(tname+" 2H",OBJPROP_STYLE,style); + ObjectSet(tname+" 2H",OBJPROP_RAY,false); + ObjectSet(tname+" 2H",OBJPROP_BACK,true); + ObjectSet(tname+" 2H",OBJPROP_WIDTH,width); + } + + if(mode == 1) + { + ObjectCreate(tname+" 2V",OBJ_TREND,0,time2,value1,time2,value2); + ObjectSet(tname+" 2V",OBJPROP_COLOR,clr); + ObjectSet(tname+" 2V",OBJPROP_STYLE,style); + ObjectSet(tname+" 2V",OBJPROP_RAY,false); + ObjectSet(tname+" 2V",OBJPROP_BACK,true); + ObjectSet(tname+" 2V",OBJPROP_WIDTH,width); + } +} + +void DeleteBox(string tname) +{ + ObjectDelete(tname+" 1H"); + ObjectDelete(tname+" 2H"); + ObjectDelete(tname+" 1V"); + ObjectDelete(tname+" 2V"); +} + +bool deleteObj(string tname) +{ + bool result = false; + + int length = StringLen(tname); + for(int i=ObjectsTotal()-1; i>=0; i--) + { + string objName = ObjectName(i); + if(StringSubstr(objName,0,length) == tname) {ObjectDelete(objName); result = true;} + } + + return(result); +} + diff --git a/Equity-Free-Margin-Manager-EA.mq4 b/Equity-Free-Margin-Manager-EA.mq4 new file mode 100644 index 0000000..788379b --- /dev/null +++ b/Equity-Free-Margin-Manager-EA.mq4 @@ -0,0 +1,224 @@ +//+------------------------------------------------------------------+ +//| Profit Protection, Stop Loss Hedge Balance Trader.mq4 | +//| Copyright © 2011, DancingPhil | +//| | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2011, DancingPhil" +#property link "bad-boy-phil@hotmail.com" + +extern int Magic = 2; +extern int LookBack = 3; // Bars back from current open to look for a Fractal +extern int Slippage = 0; +extern int TakeprofitHP = 30; +extern int TakeprofitML =30; +extern int TakeprofitFM = 30; +extern double FM = 0.30; +extern int Stoploss = 0; +extern double MaxLoss = 0.25; +extern double HeapsProfit = 0.26; +string Comments = ""; +double LowestFreeMargin=1000000; +double StartingEquity=0; +double WorstEquity=0; +double BestEquity=0; +double TargetBestEquity=0; +bool buyFlag = false, sellFlag = false; +datetime barStart = 0; +//+------------------------------------------------------------------+ +//| expert initialization function | +//+------------------------------------------------------------------+ +int init() + { +//---- + StartingEquity=AccountEquity(); + + if(Digits == 5) + { + TakeprofitML = TakeprofitML * 10; + TakeprofitHP = TakeprofitHP * 10; + TakeprofitFM = TakeprofitFM * 10; + Stoploss = Stoploss * 10; + + } + +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| expert deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| expert start function | +//+------------------------------------------------------------------+ +int start() + { +//---- +/*if (barStart < Time[0]) //start of new bar +{ +barStart = Time[0]; +buyFlag = false; +sellFlag = false; +} +*/ + double total_selllots =0; //define variable total_sellots, starting at =0 + double total_buylots =0; //define variable total_buylots, starting at =0 + double lotdifference=0; + int t; + + double upfractal = GetFractal(MODE_UPPER), + dnfractal = GetFractal(MODE_LOWER); + + //Calculate total_buylots + + for (int i = OrdersTotal()-1; i >=0; i--) //scanning all trades + { + if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { Sleep(10); continue; } + if(OrderSymbol() == Symbol() ) //check the currency and magic number are correct + { + if (OrderType() == OP_BUY) //with OP_BUY trades + { + total_buylots = total_buylots + OrderLots(); //add them up and keep a tally of them + + } + //Calculate total_selllots + + if (OrderType() == OP_SELL) //with the OP_SELL trades + { + total_selllots = total_selllots + OrderLots(); //add them up and keep a tally of them too + } + + } + } + if (LowestFreeMargin>AccountFreeMargin()) + { + LowestFreeMargin=AccountFreeMargin(); + } + if (BestEquity 1){ + if (OrderSelect(t, SELECT_BY_TICKET))OrderModify(OrderTicket(),OrderOpenPrice(),0,Ask + TakeprofitML*Point,0,Blue ); + else Print("OrderModify() ticket=",t," failed with error code ",GetLastError()); + } + else Print("OrderSend ticket=",t," failed with error code ",GetLastError()); + + } + if( total_buylots>total_selllots) + if (AccountEquity()<((1-MaxLoss)*BestEquity)) + + { + + lotdifference = total_buylots - total_selllots; //Check difference in lots, if buylots is smaller then we will sell + t = OrderSend(Symbol(),OP_SELL,lotdifference,Bid,Slippage,0,0,Comments + "SellOnMaxLoss",Magic,0,Blue); + BestEquity=AccountEquity(); + if (t > 1){ + if (OrderSelect(t, SELECT_BY_TICKET))OrderModify(OrderTicket(),OrderOpenPrice(),0,Bid - TakeprofitML*Point,0,Red ); + else Print("OrderModify() ticket=",t," failed with error code ",GetLastError()); + } + else Print("OrderSend ticket=",t," failed with error code ",GetLastError()); + } + if( total_buylots((1+HeapsProfit)*StartingEquity)) + + { + + lotdifference = total_selllots - total_buylots; //Check difference in lots, if buylots is smaller then we will buy + t = OrderSend(Symbol(),OP_BUY,lotdifference,Ask,Slippage,0,0,Comments + "BuyOnHeapsProfit",Magic,0,Red); + StartingEquity=AccountEquity(); + if (t > 1){ + if (OrderSelect(t, SELECT_BY_TICKET))OrderModify(OrderTicket(),OrderOpenPrice(),0,Ask + TakeprofitHP*Point,0,Blue ); + else Print("OrderModify() ticket=",t," failed with error code ",GetLastError()); + } + else Print("OrderSend ticket=",t," failed with error code ",GetLastError()); + + } + if( total_buylots>total_selllots) + if (AccountEquity()>((1+HeapsProfit)*StartingEquity)) + + { + + lotdifference = total_buylots - total_selllots; //Check difference in lots, if buylots is smaller then we will sell + t = OrderSend(Symbol(),OP_SELL,lotdifference,Bid,Slippage,0,0,Comments + "SellOnHeaps",Magic,0,Red); + StartingEquity=AccountEquity(); + if (t > 1){ + if (OrderSelect(t, SELECT_BY_TICKET))OrderModify(OrderTicket(),OrderOpenPrice(),0,Bid - TakeprofitHP*Point,0,Red ); + else Print("OrderModify() ticket=",t," failed with error code ",GetLastError()); + } + else Print("OrderSend ticket=",t," failed with error code ",GetLastError()); + } + if( total_buylots 1){ + if (OrderSelect(t, SELECT_BY_TICKET))OrderModify(OrderTicket(),OrderOpenPrice(),0,0,0,Blue ); + else Print("OrderModify() ticket=",t," failed with error code ",GetLastError()); + } + else Print("OrderSend ticket=",t," failed with error code ",GetLastError()); + + } + if( total_buylots>total_selllots) + if (AccountFreeMargin()<(FM*BestEquity)) + + { + + lotdifference = total_buylots - total_selllots; //Check difference in lots, if buylots is smaller then we will sell + t = OrderSend(Symbol(),OP_SELL,(lotdifference*0.5),Bid,Slippage,0,0,Comments + "FreeMarginWorry",Magic,0,Green); + + if (t > 1){ + if (OrderSelect(t, SELECT_BY_TICKET))OrderModify(OrderTicket(),OrderOpenPrice(),0,0,0,Red ); + else Print("OrderModify() ticket=",t," failed with error code ",GetLastError()); + } + else Print("OrderSend ticket=",t," failed with error code ",GetLastError()); + } + +//---- + return(0); + } +//+------------------------------------------------------------------+ + +double GetFractal(int mode) + { + double tempup=0, tempdn=0, fup=0, fdn=0; + tempup = iFractals(Symbol(), 0, MODE_UPPER, LookBack); + tempdn = iFractals(Symbol(), 0, MODE_LOWER, LookBack); + if(tempup != 0) fup = tempup; + if(tempdn != 0) fdn = tempdn; + + if ( fup != 0 && fdn == 0 && mode == MODE_UPPER ) return(fup); + if ( fdn != 0 && fup == 0 && mode == MODE_LOWER ) return(fdn); + return(0); + } + diff --git a/FTLM-STLMxAMm.mq4 b/FTLM-STLMxAMm.mq4 new file mode 100644 index 0000000..73cb232 --- /dev/null +++ b/FTLM-STLMxAMm.mq4 @@ -0,0 +1,582 @@ +//+------------------------------------------------------------------+ +//| +//+------------------------------------------------------------------+ + + +#property indicator_separate_window +#property indicator_buffers 4 +#property indicator_color1 Green +#property indicator_color2 Red +#property indicator_color3 Green +#property indicator_color4 Red + + +#property indicator_width1 2 +#property indicator_width2 2 +#property indicator_width3 2 +#property indicator_width4 2 + + +extern int CountBars=3000; +//---- buffers +double Up1[]; +double Down1[]; +double Up2[]; +double Down2[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { + string short_name; +//---- indicator line + IndicatorBuffers(5); + SetIndexStyle(0,DRAW_HISTOGRAM); + SetIndexBuffer(0,Up2); + SetIndexStyle(1,DRAW_HISTOGRAM); + SetIndexBuffer(1,Down2); + SetIndexStyle(2,DRAW_ARROW); + SetIndexArrow(2,159); + SetIndexBuffer(2,Up1); + SetIndexStyle(3,DRAW_ARROW); + SetIndexArrow(3,159); + SetIndexBuffer(3,Down1); + + SetIndexLabel(0,"STLM+"); + SetIndexLabel(1,"STLM-"); + SetIndexLabel(2,"FTLM+"); + SetIndexLabel(3,"FTLM-"); +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| FTLM | +//+------------------------------------------------------------------+ +int start() + { + SetIndexDrawBegin(0,Bars-CountBars+43); + SetIndexDrawBegin(1,Bars-CountBars+43); + int i,i2; + double FTLM,FTLM1,value11,value21,value31,value41; + double STLM,STLM1,value12,value22,value32,value42; +//---- + if(Bars<=90) return(0); + + int counted_bars=IndicatorCounted(); + if(counted_bars<0) return(-1); + if(counted_bars>0) counted_bars--; + i=Bars-counted_bars; + if(counted_bars==0) i-=1+91; + + while(i>=0) + { + + value11= + 0.4360409450*Close[i+0] + +0.3658689069*Close[i+1] + +0.2460452079*Close[i+2] + +0.1104506886*Close[i+3] + -0.0054034585*Close[i+4] + -0.0760367731*Close[i+5] + -0.0933058722*Close[i+6] + -0.0670110374*Close[i+7] + -0.0190795053*Close[i+8] + +0.0259609206*Close[i+9] + +0.0502044896*Close[i+10] + +0.0477818607*Close[i+11] + +0.0249252327*Close[i+12] + -0.0047706151*Close[i+13] + -0.0272432537*Close[i+14] + -0.0338917071*Close[i+15] + -0.0244141482*Close[i+16] + -0.0055774838*Close[i+17] + +0.0128149838*Close[i+18] + +0.0226522218*Close[i+19] + +0.0208778257*Close[i+20] + +0.0100299086*Close[i+21] + -0.0036771622*Close[i+22] + -0.0136744850*Close[i+23] + -0.0160483392*Close[i+24] + -0.0108597376*Close[i+25] + -0.0016060704*Close[i+26] + +0.0069480557*Close[i+27] + +0.0110573605*Close[i+28] + +0.0095711419*Close[i+29] + +0.0040444064*Close[i+30] + -0.0023824623*Close[i+31] + -0.0067093714*Close[i+32] + -0.0072003400*Close[i+33] + -0.0047717710*Close[i+34] + +0.0005541115*Close[i+35] + +0.0007860160*Close[i+36] + +0.0130129076*Close[i+37] + +0.0040364019*Close[i+38]; + + value21= + -0.0025097319*Close[i+0] + +0.0513007762*Close[i+1] + +0.1142800493*Close[i+2] + +0.1699342860*Close[i+3] + +0.2025269304*Close[i+4] + +0.2025269304*Close[i+5] + +0.1699342860*Close[i+6] + +0.1142800493*Close[i+7] + +0.0513007762*Close[i+8] + -0.0025097319*Close[i+9] + -0.0353166244*Close[i+10] + -0.0433375629*Close[i+11] + -0.0311244617*Close[i+12] + -0.0088618137*Close[i+13] + +0.0120580088*Close[i+14] + +0.0233183633*Close[i+15] + +0.0221931304*Close[i+16] + +0.0115769653*Close[i+17] + -0.0022157966*Close[i+18] + -0.0126536111*Close[i+19] + -0.0157416029*Close[i+20] + -0.0113395830*Close[i+21] + -0.0025905610*Close[i+22] + +0.0059521459*Close[i+23] + +0.0105212252*Close[i+24] + +0.0096970755*Close[i+25] + +0.0046585685*Close[i+26] + -0.0017079230*Close[i+27] + -0.0063513565*Close[i+28] + -0.0074539350*Close[i+29] + -0.0050439973*Close[i+30] + -0.0007459678*Close[i+31] + +0.0032271474*Close[i+32] + +0.0051357867*Close[i+33] + +0.0044454862*Close[i+34] + +0.0018784961*Close[i+35] + -0.0011065767*Close[i+36] + -0.0031162862*Close[i+37] + -0.0033443253*Close[i+38] + -0.0022163335*Close[i+39] + +0.0002573669*Close[i+40] + +0.0003650790*Close[i+41] + +0.0060440751*Close[i+42] + +0.0018747783*Close[i+43]; + + + + value31= + 0.4360409450*Close[i+0+1] + +0.3658689069*Close[i+1+1] + +0.2460452079*Close[i+2+1] + +0.1104506886*Close[i+3+1] + -0.0054034585*Close[i+4+1] + -0.0760367731*Close[i+5+1] + -0.0933058722*Close[i+6+1] + -0.0670110374*Close[i+7+1] + -0.0190795053*Close[i+8+1] + +0.0259609206*Close[i+9+1] + +0.0502044896*Close[i+10+1] + +0.0477818607*Close[i+11+1] + +0.0249252327*Close[i+12+1] + -0.0047706151*Close[i+13+1] + -0.0272432537*Close[i+14+1] + -0.0338917071*Close[i+15+1] + -0.0244141482*Close[i+16+1] + -0.0055774838*Close[i+17+1] + +0.0128149838*Close[i+18+1] + +0.0226522218*Close[i+19+1] + +0.0208778257*Close[i+20+1] + +0.0100299086*Close[i+21+1] + -0.0036771622*Close[i+22+1] + -0.0136744850*Close[i+23+1] + -0.0160483392*Close[i+24+1] + -0.0108597376*Close[i+25+1] + -0.0016060704*Close[i+26+1] + +0.0069480557*Close[i+27+1] + +0.0110573605*Close[i+28+1] + +0.0095711419*Close[i+29+1] + +0.0040444064*Close[i+30+1] + -0.0023824623*Close[i+31+1] + -0.0067093714*Close[i+32+1] + -0.0072003400*Close[i+33+1] + -0.0047717710*Close[i+34+1] + +0.0005541115*Close[i+35+1] + +0.0007860160*Close[i+36+1] + +0.0130129076*Close[i+37+1] + +0.0040364019*Close[i+38+1]; + + value41= + -0.0025097319*Close[i+0+1] + +0.0513007762*Close[i+1+1] + +0.1142800493*Close[i+2+1] + +0.1699342860*Close[i+3+1] + +0.2025269304*Close[i+4+1] + +0.2025269304*Close[i+5+1] + +0.1699342860*Close[i+6+1] + +0.1142800493*Close[i+7+1] + +0.0513007762*Close[i+8+1] + -0.0025097319*Close[i+9+1] + -0.0353166244*Close[i+10+1] + -0.0433375629*Close[i+11+1] + -0.0311244617*Close[i+12+1] + -0.0088618137*Close[i+13+1] + +0.0120580088*Close[i+14+1] + +0.0233183633*Close[i+15+1] + +0.0221931304*Close[i+16+1] + +0.0115769653*Close[i+17+1] + -0.0022157966*Close[i+18+1] + -0.0126536111*Close[i+19+1] + -0.0157416029*Close[i+20+1] + -0.0113395830*Close[i+21+1] + -0.0025905610*Close[i+22+1] + +0.0059521459*Close[i+23+1] + +0.0105212252*Close[i+24+1] + +0.0096970755*Close[i+25+1] + +0.0046585685*Close[i+26+1] + -0.0017079230*Close[i+27+1] + -0.0063513565*Close[i+28+1] + -0.0074539350*Close[i+29+1] + -0.0050439973*Close[i+30+1] + -0.0007459678*Close[i+31+1] + +0.0032271474*Close[i+32+1] + +0.0051357867*Close[i+33+1] + +0.0044454862*Close[i+34+1] + +0.0018784961*Close[i+35+1] + -0.0011065767*Close[i+36+1] + -0.0031162862*Close[i+37+1] + -0.0033443253*Close[i+38+1] + -0.0022163335*Close[i+39+1] + +0.0002573669*Close[i+40+1] + +0.0003650790*Close[i+41+1] + +0.0060440751*Close[i+42+1] + +0.0018747783*Close[i+43+1]; + + value12= + 0.0982862174*Close[i+0] + +0.0975682269*Close[i+1] + +0.0961401078*Close[i+2] + +0.0940230544*Close[i+3] + +0.0912437090*Close[i+4] + +0.0878391006*Close[i+5] + +0.0838544303*Close[i+6] + +0.0793406350*Close[i+7] + +0.0743569346*Close[i+8] + +0.0689666682*Close[i+9] + +0.0632381578*Close[i+10] + +0.0572428925*Close[i+11] + +0.0510534242*Close[i+12] + +0.0447468229*Close[i+13] + +0.0383959950*Close[i+14] + +0.0320735368*Close[i+15] + +0.0258537721*Close[i+16] + +0.0198005183*Close[i+17] + +0.0139807863*Close[i+18] + +0.0084512448*Close[i+19] + +0.0032639979*Close[i+20] + -0.0015350359*Close[i+21] + -0.0059060082*Close[i+22] + -0.0098190256*Close[i+23] + -0.0132507215*Close[i+24] + -0.0161875265*Close[i+25] + -0.0186164872*Close[i+26] + -0.0205446727*Close[i+27] + -0.0219739146*Close[i+28] + -0.0229204861*Close[i+29] + -0.0234080863*Close[i+30] + -0.0234566315*Close[i+31] + -0.0231017777*Close[i+32] + -0.0223796900*Close[i+33] + -0.0213300463*Close[i+34] + -0.0199924534*Close[i+35] + -0.0184126992*Close[i+36] + -0.0166377699*Close[i+37] + -0.0147139428*Close[i+38] + -0.0126796776*Close[i+39] + -0.0105938331*Close[i+40] + -0.0084736770*Close[i+41] + -0.0063841850*Close[i+42] + -0.0043466731*Close[i+43] + -0.0023956944*Close[i+44] + -0.0005535180*Close[i+45] + +0.0011421469*Close[i+46] + +0.0026845693*Close[i+47] + +0.0040471369*Close[i+48] + +0.0052380201*Close[i+49] + +0.0062194591*Close[i+50] + +0.0070340085*Close[i+51] + +0.0076266453*Close[i+52] + +0.0080376628*Close[i+53] + +0.0083037666*Close[i+54] + +0.0083694798*Close[i+55] + +0.0082901022*Close[i+56] + +0.0080741359*Close[i+57] + +0.0077543820*Close[i+58] + +0.0073260526*Close[i+59] + +0.0068163569*Close[i+60] + +0.0062325477*Close[i+61] + +0.0056078229*Close[i+62] + +0.0049516078*Close[i+63] + +0.0161380976*Close[i+64]; + + value22= + -0.0074151919*Close[i+0] + -0.0060698985*Close[i+1] + -0.0044979052*Close[i+2] + -0.0027054278*Close[i+3] + -0.0007031702*Close[i+4] + +0.0014951741*Close[i+5] + +0.0038713513*Close[i+6] + +0.0064043271*Close[i+7] + +0.0090702334*Close[i+8] + +0.0118431116*Close[i+9] + +0.0146922652*Close[i+10] + +0.0175884606*Close[i+11] + +0.0204976517*Close[i+12] + +0.0233865835*Close[i+13] + +0.0262218588*Close[i+14] + +0.0289681736*Close[i+15] + +0.0315922931*Close[i+16] + +0.0340614696*Close[i+17] + +0.0363444061*Close[i+18] + +0.0384120882*Close[i+19] + +0.0402373884*Close[i+20] + +0.0417969735*Close[i+21] + +0.0430701377*Close[i+22] + +0.0440399188*Close[i+23] + +0.0446941124*Close[i+24] + +0.0450230100*Close[i+25] + +0.0450230100*Close[i+26] + +0.0446941124*Close[i+27] + +0.0440399188*Close[i+28] + +0.0430701377*Close[i+29] + +0.0417969735*Close[i+30] + +0.0402373884*Close[i+31] + +0.0384120882*Close[i+32] + +0.0363444061*Close[i+33] + +0.0340614696*Close[i+34] + +0.0315922931*Close[i+35] + +0.0289681736*Close[i+36] + +0.0262218588*Close[i+37] + +0.0233865835*Close[i+38] + +0.0204976517*Close[i+39] + +0.0175884606*Close[i+40] + +0.0146922652*Close[i+41] + +0.0118431116*Close[i+42] + +0.0090702334*Close[i+43] + +0.0064043271*Close[i+44] + +0.0038713513*Close[i+45] + +0.0014951741*Close[i+46] + -0.0007031702*Close[i+47] + -0.0027054278*Close[i+48] + -0.0044979052*Close[i+49] + -0.0060698985*Close[i+50] + -0.0074151919*Close[i+51] + -0.0085278517*Close[i+52] + -0.0094111161*Close[i+53] + -0.0100658241*Close[i+54] + -0.0104994302*Close[i+55] + -0.0107227904*Close[i+56] + -0.0107450280*Close[i+57] + -0.0105824763*Close[i+58] + -0.0102517019*Close[i+59] + -0.0097708805*Close[i+60] + -0.0091581551*Close[i+61] + -0.0084345004*Close[i+62] + -0.0076214397*Close[i+63] + -0.0067401718*Close[i+64] + -0.0058083144*Close[i+65] + -0.0048528295*Close[i+66] + -0.0038816271*Close[i+67] + -0.0029244713*Close[i+68] + -0.0019911267*Close[i+69] + -0.0010974211*Close[i+70] + -0.0002535559*Close[i+71] + +0.0005231953*Close[i+72] + +0.0012297491*Close[i+73] + +0.0018539149*Close[i+74] + +0.0023994354*Close[i+75] + +0.0028490136*Close[i+76] + +0.0032221429*Close[i+77] + +0.0034936183*Close[i+78] + +0.0036818974*Close[i+79] + +0.0038037944*Close[i+80] + +0.0038338964*Close[i+81] + +0.0037975350*Close[i+82] + +0.0036986051*Close[i+83] + +0.0035521320*Close[i+84] + +0.0033559226*Close[i+85] + +0.0031224409*Close[i+86] + +0.0028550092*Close[i+87] + +0.0025688349*Close[i+88] + +0.0022682355*Close[i+89] + +0.0073925495*Close[i+90]; + + value32= + 0.0982862174*Close[i+0+1] + +0.0975682269*Close[i+1+1] + +0.0961401078*Close[i+2+1] + +0.0940230544*Close[i+3+1] + +0.0912437090*Close[i+4+1] + +0.0878391006*Close[i+5+1] + +0.0838544303*Close[i+6+1] + +0.0793406350*Close[i+7+1] + +0.0743569346*Close[i+8+1] + +0.0689666682*Close[i+9+1] + +0.0632381578*Close[i+10+1] + +0.0572428925*Close[i+11+1] + +0.0510534242*Close[i+12+1] + +0.0447468229*Close[i+13+1] + +0.0383959950*Close[i+14+1] + +0.0320735368*Close[i+15+1] + +0.0258537721*Close[i+16+1] + +0.0198005183*Close[i+17+1] + +0.0139807863*Close[i+18+1] + +0.0084512448*Close[i+19+1] + +0.0032639979*Close[i+20+1] + -0.0015350359*Close[i+21+1] + -0.0059060082*Close[i+22+1] + -0.0098190256*Close[i+23+1] + -0.0132507215*Close[i+24+1] + -0.0161875265*Close[i+25+1] + -0.0186164872*Close[i+26+1] + -0.0205446727*Close[i+27+1] + -0.0219739146*Close[i+28+1] + -0.0229204861*Close[i+29+1] + -0.0234080863*Close[i+30+1] + -0.0234566315*Close[i+31+1] + -0.0231017777*Close[i+32+1] + -0.0223796900*Close[i+33+1] + -0.0213300463*Close[i+34+1] + -0.0199924534*Close[i+35+1] + -0.0184126992*Close[i+36+1] + -0.0166377699*Close[i+37+1] + -0.0147139428*Close[i+38+1] + -0.0126796776*Close[i+39+1] + -0.0105938331*Close[i+40+1] + -0.0084736770*Close[i+41+1] + -0.0063841850*Close[i+42+1] + -0.0043466731*Close[i+43+1] + -0.0023956944*Close[i+44+1] + -0.0005535180*Close[i+45+1] + +0.0011421469*Close[i+46+1] + +0.0026845693*Close[i+47+1] + +0.0040471369*Close[i+48+1] + +0.0052380201*Close[i+49+1] + +0.0062194591*Close[i+50+1] + +0.0070340085*Close[i+51+1] + +0.0076266453*Close[i+52+1] + +0.0080376628*Close[i+53+1] + +0.0083037666*Close[i+54+1] + +0.0083694798*Close[i+55+1] + +0.0082901022*Close[i+56+1] + +0.0080741359*Close[i+57+1] + +0.0077543820*Close[i+58+1] + +0.0073260526*Close[i+59+1] + +0.0068163569*Close[i+60+1] + +0.0062325477*Close[i+61+1] + +0.0056078229*Close[i+62+1] + +0.0049516078*Close[i+63+1] + +0.0161380976*Close[i+64+1]; + + value42= + -0.0074151919*Close[i+0+1] + -0.0060698985*Close[i+1+1] + -0.0044979052*Close[i+2+1] + -0.0027054278*Close[i+3+1] + -0.0007031702*Close[i+4+1] + +0.0014951741*Close[i+5+1] + +0.0038713513*Close[i+6+1] + +0.0064043271*Close[i+7+1] + +0.0090702334*Close[i+8+1] + +0.0118431116*Close[i+9+1] + +0.0146922652*Close[i+10+1] + +0.0175884606*Close[i+11+1] + +0.0204976517*Close[i+12+1] + +0.0233865835*Close[i+13+1] + +0.0262218588*Close[i+14+1] + +0.0289681736*Close[i+15+1] + +0.0315922931*Close[i+16+1] + +0.0340614696*Close[i+17+1] + +0.0363444061*Close[i+18+1] + +0.0384120882*Close[i+19+1] + +0.0402373884*Close[i+20+1] + +0.0417969735*Close[i+21+1] + +0.0430701377*Close[i+22+1] + +0.0440399188*Close[i+23+1] + +0.0446941124*Close[i+24+1] + +0.0450230100*Close[i+25+1] + +0.0450230100*Close[i+26+1] + +0.0446941124*Close[i+27+1] + +0.0440399188*Close[i+28+1] + +0.0430701377*Close[i+29+1] + +0.0417969735*Close[i+30+1] + +0.0402373884*Close[i+31+1] + +0.0384120882*Close[i+32+1] + +0.0363444061*Close[i+33+1] + +0.0340614696*Close[i+34+1] + +0.0315922931*Close[i+35+1] + +0.0289681736*Close[i+36+1] + +0.0262218588*Close[i+37+1] + +0.0233865835*Close[i+38+1] + +0.0204976517*Close[i+39+1] + +0.0175884606*Close[i+40+1] + +0.0146922652*Close[i+41+1] + +0.0118431116*Close[i+42+1] + +0.0090702334*Close[i+43+1] + +0.0064043271*Close[i+44+1] + +0.0038713513*Close[i+45+1] + +0.0014951741*Close[i+46+1] + -0.0007031702*Close[i+47+1] + -0.0027054278*Close[i+48+1] + -0.0044979052*Close[i+49+1] + -0.0060698985*Close[i+50+1] + -0.0074151919*Close[i+51+1] + -0.0085278517*Close[i+52+1] + -0.0094111161*Close[i+53+1] + -0.0100658241*Close[i+54+1] + -0.0104994302*Close[i+55+1] + -0.0107227904*Close[i+56+1] + -0.0107450280*Close[i+57+1] + -0.0105824763*Close[i+58+1] + -0.0102517019*Close[i+59+1] + -0.0097708805*Close[i+60+1] + -0.0091581551*Close[i+61+1] + -0.0084345004*Close[i+62+1] + -0.0076214397*Close[i+63+1] + -0.0067401718*Close[i+64+1] + -0.0058083144*Close[i+65+1] + -0.0048528295*Close[i+66+1] + -0.0038816271*Close[i+67+1] + -0.0029244713*Close[i+68+1] + -0.0019911267*Close[i+69+1] + -0.0010974211*Close[i+70+1] + -0.0002535559*Close[i+71+1] + +0.0005231953*Close[i+72+1] + +0.0012297491*Close[i+73+1] + +0.0018539149*Close[i+74+1] + +0.0023994354*Close[i+75+1] + +0.0028490136*Close[i+76+1] + +0.0032221429*Close[i+77+1] + +0.0034936183*Close[i+78+1] + +0.0036818974*Close[i+79+1] + +0.0038037944*Close[i+80+1] + +0.0038338964*Close[i+81+1] + +0.0037975350*Close[i+82+1] + +0.0036986051*Close[i+83+1] + +0.0035521320*Close[i+84+1] + +0.0033559226*Close[i+85+1] + +0.0031224409*Close[i+86+1] + +0.0028550092*Close[i+87+1] + +0.0025688349*Close[i+88+1] + +0.0022682355*Close[i+89+1] + +0.0073925495*Close[i+90+1]; + + FTLM=(value11-value21); + FTLM1=(value31-value41); + STLM=(value12-value22); + STLM1=(value32-value42); + + if(FTLM>FTLM1) {Up1[i]=FTLM;Down1[i]=EMPTY_VALUE;} else {Down1[i]=FTLM;Up1[i]=EMPTY_VALUE;} + if(STLM>STLM1) {Up2[i]=STLM;Down2[i]=EMPTY_VALUE;} else {Down2[i]=STLM;Up2[i]=EMPTY_VALUE;} + + i--; + } + return(0); + } +//+------------------------------------------------------------------+ diff --git a/ForexComboSystem_v5.0(4in1)EURUSD.mq4 b/ForexComboSystem_v5.0(4in1)EURUSD.mq4 new file mode 100644 index 0000000..a851a7a --- /dev/null +++ b/ForexComboSystem_v5.0(4in1)EURUSD.mq4 @@ -0,0 +1,1529 @@ +#property copyright "http://myfxbook.3dn.ru/" +#property link "http://myfxbook.3dn.ru/" + +#import "wininet.dll" + int InternetOpenA(string a0, int a1, string a2, string a3, int a4); + int InternetOpenUrlA(int a0, string a1, string a2, int a3, int a4, int a5); + int InternetReadFile(int a0, string a1, int a2, int& a3[]); + int InternetCloseHandle(int a0); +#import "FCS500.dll" + int dllInit(int a0, int a1, int a2, int a3, int a4); + int dllOpenCond1(int a0, double a1, double a2, double a3, double a4, double a5, double a6, int a7, int a8, int a9); + int dllCloseCond1(int a0, double a1, double a2); + int dllOpenCond2(int a0, double a1, double a2, double a3, double a4, double a5, double a6); + int dllCloseCond2(int a0, double a1, double a2, double a3, double a4); + int dllOpenCond3(int a0, double a1, double a2, double a3, double a4, double a5, double a6); + int dllCloseCond3(int a0, double a1, double a2, double a3, double a4, double a5, double a6); + int dllOpenCond4(int a0, int a1, int a2, int a3, double a4, double a5, double a6, double a7, double a8, double a9); + int dllCloseCond4(int a0, double a1, double a2, double a3, double a4); + int dllParamInit1(int a0); + int dllParamInit2(int a0); + double dllExpTrailLong(double a0, double a1, double a2); + double dllExpTrailShort(double a0, double a1, double a2); + int dllGMTOffset(); +#import + +//string gs_76 = "http://forex-combo.com/verify4in1.php"; +bool gi_84 = FALSE; +extern string A = "===================="; +extern bool Use_FXCOMBO_Scalping = TRUE; +extern bool Use_FXCOMBO_Breakout = TRUE; +extern bool Use_FXCOMBO_Reversal = TRUE; +extern bool Use_FXCOMBO_EuroRange = TRUE; +extern string B = "===================="; +extern bool Use_ECN_Execution = TRUE; +extern bool Hidden_StopAndTarget = FALSE; +extern bool No_Hedge_Trades = FALSE; +extern bool NFA_Compatibility = FALSE; +extern string C = "===================="; +extern string CommentSys1 = "*** 1 ***"; +extern string CommentSys2 = "*** 2 ***"; +extern string CommentSys3 = "*** 3 ***"; +extern string CommentSys4 = "*** 4 ***"; +extern string D = "===================="; +extern int Magic1 = 111; +extern int Magic2 = 222; +extern int Magic3 = 333; +extern int Magic4 = 444; +extern string E = "===================="; +extern double MaxSPREAD = 4.0; +extern int Slippage = 2; +extern bool AutoGMT_Offset = TRUE; +extern int ManualGMT_Offset = 2; +extern bool Calculate_DST = TRUE; +extern bool UseAgresiveMM = FALSE; +extern bool EMAIL_Notification = FALSE; +extern string MMSys1 = "==== FXCOMBO Scalping MM Parameters ===="; +extern double LotsSys1 = 0.1; +extern double TradeMMSys1 = 0.0; +extern double LossFactorSys1 = 2.0; +int gi_272 = 0; +int gi_276 = 2; +int gi_280 = 0; +extern string MMSys2 = "==== FXCOMBO Breakout MM Parameters ===="; +extern double LotsSys2 = 0.1; +extern double TradeMMSys2 = 0.0; +extern double LossFactorSys2 = 2.0; +int gi_316 = 0; +int gi_320 = 2; +int gi_324 = 0; +extern string MMSys3 = "==== FXCOMBO Reversal MM Parameters ===="; +extern double LotsSys3 = 0.1; +extern double TradeMMSys3 = 0.0; +extern double LossFactorSys3 = 2.0; +int gi_360 = 0; +int gi_364 = 2; +int gi_368 = 0; +extern string MMSys4 = "==== FXCOMBO EuroRange MM Parameters ===="; +extern double LotsSys4 = 0.1; +extern double TradeMMSys4 = 0.0; +extern double LossFactorSys4 = 2.0; +int gi_404 = 0; +int gi_408 = 2; +int gi_412 = 0; +extern string CommonMM = "==== Main MM Parameters ===="; +extern double MMMax = 20.0; +extern double MaximalLots = 50.0; +extern string Scalping = "==== FXCOMBO Scalping System Parameters ===="; +extern int StopLoss = 40; +extern int TakeProfit = 19; +int g_period_456 = 60; +extern int TREND_STR = 24; +int g_period_464 = 11; +extern int OSC_open = 5; +extern int OSC_close = 14; +int gi_476 = -5; +int gi_480 = -1; +int gi_484 = -1; +int gi_488 = 6; +extern string Breakout = "==== FXCOMBO Breakout System Parameters ===="; +extern int TakeProfit_II = 70; +extern int StopLoss_II = 34; +extern int MaxPipsTrailing2 = 45; +extern int MinPipsTrailing2 = 10; +extern int Break = 6; +int g_period_520 = 1; +int g_period_524 = 19; +double gd_528 = 1.45; +extern double ATRTrailingFactor2 = 1.15; +int gi_544 = 300; +extern int F_TrailingProfit_II = 40; +extern int F_Trailing_II = 30; +extern bool Use_Exp_Trailing_II = FALSE; +extern double Exp_Trail_Factor_II = 0.16; +int gi_568 = 30; +int gi_572 = 45; +int gi_576 = 0; +int gi_580 = 3; +int gi_584 = 0; +int gi_588 = 19; +int gi_592 = 14; +int gi_596 = 17; +int gi_600 = 20; +int gi_604 = 9; +int gi_608 = 7; +int gi_612 = 13; +int gi_616 = 8; +int gi_620 = 3; +int gi_624 = 3; +extern string Reversal = "==== FXCOMBO Reversal System Parameters ===="; +extern int BegHourSys_III = 22; +extern int EndHourSys_III = 0; +extern int TakeProfit_III = 170; +extern int StopLoss_III = 70; +int gi_652 = 300; +extern int MaxPipsTrailing3 = 140; +extern int MinPipsTrailing3 = 20; +int g_period_664 = 50; +double gd_668 = 9.0; +int g_period_676 = 18; +int gi_680 = -6; +int gi_684 = 25; +extern int F_TrailingProfit_III = 160; +extern int F_Trailing_III = 20; +extern bool Use_Exp_Trailing_III = FALSE; +extern double Exp_Trail_Factor_III = 1.0; +extern string EuroRange = "==== FXCOMBO EuroRange System Parameters ===="; +int gi_716 = 5; +int gi_720 = 40; +extern int MaxRangePips = 95; +extern int BreakPips = -12; +extern double TargetPercent = 5.0; +extern int StopLoss_IV = 41; +int gi_744 = 300; +int gi_748 = 100; +int gi_752 = 5; +double gd_756 = 100.0; +int gi_764 = 300; +int gi_768 = 30; +extern bool Use_Exp_Trailing_IV = TRUE; +extern double Exp_Trail_Factor_IV = 0.15; +extern int ReverseTF = 5; +extern int ExitProfit = 80; +extern string NF = "==== News Filter Settings ===="; +extern bool Include_Medium_News = TRUE; +extern int Wait_Before_News = 30; +extern int Wait_After_News = 30; +extern bool NewsFilterSys1 = FALSE; +extern bool NewsFilterSys2 = FALSE; +extern bool NewsFilterSys3 = FALSE; +extern bool NewsFilterSys4 = FALSE; +string gs_828 = ""; +string gs_836 = ""; +string gs_844 = ""; +int g_datetime_852 = 0; +bool gi_856 = TRUE; +string gs_860 = ""; +string gs_868 = ""; +int gi_876 = 0; +int gi_880 = -1; +double g_minlot_884 = 0.0; +double g_maxlot_892 = 0.0; +int g_leverage_900 = 0; +int g_lotsize_904 = 0; +double g_lotstep_908 = 0.0; +int g_datetime_916 = 0; +int g_datetime_920 = 0; +int g_datetime_924 = 0; +int g_datetime_928 = 0; +int gi_932; +int gi_936; +int gi_940 = 0; +int gi_944 = 1; +int gi_unused_948 = 3; +int gi_952 = 13; +int g_datetime_956 = 0; +int g_index_960 = 0; +int gia_964[1000]; +string gsa_968[1000]; +string gsa_972[1000]; + +// E37F0136AA3FFAF149B351F6A4C948E9 +int init() { + gi_856 = TRUE; + gi_84 = FALSE; + Comment(""); + if (ObjectFind("klc") >= 0) ObjectDelete("klc"); + if (ObjectFind("klc2") >= 0) ObjectDelete("klc2"); + if (ObjectFind("klc3") >= 0) ObjectDelete("klc3"); + return (0); +} + +// 52D46093050F38C27267BCE42543EF60 +int deinit() { + Comment(""); + if (ObjectFind("klc") >= 0) ObjectDelete("klc"); + if (ObjectFind("klc2") >= 0) ObjectDelete("klc2"); + if (ObjectFind("klc3") >= 0) ObjectDelete("klc3"); + return (0); +} + +// EA2B2676C28C0DB26D39331A336C6B92 +int start() { + double price_0; + double price_8; + double price_16; + color color_32; + string ls_48; + int li_56; + string ls_60; + bool bool_68; + bool bool_72; + bool bool_76; + double ld_88; + string ls_104; + int li_120; + int li_300; + int li_304; + int li_308; + int li_312; + int li_316; + int li_320; + int li_324; + int ticket_452; + int ticket_456; + int ticket_460; + int ticket_464; + double price_472; + double price_480; + double price_488; + double price_496; + double ld_504; + double price_512; + double price_520; + double price_528; + double ld_536; + double price_544; + double price_552; + double price_560; + string ls_616; + double ld_40 = 1; + if (gi_856) { + gi_856 = FALSE; + g_minlot_884 = MarketInfo(Symbol(), MODE_MINLOT); + g_maxlot_892 = MarketInfo(Symbol(), MODE_MAXLOT); + g_leverage_900 = AccountLeverage(); + g_lotsize_904 = MarketInfo(Symbol(), MODE_LOTSIZE); + g_lotstep_908 = MarketInfo(Symbol(), MODE_LOTSTEP); + gi_880 = -1; + gs_828 = ""; + gs_836 = ""; + gs_844 = ""; + g_datetime_852 = 0; + } + if ((!IsTesting()) && IsStopped()) return (0); + if ((!IsTesting()) && !IsTradeAllowed()) { + Comment("Trading server: Trading is not Allowed ..."); + return (0); + } + if ((!IsTesting()) && IsTradeContextBusy()) { + Comment("Trading server: Trade Context is Busy ..."); + return (0); + } + if (iATR(NULL, PERIOD_M5, 1, 1) < Point / 2.0) return (0); + if (IsDllsAllowed() == FALSE) { + Comment("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors."); + Print("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors."); + Alert("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors."); + Sleep(30000); + return (0); + } + gi_84 = TRUE; + /*if ((!gi_84) && !IsTesting()) { + if (IsDemo() == FALSE) ls_60 = "AccountType=2"; + else ls_60 = "AccountType=1"; + if (f0_11(gs_76 + "?AccountId=" + DoubleToStr(AccountNumber(), 0) + "&" + ls_60, ls_48)) { + if (StringTrimRight(StringTrimLeft(f0_10(ls_48, 0, "", "", li_56))) == "OK") gi_84 = TRUE; + else { + Comment("Online validation is not passed. For more information, contact us at support@forex-combo.com!"); + Alert("Online validation is not passed. For more information, contact us at support@forex-combo.com!"); + Sleep(30000); + return (0); + } + } else { + Comment("\n Online validation failed (error number " + DoubleToStr(GetLastError(), 0) + "). Visit www.forex-combo.com for more information!"); + Alert("Online validation failed (error number " + DoubleToStr(GetLastError(), 0) + "). Visit www.forex-combo.com for more information!"); + Sleep(30000); + return (0); + } + }*/ + if (gi_880 <= 0) { + gi_880 = f0_23(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), TimeCurrent()); + if (IsTesting()) Calculate_DST = FALSE; + if (IsTesting() || AutoGMT_Offset == FALSE) gi_876 = ManualGMT_Offset; + if (!IsTesting() && AutoGMT_Offset == TRUE && Calculate_DST == TRUE && (Month() > 3 && Month() < 11)) gi_876 = f0_17() - 1; + if (!IsTesting() && AutoGMT_Offset == TRUE && Calculate_DST == TRUE && Month() <= 3 || Month() >= 11) gi_876 = f0_17(); + if (!IsTesting() && AutoGMT_Offset == TRUE && Calculate_DST == FALSE) gi_876 = f0_17(); + } + if (gi_880 <= 0 && gi_84 && (!IsTesting())) { + Comment("DLL initialization is failed (" + DoubleToStr(gi_880, 0) + "). For more information, contact us at support@forex-combo.com!"); + Alert("DLL initialization is failed (" + DoubleToStr(gi_880, 0) + "). For more information, contact us at support@forex-combo.com!"); + Sleep(10000); + return (0); + } + if (gi_880 <= 0 && IsTesting()) Print("DLL initialization is failed (" + DoubleToStr(gi_880, 0) + "). Please register you test account at forex-combo.com!"); + int stoplevel_80 = MarketInfo(Symbol(), MODE_STOPLEVEL); + bool li_84 = TRUE; + if (stoplevel_80 == 0 || Use_ECN_Execution == TRUE || Hidden_StopAndTarget == TRUE) li_84 = FALSE; + if (Digits <= 3) ld_88 = 0.01; + else ld_88 = 0.0001; + double ld_96 = NormalizeDouble((Ask - Bid) / ld_88, 1); + if (IsTesting()) Calculate_DST = FALSE; + if (Calculate_DST == TRUE) ls_104 = "YES"; + if (Calculate_DST == FALSE) ls_104 = "NO"; + string ls_112 = "*** SPREAD OK ***"; + if (ld_96 > MaxSPREAD) ls_112 = "*** SPREAD IS TOO HIGH ***"; + if (!IsTesting()) li_120 = f0_17(); + else li_120 = ManualGMT_Offset; + gs_860 = "\n\n Greenwich Mean Time : " + TimeToStr(TimeCurrent() - 3600 * li_120, TIME_DATE|TIME_MINUTES|TIME_SECONDS) + + "\n Broker Time : " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS) + + "\n Calculate DST: " + ls_104; + string ls_124 = "FX COMBO is running on your account - Validation OK"; + string ls_132 = "FX COMBO is set up for time zone GMT " + gi_876; + string ls_140 = "Spread= " + DoubleToStr(ld_96, 1) + " pips"; + string ls_148 = "Account Balance= " + DoubleToStr(AccountBalance(), 2); + string ls_156 = ls_112; + string ls_164 = ""; + f0_2(); + if (gs_836 != "") { + ls_164 = "\n" + + gs_836; + } + ls_164 = ls_164 + + "\n\n " + gs_828; + Comment("\n\n\n\n\n " + ls_124 + " \n " + ls_132 + " \n " + ls_140 + " \n " + ls_148 + " \n\n " + ls_156 + " " + gs_860 + " " + gs_868 + ls_164); + ObjectCreate("klc", OBJ_LABEL, 0, 0, 0); + ObjectSetText("klc", " ** FOREX COMBO SYSTEM 4 in 1 **", 9, "System", Red); + ObjectSet("klc", OBJPROP_CORNER, 0); + ObjectSet("klc", OBJPROP_XDISTANCE, 0); + ObjectSet("klc", OBJPROP_YDISTANCE, 29); + ObjectCreate("klc3", OBJ_LABEL, 0, 0, 0); + ObjectSetText("klc3", " Copyright © www.fxautomater.com ", 9, "System", Gray); + ObjectSet("klc3", OBJPROP_CORNER, 0); + ObjectSet("klc3", OBJPROP_XDISTANCE, 0); + ObjectSet("klc3", OBJPROP_YDISTANCE, 45); + if (UseAgresiveMM != TRUE) { + LossFactorSys1 = 1; + LossFactorSys2 = 1; + LossFactorSys3 = 1; + LossFactorSys4 = 1; + } + HideTestIndicators(TRUE); + double iclose_172 = iClose(NULL, PERIOD_M15, 1); + double ima_180 = iMA(NULL, PERIOD_M15, g_period_456, 0, MODE_SMMA, PRICE_CLOSE, 1); + double iwpr_188 = iWPR(NULL, PERIOD_M15, g_period_464, 1); + double iatr_196 = iATR(NULL, PERIOD_H1, g_period_524, 1); + double ima_204 = iMA(NULL, PERIOD_H1, g_period_520, 0, MODE_EMA, PRICE_CLOSE, 1); + double ld_212 = ima_204 + iatr_196 * gd_528; + double ld_220 = ima_204 - iatr_196 * gd_528; + double iclose_228 = iClose(NULL, PERIOD_M5, 1); + double iatr_236 = iATR(NULL, PERIOD_M5, 5, 1); + double iatr_244 = iATR(NULL, PERIOD_M5, g_period_664, 1); + double ihigh_252 = iHigh(NULL, PERIOD_H1, 1); + double ilow_260 = iLow(NULL, PERIOD_H1, 1); + double ibands_268 = iBands(NULL, PERIOD_H1, g_period_676, 2, 0, PRICE_CLOSE, MODE_UPPER, 1); + double ibands_276 = iBands(NULL, PERIOD_H1, g_period_676, 2, 0, PRICE_CLOSE, MODE_LOWER, 1); + HideTestIndicators(FALSE); + double ihigh_284 = iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, MODE_HIGH, gi_716, 1)); + double ilow_292 = iLow(NULL, PERIOD_H1, iLowest(NULL, PERIOD_H1, MODE_LOW, gi_716, 1)); + if (gi_480 < 0) f0_19(gi_480, gi_484); + if (gi_580 < 0) f0_8(gi_580, gi_584, gi_588, gi_592, gi_596, gi_600, gi_604, gi_608, gi_612, gi_616, gi_620, gi_624); + if (TakeProfit < stoplevel_80 * Point / ld_88) li_300 = stoplevel_80 * Point / ld_88; + else li_300 = TakeProfit; + if (StopLoss < stoplevel_80 * Point / ld_88) li_304 = stoplevel_80 * Point / ld_88; + else li_304 = StopLoss; + if (TakeProfit_II < stoplevel_80 * Point / ld_88) li_308 = stoplevel_80 * Point / ld_88; + else li_308 = TakeProfit_II; + if (StopLoss_II < stoplevel_80 * Point / ld_88) li_312 = stoplevel_80 * Point / ld_88; + else li_312 = StopLoss_II; + if (TakeProfit_III < stoplevel_80 * Point / ld_88) li_316 = stoplevel_80 * Point / ld_88; + else li_316 = TakeProfit_III; + if (StopLoss_III < stoplevel_80 * Point / ld_88) li_320 = stoplevel_80 * Point / ld_88; + else li_320 = StopLoss_III; + if (StopLoss_IV < stoplevel_80 * Point / ld_88) li_324 = stoplevel_80 * Point / ld_88; + else li_324 = StopLoss_IV; + int li_328 = gi_480 + gi_876; + int li_332 = gi_480 + gi_876; + int li_336 = BegHourSys_III + gi_876; + int li_340 = EndHourSys_III + gi_876; + if (li_328 > 23) li_328 -= 24; + if (li_328 < 0) li_328 += 24; + if (li_336 > 23) li_336 -= 24; + if (li_336 < 0) li_336 += 24; + if (li_332 > 23) li_332 -= 24; + if (li_332 < 0) li_332 += 24; + if (li_340 > 23) li_340 -= 24; + if (li_340 < 0) li_340 += 24; + int li_344 = gi_580 + gi_876; + int li_348 = gi_584 + gi_876; + int li_352 = gi_588 + gi_876; + int li_356 = gi_592 + gi_876; + int li_360 = gi_596 + gi_876; + int li_364 = gi_600 + gi_876; + int li_368 = gi_604 + gi_876; + int li_372 = gi_608 + gi_876; + int li_376 = gi_612 + gi_876; + int li_380 = gi_616 + gi_876; + int li_384 = gi_620 + gi_876; + int li_388 = gi_624 + gi_876; + if (li_344 > 23) li_344 -= 24; + if (li_344 < 0) li_344 += 24; + if (li_348 > 23) li_348 -= 24; + if (li_348 < 0) li_348 += 24; + if (li_352 > 23) li_352 -= 24; + if (li_352 < 0) li_352 += 24; + if (li_356 > 23) li_356 -= 24; + if (li_356 < 0) li_356 += 24; + if (li_360 > 23) li_360 -= 24; + if (li_360 < 0) li_360 += 24; + if (li_364 > 23) li_364 -= 24; + if (li_364 < 0) li_364 += 24; + if (li_368 > 23) li_368 -= 24; + if (li_368 < 0) li_368 += 24; + if (li_372 > 23) li_372 -= 24; + if (li_372 < 0) li_372 += 24; + if (li_376 > 23) li_376 -= 24; + if (li_376 < 0) li_376 += 24; + if (li_380 > 23) li_380 -= 24; + if (li_380 < 0) li_380 += 24; + if (li_384 > 23) li_384 -= 24; + if (li_384 < 0) li_384 += 24; + if (li_388 > 23) li_388 -= 24; + if (li_388 < 0) li_388 += 24; + int slippage_392 = Slippage * (ld_88 / Point); + int count_396 = 0; + int count_400 = 0; + int count_404 = 0; + int count_408 = 0; + int count_412 = 0; + int count_416 = 0; + int count_420 = 0; + int count_424 = 0; + int datetime_428 = g_datetime_916; + int li_432 = g_datetime_916 + gi_544; + int datetime_436 = g_datetime_920; + int li_440 = g_datetime_920 + gi_652; + int datetime_444 = g_datetime_924; + int li_448 = g_datetime_924 + gi_744; + for (int pos_468 = OrdersTotal() - 1; pos_468 >= 0; pos_468--) { + if (!OrderSelect(pos_468, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", pos_468); + else { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { + if (OrderMagicNumber() == Magic1) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_472 = NormalizeDouble(OrderOpenPrice() - li_304 * ld_88, Digits); + price_480 = NormalizeDouble(OrderOpenPrice() + li_300 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_472, price_480, 0, Green); + } + if ((f0_22(gi_880, iwpr_188, OSC_close) == 0 && Bid > iclose_172 + gi_476 * ld_88) || Bid >= OrderOpenPrice() + li_300 * ld_88 || Bid <= OrderOpenPrice() - li_304 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_392, Violet); + Sleep(5000); + } else count_396++; + } else { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_472 = NormalizeDouble(OrderOpenPrice() + li_304 * ld_88, Digits); + price_480 = NormalizeDouble(OrderOpenPrice() - li_300 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_472, price_480, 0, Green); + } + if ((f0_22(gi_880, iwpr_188, OSC_close) == 1 && Bid < iclose_172 - gi_476 * ld_88) || Ask <= OrderOpenPrice() - li_300 * ld_88 || Ask >= OrderOpenPrice() + li_304 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_392, Violet); + Sleep(5000); + } else count_400++; + } + } + if (OrderMagicNumber() == Magic2) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_488 = NormalizeDouble(OrderOpenPrice() - li_312 * ld_88, Digits); + price_496 = NormalizeDouble(OrderOpenPrice() + li_308 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_488, price_496, 0, Green); + } + if ((f0_24(gi_880, iclose_228, ld_220, ld_212, Break * ld_88) == 0 && TimeCurrent() - OrderOpenTime() > 3600) || Bid >= OrderOpenPrice() + li_308 * ld_88 || Bid <= OrderOpenPrice() - li_312 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_392, Violet); + Sleep(5000); + } else count_404++; + if (TimeCurrent() >= li_432) { + if (Use_Exp_Trailing_II) { + ld_504 = f0_9(Exp_Trail_Factor_II * ld_88, OrderOpenPrice(), iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0))); + } else ld_504 = iatr_196 * ATRTrailingFactor2; + if (ld_504 > MaxPipsTrailing2 * ld_88) ld_504 = MaxPipsTrailing2 * ld_88; + if (ld_504 < MinPipsTrailing2 * ld_88) ld_504 = MinPipsTrailing2 * ld_88; + if (Bid - OrderOpenPrice() > F_TrailingProfit_II * ld_88 && (!Use_Exp_Trailing_II)) ld_504 = F_Trailing_II * ld_88; + price_512 = NormalizeDouble(Bid - ld_504, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 60 && Bid <= MathMax(OrderOpenPrice() - li_312 * ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, + PERIOD_M5, OrderOpenTime()) + 1, 0)) - ld_504) && iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) - OrderOpenPrice() > ld_504) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_392, Violet); + Sleep(5000); + } + } else { + if (Bid - OrderOpenPrice() > ld_504) { + if (OrderStopLoss() <= price_512 - Point) { + bool_68 = OrderModify(OrderTicket(), OrderOpenPrice(), price_512, OrderTakeProfit(), 0, Blue); + if (bool_68) { + datetime_428 = TimeCurrent(); + g_datetime_916 = datetime_428; + } + } + } + } + } + } else { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_488 = NormalizeDouble(OrderOpenPrice() + li_312 * ld_88, Digits); + price_496 = NormalizeDouble(OrderOpenPrice() - li_308 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_488, price_496, 0, Green); + } + if ((f0_24(gi_880, iclose_228, ld_220, ld_212, Break * ld_88) == 1 && TimeCurrent() - OrderOpenTime() > 3600) || Ask <= OrderOpenPrice() - li_308 * ld_88 || Ask >= OrderOpenPrice() + + li_312 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_392, Violet); + Sleep(5000); + } else count_408++; + if (TimeCurrent() >= li_432) { + if (Use_Exp_Trailing_II) { + ld_504 = f0_16(Exp_Trail_Factor_II * ld_88, OrderOpenPrice(), iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0)) + Ask - Bid); + } else ld_504 = iatr_196 * ATRTrailingFactor2; + if (ld_504 > MaxPipsTrailing2 * ld_88) ld_504 = MaxPipsTrailing2 * ld_88; + if (ld_504 < MinPipsTrailing2 * ld_88) ld_504 = MinPipsTrailing2 * ld_88; + if (OrderOpenPrice() - Ask > F_TrailingProfit_II * ld_88 && (!Use_Exp_Trailing_II)) ld_504 = F_Trailing_II * ld_88; + price_512 = NormalizeDouble(Ask + ld_504, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 60 && Ask >= Ask - Bid + MathMin(OrderOpenPrice() + li_312 * ld_88, iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, + iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) + ld_504) && OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, + OrderOpenTime()) + 1, 0)) + Ask - Bid) > ld_504) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_392, Violet); + Sleep(5000); + } + } else { + if (OrderOpenPrice() - Ask > ld_504) { + if (OrderStopLoss() >= price_512 + Point) { + bool_68 = OrderModify(OrderTicket(), OrderOpenPrice(), price_512, OrderTakeProfit(), 0, Red); + if (bool_68) { + datetime_428 = TimeCurrent(); + g_datetime_916 = datetime_428; + } + } + } + } + } + } + } + if (OrderMagicNumber() == Magic3) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_520 = NormalizeDouble(OrderOpenPrice() - li_320 * ld_88, Digits); + price_528 = NormalizeDouble(OrderOpenPrice() + li_316 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_520, price_528, 0, Green); + } + if (((li_336 <= li_340 && TimeHour(TimeCurrent()) >= li_336 && TimeHour(TimeCurrent()) <= li_340) || (li_336 > li_340 && TimeHour(TimeCurrent()) >= li_336 || TimeHour(TimeCurrent()) <= li_340) && + f0_20(gi_880, ibands_268, ibands_276, gi_684 * ld_88, ihigh_252, ilow_260, gi_680 * ld_88) == 0 && TimeCurrent() - OrderOpenTime() > 7200) || Bid >= OrderOpenPrice() + + li_316 * ld_88 || Bid <= OrderOpenPrice() - li_320 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_392, Violet); + Sleep(5000); + } else count_412++; + if (TimeCurrent() >= li_440) { + if (Use_Exp_Trailing_III) { + ld_536 = Exp_Trail_Factor_III * ld_88 / MathMax(ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, + 0)) - OrderOpenPrice()); + } else ld_536 = iatr_244 * gd_668; + if (ld_536 > MaxPipsTrailing3 * ld_88) ld_536 = MaxPipsTrailing3 * ld_88; + if (ld_536 < MinPipsTrailing3 * ld_88) ld_536 = MinPipsTrailing3 * ld_88; + if (Bid - OrderOpenPrice() > F_TrailingProfit_III * ld_88 && (!Use_Exp_Trailing_III)) ld_536 = F_Trailing_III * ld_88; + price_544 = NormalizeDouble(Bid - ld_536, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 300 && Bid <= MathMax(OrderOpenPrice() - li_320 * ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, + PERIOD_M5, OrderOpenTime()) + 1, 0)) - ld_536) && iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) - OrderOpenPrice() > ld_536) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_392, Violet); + Sleep(5000); + } + } else { + if (Bid - OrderOpenPrice() > ld_536) { + if (OrderStopLoss() <= price_544 - Point) { + bool_72 = OrderModify(OrderTicket(), OrderOpenPrice(), price_544, OrderTakeProfit(), 0, Blue); + if (bool_72) { + datetime_436 = TimeCurrent(); + g_datetime_920 = datetime_436; + } + } + } + } + } + } else { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_520 = NormalizeDouble(OrderOpenPrice() + li_320 * ld_88, Digits); + price_528 = NormalizeDouble(OrderOpenPrice() - li_316 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_520, price_528, 0, Green); + } + if (((li_336 <= li_340 && TimeHour(TimeCurrent()) >= li_336 && TimeHour(TimeCurrent()) <= li_340) || (li_336 > li_340 && TimeHour(TimeCurrent()) >= li_336 || TimeHour(TimeCurrent()) <= li_340) && + f0_20(gi_880, ibands_268, ibands_276, gi_684 * ld_88, ihigh_252, ilow_260, gi_680 * ld_88) == 1 && TimeCurrent() - OrderOpenTime() > 7200) || Ask <= OrderOpenPrice() - li_316 * ld_88 || + Ask >= OrderOpenPrice() + li_320 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_392, Violet); + Sleep(5000); + } else count_416++; + if (TimeCurrent() >= li_440) { + if (Use_Exp_Trailing_III) { + ld_536 = Exp_Trail_Factor_III * ld_88 / MathMax(ld_88, OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0)) + Ask - Bid)); + } else ld_536 = iatr_244 * gd_668; + if (ld_536 > MaxPipsTrailing3 * ld_88) ld_536 = MaxPipsTrailing3 * ld_88; + if (ld_536 < MinPipsTrailing3 * ld_88) ld_536 = MinPipsTrailing3 * ld_88; + if (OrderOpenPrice() - Ask > F_TrailingProfit_III * ld_88 && (!Use_Exp_Trailing_III)) ld_536 = F_Trailing_III * ld_88; + price_544 = NormalizeDouble(Ask + ld_536, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 300 && Ask >= Ask - Bid + MathMin(OrderOpenPrice() + li_320 * ld_88, iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, + iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) + ld_536) && OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, + OrderOpenTime()) + 1, 0)) + Ask - Bid) > ld_536) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_392, Violet); + Sleep(5000); + } + } else { + if (OrderOpenPrice() - Ask > ld_536) { + if (OrderStopLoss() >= price_544 + Point) { + bool_72 = OrderModify(OrderTicket(), OrderOpenPrice(), price_544, OrderTakeProfit(), 0, Red); + if (bool_72) { + datetime_436 = TimeCurrent(); + g_datetime_920 = datetime_436; + } + } + } + } + } + } + } + if (OrderMagicNumber() == Magic4) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_552 = NormalizeDouble(ilow_292 - li_324 * ld_88, Digits); + price_560 = NormalizeDouble(OrderOpenPrice() + (ihigh_284 - ilow_292) * TargetPercent, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_552, price_560, 0, Green); + } + if ((TimeCurrent() - OrderOpenTime() > 300 && f0_15(gi_880, iClose(NULL, ReverseTF, 1), iOpen(NULL, ReverseTF, 1), Bid - OrderOpenPrice(), ExitProfit * ld_88) == 0) || + Bid >= OrderOpenPrice() + (iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, MODE_HIGH, gi_716, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) - iLow(NULL, PERIOD_H1, + iLowest(NULL, PERIOD_H1, MODE_LOW, gi_716, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1))) * TargetPercent || Bid <= iLow(NULL, PERIOD_H1, iLowest(NULL, PERIOD_H1, + MODE_LOW, gi_716, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) - li_324 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_392, Violet); + Sleep(5000); + } else count_420++; + if (TimeCurrent() < li_448) continue; + if (Use_Exp_Trailing_IV) { + ld_536 = Exp_Trail_Factor_IV * ld_88 / MathMax(ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, + 0)) - OrderOpenPrice()); + } else ld_536 = iatr_244 * gd_756; + if (ld_536 > gi_748 * ld_88) ld_536 = gi_748 * ld_88; + if (ld_536 < gi_752 * ld_88) ld_536 = gi_752 * ld_88; + if (Bid - OrderOpenPrice() > gi_764 * ld_88 && (!Use_Exp_Trailing_IV)) ld_536 = gi_768 * ld_88; + price_544 = NormalizeDouble(Bid - ld_536, Digits); + if (Hidden_StopAndTarget) { + if (!(TimeCurrent() - OrderOpenTime() > 300 && Bid <= MathMax(OrderOpenPrice() - li_324 * ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, + PERIOD_M5, OrderOpenTime()) + 1, 0)) - ld_536) && iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) - OrderOpenPrice() > ld_536)) continue; + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_392, Violet); + Sleep(5000); + } else { + if (Bid - OrderOpenPrice() <= ld_536) continue; + if (OrderStopLoss() > price_544 - Point) continue; + bool_76 = OrderModify(OrderTicket(), OrderOpenPrice(), price_544, OrderTakeProfit(), 0, Blue); + if (!(bool_76)) continue; + datetime_444 = TimeCurrent(); + g_datetime_924 = datetime_444; + continue; + } + } + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_552 = NormalizeDouble(ihigh_284 + li_324 * ld_88, Digits); + price_560 = NormalizeDouble(OrderOpenPrice() - (ihigh_284 - ilow_292) * TargetPercent, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_552, price_560, 0, Green); + } + if ((TimeCurrent() - OrderOpenTime() > 300 && f0_15(gi_880, iClose(NULL, ReverseTF, 1), iOpen(NULL, ReverseTF, 1), OrderOpenPrice() - Ask, ExitProfit * ld_88) == 1) || + Ask <= OrderOpenPrice() - (iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, MODE_HIGH, gi_716, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) - iLow(NULL, PERIOD_H1, + iLowest(NULL, PERIOD_H1, MODE_LOW, gi_716, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1))) * TargetPercent || Ask >= iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, + MODE_HIGH, gi_716, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) + li_324 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_392, Violet); + Sleep(5000); + } else count_424++; + if (TimeCurrent() >= li_448) { + if (Use_Exp_Trailing_IV) { + ld_536 = Exp_Trail_Factor_IV * ld_88 / MathMax(ld_88, OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0)) + Ask - Bid)); + } else ld_536 = iatr_244 * gd_756; + if (ld_536 > gi_748 * ld_88) ld_536 = gi_748 * ld_88; + if (ld_536 < gi_752 * ld_88) ld_536 = gi_752 * ld_88; + if (OrderOpenPrice() - Ask > F_TrailingProfit_III * ld_88 && (!Use_Exp_Trailing_IV)) ld_536 = gi_768 * ld_88; + price_544 = NormalizeDouble(Ask + ld_536, Digits); + if (Hidden_StopAndTarget) { + if (!(TimeCurrent() - OrderOpenTime() > 300 && Ask >= Ask - Bid + MathMin(OrderOpenPrice() + li_324 * ld_88, iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, + iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) + ld_536) && OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, + OrderOpenTime()) + 1, 0)) + Ask - Bid) > ld_536)) continue; + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_392, Violet); + Sleep(5000); + continue; + } + if (OrderOpenPrice() - Ask > ld_536) { + if (OrderStopLoss() >= price_544 + Point) { + bool_76 = OrderModify(OrderTicket(), OrderOpenPrice(), price_544, OrderTakeProfit(), 0, Red); + if (bool_76) { + datetime_444 = TimeCurrent(); + g_datetime_924 = datetime_444; + } + } + } + } + } + } + } + } + double ld_568 = 0; + if (StringSubstr(AccountCurrency(), 0, 3) == "JPY") { + ld_568 = MarketInfo("USDJPY" + StringSubstr(Symbol(), 6), MODE_BID); + if (ld_568 > 0.1) ld_40 = ld_568; + else ld_40 = 84; + } + if (StringSubstr(AccountCurrency(), 0, 3) == "GBP") { + ld_568 = MarketInfo("GBPUSD" + StringSubstr(Symbol(), 6), MODE_BID); + if (ld_568 > 0.1) ld_40 = 1 / ld_568; + else ld_40 = 0.6211180124; + } + if (StringSubstr(AccountCurrency(), 0, 3) == "EUR") { + ld_568 = MarketInfo("EURUSD" + StringSubstr(Symbol(), 6), MODE_BID); + if (ld_568 > 0.1) ld_40 = 1 / ld_568; + else ld_40 = 0.7042253521; + } + if (EMAIL_Notification == TRUE) f0_7(); + bool li_576 = TRUE; + bool li_580 = TRUE; + if (No_Hedge_Trades == TRUE && count_400 > 0 || count_408 > 0 || count_416 > 0 || count_424 > 0) li_576 = FALSE; + if (No_Hedge_Trades == TRUE && count_396 > 0 || count_404 > 0 || count_412 > 0 || count_420 > 0) li_580 = FALSE; + if (NFA_Compatibility == TRUE && count_400 > 0 || count_408 > 0 || count_416 > 0 || count_424 > 0 || count_396 > 0 || count_404 > 0 || count_412 > 0 || count_420 > 0) { + li_576 = FALSE; + li_580 = FALSE; + } + double lots_584 = MathMin(g_maxlot_892, MathMax(g_minlot_884, LotsSys1)); + if (TradeMMSys1 > 0.0) lots_584 = MathMax(g_minlot_884, MathMin(g_maxlot_892, NormalizeDouble(f0_18() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_908 / (g_lotsize_904 / 100), 0) * g_lotstep_908)); + if (lots_584 > MaximalLots) lots_584 = MaximalLots; + double lots_592 = MathMin(g_maxlot_892, MathMax(g_minlot_884, LotsSys2)); + if (TradeMMSys2 > 0.0) lots_592 = MathMax(g_minlot_884, MathMin(g_maxlot_892, NormalizeDouble(f0_0() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_908 / (g_lotsize_904 / 100), 0) * g_lotstep_908)); + if (lots_592 > MaximalLots) lots_592 = MaximalLots; + double lots_600 = MathMin(g_maxlot_892, MathMax(g_minlot_884, LotsSys3)); + if (TradeMMSys3 > 0.0) lots_600 = MathMax(g_minlot_884, MathMin(g_maxlot_892, NormalizeDouble(f0_13() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_908 / (g_lotsize_904 / 100), 0) * g_lotstep_908)); + if (lots_600 > MaximalLots) lots_600 = MaximalLots; + double lots_608 = MathMin(g_maxlot_892, MathMax(g_minlot_884, LotsSys4)); + if (TradeMMSys4 > 0.0) lots_608 = MathMax(g_minlot_884, MathMin(g_maxlot_892, NormalizeDouble(f0_21() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_908 / (g_lotsize_904 / 100), 0) * g_lotstep_908)); + if (lots_608 > MaximalLots) lots_608 = MaximalLots; + if (!Use_FXCOMBO_Scalping) lots_584 = 0; + if (!Use_FXCOMBO_Breakout) lots_592 = 0; + if (!Use_FXCOMBO_Reversal) lots_600 = 0; + if (!Use_FXCOMBO_EuroRange) lots_608 = 0; + gs_868 = "\n\n LOTS Sys1 : " + DoubleToStr(lots_584, 2) + + "\n LOTS Sys2 : " + DoubleToStr(lots_592, 2) + + "\n LOTS Sys3 : " + DoubleToStr(lots_600, 2) + + "\n LOTS Sys4 : " + DoubleToStr(lots_608, 2); + int cmd_36 = -1; + if (Use_FXCOMBO_Scalping != FALSE) { + if (count_396 < 1 && li_576 && f0_3(gi_880, iclose_172, ima_180, TREND_STR * ld_88, iwpr_188, OSC_open, gi_488, Hour(), li_328, li_332) == 0 && Bid < iclose_172 - gi_476 * ld_88) { + if (ld_96 > MaxSPREAD) Print("System 1 BUY not taken due to high spead!"); + else { + ls_616 = "BUY"; + cmd_36 = 0; + color_32 = Aqua; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = price_0 - li_304 * ld_88; + price_16 = price_0 + li_300 * ld_88; + } + } + if (count_400 < 1 && li_580 && f0_3(gi_880, iclose_172, ima_180, TREND_STR * ld_88, iwpr_188, OSC_open, gi_488, Hour(), li_328, li_332) == 1 && Bid > iclose_172 + + gi_476 * ld_88) { + if (ld_96 > MaxSPREAD) Print("System 1 SELL not taken due to high spead!"); + else { + ls_616 = "SELL"; + cmd_36 = 1; + color_32 = Red; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = price_0 + li_304 * ld_88; + price_16 = price_0 - li_300 * ld_88; + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys1 == FALSE || (NewsFilterSys1 && f0_12())) { + if (li_84 == FALSE) ticket_452 = OrderSend(Symbol(), cmd_36, lots_584, price_0, slippage_392, 0, 0, CommentSys1, Magic1, 0, color_32); + else ticket_452 = OrderSend(Symbol(), cmd_36, lots_584, price_0, slippage_392, price_8, price_16, CommentSys1, Magic1, 0, color_32); + Sleep(5000); + if (ticket_452 > 0) { + if (OrderSelect(ticket_452, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_616 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_616 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys1 && g_datetime_928 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_928 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_844); + else Print("SELL skipped: " + gs_844); + } + } + cmd_36 = -1; + if (!(TimeHour(TimeCurrent()) != li_344 && TimeHour(TimeCurrent()) != li_348 && TimeHour(TimeCurrent()) != li_352 && TimeHour(TimeCurrent()) != li_356 && TimeHour(TimeCurrent()) != li_360 && + TimeHour(TimeCurrent()) != li_364 && TimeHour(TimeCurrent()) != li_368 && TimeHour(TimeCurrent()) != li_372 && TimeHour(TimeCurrent()) != li_376 && TimeHour(TimeCurrent()) != li_380 && TimeHour(TimeCurrent()) != li_384) || + !(TimeHour(TimeCurrent()) != li_388)) { + if (Use_FXCOMBO_Breakout != FALSE) { + if (DayOfWeek() != gi_576) { + if (f0_4()) { + if (count_408 < 1 && li_580 && f0_6(gi_880, iclose_228, ld_220, ld_212, Break * ld_88, Bid, (Break - 3) * ld_88) == 1) { + if (ld_96 > MaxSPREAD) Print("System 2 SELL not taken due to high spead!"); + else { + ls_616 = "SELL"; + cmd_36 = 1; + color_32 = Yellow; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = price_0 + li_312 * ld_88; + price_16 = price_0 - li_308 * ld_88; + } + } + if (count_404 < 1 && li_576 && f0_6(gi_880, iclose_228, ld_220, ld_212, Break * ld_88, Bid, (Break - 3) * ld_88) == 0) { + if (ld_96 > MaxSPREAD) Print("System 2 BUY not taken due to high spead!"); + else { + ls_616 = "BUY"; + cmd_36 = 0; + color_32 = DodgerBlue; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = price_0 - li_312 * ld_88; + price_16 = price_0 + li_308 * ld_88; + } + } + } + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys2 == FALSE || (NewsFilterSys2 && f0_12())) { + if (li_84 == FALSE) ticket_456 = OrderSend(Symbol(), cmd_36, lots_592, price_0, slippage_392, 0, 0, CommentSys2, Magic2, 0, color_32); + else ticket_456 = OrderSend(Symbol(), cmd_36, lots_592, price_0, slippage_392, price_8, price_16, CommentSys2, Magic2, 0, color_32); + Sleep(5000); + if (ticket_456 > 0) { + if (OrderSelect(ticket_456, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_616 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_616 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys2 && g_datetime_928 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_928 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_844); + else Print("SELL skipped: " + gs_844); + } + } + cmd_36 = -1; + if (Use_FXCOMBO_Reversal != FALSE) { + if (count_412 < 1 && li_576 && (li_336 <= li_340 && TimeHour(TimeCurrent()) >= li_336 && TimeHour(TimeCurrent()) <= li_340) || (li_336 > li_340 && TimeHour(TimeCurrent()) >= li_336 || + TimeHour(TimeCurrent()) <= li_340) && f0_14(gi_880, ibands_268, ibands_276, gi_684 * ld_88, ihigh_252, ilow_260, gi_680 * ld_88) == 0) { + if (ld_96 > MaxSPREAD) Print("System 3 BUY not taken due to high spead!"); + else { + ls_616 = "BUY"; + cmd_36 = 0; + color_32 = Aqua; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = price_0 - li_320 * ld_88; + price_16 = price_0 + li_316 * ld_88; + } + } + if (count_416 < 1 && li_580 && (li_336 <= li_340 && TimeHour(TimeCurrent()) >= li_336 && TimeHour(TimeCurrent()) <= li_340) || (li_336 > li_340 && TimeHour(TimeCurrent()) >= li_336 || + TimeHour(TimeCurrent()) <= li_340) && f0_14(gi_880, ibands_268, ibands_276, gi_684 * ld_88, ihigh_252, ilow_260, gi_680 * ld_88) == 1) { + if (ld_96 > MaxSPREAD) Print("System 3 SELL not taken due to high spead!"); + else { + ls_616 = "SELL"; + cmd_36 = 1; + color_32 = DeepPink; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = price_0 + li_320 * ld_88; + price_16 = price_0 - li_316 * ld_88; + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys3 == FALSE || (NewsFilterSys3 && f0_12())) { + if (li_84 == FALSE) ticket_460 = OrderSend(Symbol(), cmd_36, lots_600, price_0, slippage_392, 0, 0, CommentSys3, Magic3, 0, color_32); + else ticket_460 = OrderSend(Symbol(), cmd_36, lots_600, price_0, slippage_392, price_8, price_16, CommentSys3, Magic3, 0, color_32); + Sleep(5000); + if (ticket_460 > 0) { + if (OrderSelect(ticket_460, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_616 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_616 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys3 && g_datetime_928 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_928 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_844); + else Print("SELL skipped: " + gs_844); + } + } + cmd_36 = -1; + if (Use_FXCOMBO_EuroRange != FALSE) { + if (count_420 < 1 && li_576 && f0_5(gi_880, gi_876, Hour(), Minute(), iOpen(NULL, PERIOD_M5, 0), ilow_292, ihigh_284, BreakPips * ld_88, gi_720 * ld_88, MaxRangePips * ld_88) == 0) { + if (ld_96 > MaxSPREAD) Print("System 4 BUY not taken due to high spead!"); + else { + ls_616 = "BUY"; + cmd_36 = 0; + color_32 = Aqua; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = NormalizeDouble(ilow_292 - li_324 * ld_88, Digits); + price_16 = NormalizeDouble(Ask + (ihigh_284 - ilow_292) * TargetPercent, Digits); + } + } + if (count_424 < 1 && li_580 && f0_5(gi_880, gi_876, Hour(), Minute(), iOpen(NULL, PERIOD_M5, 0), ilow_292, ihigh_284, BreakPips * ld_88, gi_720 * ld_88, MaxRangePips * ld_88) == 1) { + if (ld_96 > MaxSPREAD) Print("System 3 SELL not taken due to high spead!"); + else { + ls_616 = "SELL"; + cmd_36 = 1; + color_32 = DeepPink; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = NormalizeDouble(ihigh_284 + li_324 * ld_88, Digits); + price_16 = NormalizeDouble(Bid - (ihigh_284 - ilow_292) * TargetPercent, Digits); + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys4 == FALSE || (NewsFilterSys4 && f0_12())) { + if (li_84 == FALSE) ticket_464 = OrderSend(Symbol(), cmd_36, lots_608, price_0, slippage_392, 0, 0, CommentSys4, Magic4, 0, color_32); + else ticket_464 = OrderSend(Symbol(), cmd_36, lots_608, price_0, slippage_392, price_8, price_16, CommentSys4, Magic4, 0, color_32); + Sleep(5000); + if (ticket_464 > 0) { + if (OrderSelect(ticket_464, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_616 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_616 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys4 && g_datetime_928 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_928 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_844); + else Print("SELL skipped: " + gs_844); + } + } + return (0); +} + +// D02E3467D6EE65679474EA510952586A +double f0_18() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys1; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic1) { + if (OrderProfit() > 0.0) { + if (gi_280 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_280) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_272 && gi_276 > 1) { + li_8 = MathMod(li_12, gi_276); + ld_ret_0 *= MathPow(LossFactorSys1, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// 1426E1C9819471BC17C98E7E2C7DD408 +double f0_0() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys2; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic2) { + if (OrderProfit() > 0.0) { + if (gi_324 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_324) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_316 && gi_320 > 1) { + li_8 = MathMod(li_12, gi_320); + ld_ret_0 *= MathPow(LossFactorSys2, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// 83F4D115D503A4449CBA89CBA1C83522 +double f0_13() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys3; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic3) { + if (OrderProfit() > 0.0) { + if (gi_368 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_368) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_360 && gi_364 > 1) { + li_8 = MathMod(li_12, gi_364); + ld_ret_0 *= MathPow(LossFactorSys3, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// D641B0C57C7A54EBE0F39CE9DC45E7CA +double f0_21() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys4; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic4) { + if (OrderProfit() > 0.0) { + if (gi_412 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_412) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_404 && gi_408 > 1) { + li_8 = MathMod(li_12, gi_408); + ld_ret_0 *= MathPow(LossFactorSys4, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// 1BBC94D06E1F0D3B9CFC87C094EBA75D +int f0_1(bool ai_0) { + string ls_4; + if (gi_932 == 0) { + ls_4 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)"; + gi_932 = InternetOpenA(ls_4, gi_940, "0", "0", 0); + gi_936 = InternetOpenA(ls_4, gi_944, "0", "0", 0); + } + if (ai_0) return (gi_936); + return (gi_932); +} + +// 67B5F51F6CCDE3F6F9D86EE70C3F4037 +int f0_11(string as_0, string &as_8) { + int lia_24[] = {1}; + string ls_28 = "x"; + int li_16 = InternetOpenUrlA(f0_1(0), as_0, "0", 0, -2080374528, 0); + if (li_16 == 0) return (0); + int li_20 = InternetReadFile(li_16, ls_28, gi_952, lia_24); + if (li_20 == 0) return (0); + int li_36 = lia_24[0]; + for (as_8 = StringSubstr(ls_28, 0, lia_24[0]); lia_24[0] != 0; as_8 = as_8 + StringSubstr(ls_28, 0, lia_24[0])) { + li_20 = InternetReadFile(li_16, ls_28, gi_952, lia_24); + if (lia_24[0] == 0) break; + li_36 += lia_24[0]; + } + li_20 = InternetCloseHandle(li_16); + if (li_20 == 0) return (0); + return (1); +} + +// 52600E5BE768512CC215866649A5EEE8 +string f0_10(string as_0, int ai_8, string as_12, string as_20, int &ai_28) { + int li_40; + string ls_ret_32 = ""; + ai_28 = StringFind(as_0, as_12, ai_8); + if (ai_28 != -1) { + ai_28 += StringLen(as_12); + li_40 = StringFind(as_0, as_20, ai_28 + 1); + ls_ret_32 = StringTrimLeft(StringTrimRight(StringSubstr(as_0, ai_28, li_40 - ai_28))); + } + return (ls_ret_32); +} + +// 2ECDE036AF96C414B28F3D71FF3E5C89 +bool f0_4() { + double ld_4; + int datetime_12; + bool li_ret_0 = TRUE; + if (Digits <= 3) ld_4 = 0.01; + else ld_4 = 0.0001; + if (gi_568 > 0 && gi_572 > 0) { + datetime_12 = 0; + for (int pos_16 = OrdersHistoryTotal() - 1; pos_16 >= 0; pos_16--) { + if (OrderSelect(pos_16, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic2) { + if (!((OrderType() == OP_BUY && (OrderClosePrice() - OrderOpenPrice()) / ld_4 <= (-gi_568)) || (OrderType() == OP_SELL && (OrderOpenPrice() - OrderClosePrice()) / ld_4 <= (-gi_568)))) break; + datetime_12 = OrderCloseTime(); + break; + } + } + } + if (TimeCurrent() - datetime_12 < 60 * gi_572) li_ret_0 = FALSE; + } + return (li_ret_0); +} + +// 4562D26A98BEC98E7F1F6ECD0D270191 +void f0_7() { + string ls_0; + string ls_8; + bool li_16 = FALSE; + if (IsTesting() || EMAIL_Notification == FALSE) return; + if (g_datetime_956 == 0) { + g_datetime_956 = TimeCurrent(); + return; + } + if (g_datetime_956 != TimeCurrent()) { + for (int pos_20 = 0; pos_20 <= OrdersTotal() - 1; pos_20++) { + if (OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { + ls_0 = ""; + ls_8 = ""; + if (OrderOpenTime() >= g_datetime_956) { + if (OrderMagicNumber() == Magic1) ls_0 = "FX COMBO - System 1"; + else { + if (OrderMagicNumber() == Magic2) ls_0 = "FX COMBO - System 2"; + else { + if (OrderMagicNumber() == Magic3) ls_0 = "FX COMBO - System 3"; + else + if (OrderMagicNumber() == Magic4) ls_0 = "FX COMBO - System 4"; + } + } + } + if (StringLen(ls_0) > 1) { + if (OrderType() == OP_BUY) ls_8 = "Buy"; + else ls_8 = "Sell"; + ls_8 = ls_8 + " order (" + OrderTicket() + ") is opened: " + DoubleToStr(OrderOpenPrice(), Digits) + ", SL:" + DoubleToStr(OrderStopLoss(), Digits) + ", TP:" + DoubleToStr(OrderTakeProfit(), + Digits); + li_16 = TRUE; + SendMail(ls_0, ls_8); + } + } + } + } + for (pos_20 = OrdersHistoryTotal() - 1; pos_20 >= 0; pos_20--) { + if (OrderSelect(pos_20, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { + if (OrderCloseTime() <= g_datetime_956) break; + ls_0 = ""; + ls_8 = ""; + if (OrderMagicNumber() == Magic1) ls_0 = "FX COMBO - System 1"; + else { + if (OrderMagicNumber() == Magic2) ls_0 = "FX COMBO - System 2"; + else { + if (OrderMagicNumber() == Magic3) ls_0 = "FX COMBO - System 3"; + else + if (OrderMagicNumber() == Magic4) ls_0 = "FX COMBO - System 4"; + } + } + if (StringLen(ls_0) > 1) { + if (OrderType() == OP_BUY) ls_8 = "Buy"; + else ls_8 = "Sell"; + ls_8 = ls_8 + " order (" + OrderTicket() + ") is closed at " + DoubleToStr(OrderClosePrice(), Digits) + ", result: " + DoubleToStr(OrderProfit(), 2); + li_16 = TRUE; + SendMail(ls_0, ls_8); + } + } + } + } + g_datetime_956 = TimeCurrent(); + if (li_16) Sleep(1000); + } +} + +// E3B8CE68351C84C8B515C82ACBBB0EE6 +int f0_23(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16) { + return (dllInit(ai_0, ai_4, ai_8, ai_12, ai_16)); +} + +// 29DAC705E91697557643EA4C711D8B68 +int f0_3(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44, int ai_52, int ai_56, int ai_60) { + return (dllOpenCond1(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44, ai_52, ai_56, ai_60)); +} + +// D9202589407AB6642667D56EE84254EA +int f0_22(int ai_0, double ad_4, double ad_12) { + return (dllCloseCond1(ai_0, ad_4, ad_12)); +} + +// 44567E69B823BB26B6869904454BF05C +int f0_6(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44) { + return (dllOpenCond2(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44)); +} + +// EEF41F888AA1DBD8510C8683BC48D7AD +int f0_24(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28) { + return (dllCloseCond2(ai_0, ad_4, ad_12, ad_20, ad_28)); +} + +// 92A3FDDEEEC551F0BD51E1CA298C5AD1 +int f0_14(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44) { + return (dllOpenCond3(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44)); +} + +// D46589441045E3AD992FFC65BB286757 +int f0_20(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44) { + return (dllCloseCond3(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44)); +} + +// 3B7B45F7BE75FFD320F254B07E5B03F8 +int f0_5(int ai_0, int ai_4, int ai_8, int ai_12, double ad_16, double ad_24, double ad_32, double ad_40, double ad_48, double ad_56) { + return (dllOpenCond4(ai_0, ai_4, ai_8, ai_12, ad_16, ad_24, ad_32, ad_40, ad_48, ad_56)); +} + +// A3F60245633C3C27AC5CFCF739CC878C +int f0_15(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28) { + return (dllCloseCond4(ai_0, ad_4, ad_12, ad_20, ad_28)); +} + +// D2144D62ECAE784A90B5A1507B3470E5 +void f0_19(int &ai_0, int &ai_4) { + ai_0 = dllParamInit1(1); + ai_4 = dllParamInit1(2); +} + +// 4EC5637CC867CE5029614AE3D5C0250E +void f0_8(int &ai_0, int &ai_4, int &ai_8, int &ai_12, int &ai_16, int &ai_20, int &ai_24, int &ai_28, int &ai_32, int &ai_36, int &ai_40, int &ai_44) { + ai_0 = dllParamInit2(1); + ai_4 = dllParamInit2(2); + ai_8 = dllParamInit2(3); + ai_12 = dllParamInit2(4); + ai_16 = dllParamInit2(5); + ai_20 = dllParamInit2(6); + ai_24 = dllParamInit2(7); + ai_28 = dllParamInit2(8); + ai_32 = dllParamInit2(9); + ai_36 = dllParamInit2(10); + ai_40 = dllParamInit2(11); + ai_44 = dllParamInit2(12); +} + +// 4FDB54BD385BA8F60BAEB409EB093F11 +double f0_9(double ad_0, double ad_8, double ad_16) { + return (dllExpTrailLong(ad_0, ad_8, ad_16)); +} + +// B16077AEC05278814CF99921982899CE +double f0_16(double ad_0, double ad_8, double ad_16) { + return (dllExpTrailShort(ad_0, ad_8, ad_16)); +} + +// B95D831F7DC28FD0740EAF9E89023C16 +int f0_17() { + return (dllGMTOffset()); +} + +// 1C73977C8A2A8C537EB65C934BBA7E7B +void f0_2() { + int file_0; + int li_8; + int li_12; + string ls_16; + string ls_24; + bool li_32; + string ls_44; + string ls_52; + string ls_60; + string ls_68; + string ls_76; + string ls_84; + string ls_92; + int li_100; + string name_104; + string ls_112; + string ls_120; + bool li_128; + int li_132; + int li_136; + int li_140; + int li_144; + string ls_152; + int li_160; + gs_828 = ""; + if (NewsFilterSys1 == FALSE && NewsFilterSys2 == FALSE && NewsFilterSys3 == FALSE && NewsFilterSys4 == FALSE) { + gs_828 = "News Filter - OFF"; + return; + } + gs_836 = ""; + if (NewsFilterSys1) { + gs_836 = gs_836 + + "\n News Filter System 1: ENABLED "; + } else { + gs_836 = gs_836 + + "\n News Filter System 1: DISABLED "; + } + if (NewsFilterSys2) { + gs_836 = gs_836 + + "\n News Filter System 2: ENABLED "; + } else { + gs_836 = gs_836 + + "\n News Filter System 2: DISABLED "; + } + if (NewsFilterSys3) { + gs_836 = gs_836 + + "\n News Filter System 3: ENABLED "; + } else { + gs_836 = gs_836 + + "\n News Filter System 3: DISABLED "; + } + if (NewsFilterSys4) { + gs_836 = gs_836 + + "\n News Filter System 4: ENABLED "; + } else { + gs_836 = gs_836 + + "\n News Filter System 4: DISABLED "; + } + gs_828 = "News Filter - No Important News"; + if (MathAbs(TimeCurrent() - g_datetime_852) >= 86400.0 || TimeDay(TimeCurrent()) != TimeDay(g_datetime_852)) { + name_104 = "forex_combo_system_current_news.csv"; + ls_112 = "http://www.forex-combo.com/calendar.php?all=0"; + g_datetime_852 = TimeCurrent(); + if (IsTesting()) { + name_104 = "forex_combo_system_history_news.csv"; + ls_112 = "http://www.forex-combo.com/calendar.php?all=1"; + } + ls_112 = ls_112 + "&AccountId=" + DoubleToStr(AccountNumber(), 0) + "&AccountType="; + if (IsDemo()) ls_112 = ls_112 + "1"; + else ls_112 = ls_112 + "2"; + li_32 = TRUE; + for (int li_4 = 1; li_4 <= 3; li_4++) { + file_0 = FileOpen(name_104, FILE_CSV|FILE_READ, ';'); + if (file_0 >= 0) break; + Sleep(1000); + } + if (file_0 >= 0) { + while (!FileIsEnding(file_0)) { + for (string ls_36 = FileReadString(file_0); !FileIsEnding(file_0); ls_36 = FileReadString(file_0)) + if (StringLen(ls_36) == 10 && StringFind(ls_36, ".") == 4) break; + ls_44 = FileReadString(file_0); + if (StringLen(ls_44) != 5 || StringFind(ls_44, ":") != 2) continue; + ls_52 = FileReadString(file_0); + ls_60 = FileReadString(file_0); + ls_68 = FileReadString(file_0); + ls_76 = FileReadString(file_0); + ls_84 = FileReadString(file_0); + ls_92 = FileReadString(file_0); + if (StringLen(ls_36) > 0 && StringLen(ls_44) > 0) { + li_100 = StrToTime(ls_36 + " " + ls_44) + 3600 * gi_876; + if ((IsTesting() && li_100 >= TimeCurrent() - 86400) || (!IsTesting() && li_100 >= TimeCurrent() + 86400) || (!IsTesting() && Day() >= 5 && li_100 - 3600 * gi_876 > iTime(NULL, + PERIOD_D1, 0))) { + li_32 = FALSE; + break; + } + } + } + FileClose(file_0); + if (li_32) FileDelete(name_104); + } + if (li_32) { + li_12 = 0; + for (li_4 = 1; li_4 <= 3; li_4++) { + file_0 = FileOpen(name_104, FILE_CSV|FILE_WRITE, ';'); + if (file_0 >= 0) break; + Sleep(1000); + } + if (file_0 >= 0) { + ls_120 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)"; + li_128 = FALSE; + li_144 = 120; + int lia_148[] = {1}; + ls_152 = " "; + ls_16 = ""; + for (li_4 = 1; li_4 <= 3; li_4++) { + li_132 = InternetOpenA(ls_120, li_128, "0", "0", 0); + if (li_132 != 0) break; + Sleep(1000); + } + if (li_132 != 0) { + for (li_4 = 1; li_4 <= 3; li_4++) { + li_136 = InternetOpenUrlA(li_132, ls_112, "0", 0, -2080374528, 0); + if (li_136 != 0) break; + Sleep(1000); + } + if (li_136 != 0) { + li_140 = InternetReadFile(li_136, ls_152, li_144, lia_148); + if (li_140 != 0) { + ls_16 = StringSubstr(ls_152, 0, lia_148[0]); + while (lia_148[0] != 0) { + li_140 = InternetReadFile(li_136, ls_152, li_144, lia_148); + if (lia_148[0] == 0) break; + ls_16 = ls_16 + StringSubstr(ls_152, 0, lia_148[0]); + li_12 += lia_148[0]; + while (true) { + li_8 = -1; + for (li_4 = 0; li_4 < StringLen(ls_16); li_4++) { + li_160 = StringGetChar(ls_16, li_4); + if (li_160 == 10 || li_160 == 13) { + li_8 = li_4; + break; + } + } + if (li_8 < 0) break; + if (li_8 > 0) { + ls_24 = StringSubstr(ls_16, 0, li_8); + FileWrite(file_0, ls_24); + } + ls_16 = StringSubstr(ls_16, li_8 + 1); + } + } + if (StringLen(ls_16) > 0) FileWrite(file_0, ls_16); + ls_16 = ""; + } + InternetCloseHandle(li_136); + } + InternetCloseHandle(li_132); + } + FileClose(file_0); + } + if (li_12 <= 10) { + Alert("Can\'t download " + name_104 + ". News Filter was turned OFF"); + if (IsTesting()) Print("Can\'t download " + name_104 + ". News Filter was turned OFF"); + Sleep(5000); + } else Print("Downloaded " + DoubleToStr(li_12, 0) + " bytes (" + name_104 + ")"); + } + g_index_960 = 0; + for (li_4 = 1; li_4 <= 3; li_4++) { + file_0 = FileOpen(name_104, FILE_CSV|FILE_READ, ';'); + if (file_0 >= 0) break; + Sleep(1000); + } + if (file_0 < 0) { + Alert("Can\'t open " + name_104 + ". Error code: ", GetLastError()); + if (IsTesting()) Print("Can\'t open " + name_104 + ". Error code: ", GetLastError()); + Sleep(5000); + } else { + while (!FileIsEnding(file_0)) { + for (ls_36 = FileReadString(file_0); !FileIsEnding(file_0); ls_36 = FileReadString(file_0)) + if (StringLen(ls_36) == 10 && StringFind(ls_36, ".") == 4) break; + ls_44 = FileReadString(file_0); + if (StringLen(ls_44) != 5 || StringFind(ls_44, ":") != 2) continue; + ls_52 = FileReadString(file_0); + ls_60 = FileReadString(file_0); + ls_68 = FileReadString(file_0); + ls_76 = FileReadString(file_0); + ls_84 = FileReadString(file_0); + ls_92 = FileReadString(file_0); + if (StringLen(ls_36) > 0 && StringLen(ls_44) > 0) { + li_100 = StrToTime(ls_36 + " " + ls_44) + 3600 * gi_876; + if (li_100 >= TimeCurrent() - 86400 && li_100 <= TimeCurrent() + 86400 && StringFind(Symbol(), ls_52) >= 0 && ls_68 == "3" || (ls_68 == "2" && Include_Medium_News)) { + g_index_960++; + gia_964[g_index_960] = li_100; + gsa_968[g_index_960] = ls_52; + gsa_972[g_index_960] = ls_60; + } + } + } + FileClose(file_0); + } + } + for (li_4 = 1; li_4 <= g_index_960; li_4++) { + if (gia_964[li_4] >= TimeCurrent() && gia_964[li_4] <= TimeCurrent() + 86400 && TimeDay(gia_964[li_4]) == TimeDay(TimeCurrent())) { + gs_828 = TimeToStr(gia_964[li_4], TIME_MINUTES) + " " + gsa_968[li_4] + " News - " + gsa_972[li_4]; + break; + } + } + if (StringLen(gs_828) > 33) gs_828 = StringSubstr(gs_828, 0, 30) + "..."; +} + +// 697A7D88FF8EA0B64CD60B324DDE1103 +int f0_12() { + bool li_ret_0 = TRUE; + if (NewsFilterSys1 || NewsFilterSys2 || NewsFilterSys3 || NewsFilterSys4) { + gs_844 = ""; + for (int li_4 = 1; li_4 <= g_index_960; li_4++) { + if ((gia_964[li_4] < TimeCurrent() && gia_964[li_4] + 60 * Wait_After_News >= TimeCurrent()) || (gia_964[li_4] >= TimeCurrent() && gia_964[li_4] - 60 * Wait_Before_News <= TimeCurrent())) { + gs_844 = TimeToStr(gia_964[li_4], TIME_MINUTES) + " " + gsa_968[li_4] + " News - " + gsa_972[li_4]; + li_ret_0 = FALSE; + break; + } + } + } + return (li_ret_0); +} \ No newline at end of file diff --git a/ForexComboSystem_v5.0(4in1)GBPUSD.mq4 b/ForexComboSystem_v5.0(4in1)GBPUSD.mq4 new file mode 100644 index 0000000..9335ac1 --- /dev/null +++ b/ForexComboSystem_v5.0(4in1)GBPUSD.mq4 @@ -0,0 +1,1551 @@ +#property copyright "http://myfxbook.3dn.ru/" +#property link "http://myfxbook.3dn.ru/" + +#import "wininet.dll" + int InternetOpenA(string a0, int a1, string a2, string a3, int a4); + int InternetOpenUrlA(int a0, string a1, string a2, int a3, int a4, int a5); + int InternetReadFile(int a0, string a1, int a2, int& a3[]); + int InternetCloseHandle(int a0); +#import "FCS500.dll" + int dllInit(int a0, int a1, int a2, int a3, int a4); + int dllOpenCond1(int a0, double a1, double a2, double a3, double a4, double a5, double a6, int a7, int a8, int a9); + int dllCloseCond1(int a0, double a1, double a2); + int dllOpenCond2(int a0, double a1, double a2, double a3, double a4, double a5, double a6); + int dllCloseCond2(int a0, double a1, double a2, double a3, double a4); + int dllOpenCond3(int a0, double a1, double a2, double a3, double a4, double a5, double a6); + int dllCloseCond3(int a0, double a1, double a2, double a3, double a4, double a5, double a6); + int dllOpenCond4(int a0, int a1, int a2, int a3, double a4, double a5, double a6, double a7, double a8, double a9); + int dllCloseCond4(int a0, double a1, double a2, double a3, double a4); + int dllParamInit1(int a0); + int dllParamInit2(int a0); + double dllExpTrailLong(double a0, double a1, double a2); + double dllExpTrailShort(double a0, double a1, double a2); + int dllGMTOffset(); +#import + +//string gs_76 = "http://forex-combo.com/verify4in1.php"; +bool gi_84 = FALSE; +extern string A = "===================="; +extern bool Use_FXCOMBO_Scalping = TRUE; +extern bool Use_FXCOMBO_Breakout = TRUE; +extern bool Use_FXCOMBO_Reversal = TRUE; +extern bool Use_FXCOMBO_EuroRange = TRUE; +extern string B = "===================="; +extern bool Use_ECN_Execution = TRUE; +extern bool Hidden_StopAndTarget = FALSE; +extern bool No_Hedge_Trades = FALSE; +extern bool NFA_Compatibility = FALSE; +extern string C = "===================="; +extern string CommentSys1 = "*** 1 ***"; +extern string CommentSys2 = "*** 2 ***"; +extern string CommentSys3 = "*** 3 ***"; +extern string CommentSys4 = "*** 4 ***"; +extern string D = "===================="; +extern int Magic1 = 111; +extern int Magic2 = 222; +extern int Magic3 = 333; +extern int Magic4 = 444; +extern string E = "===================="; +extern double MaxSPREAD = 4.0; +extern int Slippage = 2; +extern bool AutoGMT_Offset = TRUE; +extern int ManualGMT_Offset = 2; +extern bool Calculate_DST = TRUE; +extern bool UseAgresiveMM = FALSE; +extern bool EMAIL_Notification = FALSE; +extern string MMSys1 = "==== FXCOMBO Scalping MM Parameters ===="; +extern double LotsSys1 = 0.1; +extern double TradeMMSys1 = 0.0; +extern double LossFactorSys1 = 2.0; +int gi_272 = 0; +int gi_276 = 2; +int gi_280 = 0; +extern string MMSys2 = "==== FXCOMBO Breakout MM Parameters ===="; +extern double LotsSys2 = 0.1; +extern double TradeMMSys2 = 0.0; +extern double LossFactorSys2 = 2.0; +int gi_316 = 0; +int gi_320 = 2; +int gi_324 = 0; +extern string MMSys3 = "==== FXCOMBO Reversal MM Parameters ===="; +extern double LotsSys3 = 0.1; +extern double TradeMMSys3 = 0.0; +extern double LossFactorSys3 = 2.0; +int gi_360 = 0; +int gi_364 = 2; +int gi_368 = 0; +extern string MMSys4 = "==== FXCOMBO EuroRange MM Parameters ===="; +extern double LotsSys4 = 0.1; +extern double TradeMMSys4 = 0.0; +extern double LossFactorSys4 = 2.0; +int gi_404 = 0; +int gi_408 = 2; +int gi_412 = 0; +extern string CommonMM = "==== Main MM Parameters ===="; +extern double MMMax = 20.0; +extern double MaximalLots = 50.0; +extern string Scalping = "==== FXCOMBO Scalping System Parameters ===="; +extern int StopLoss = 165; +extern int TakeProfit = 16; +int g_period_456 = 75; +extern int TREND_STR = 34; +int g_period_464 = 13; +extern int OSC_open = 6; +extern int OSC_close = 19; +int gi_476 = -5; +int gi_480 = 22; +int gi_484 = 22; +int gi_488 = 12; +extern string Breakout = "==== FXCOMBO Breakout System Parameters ===="; +extern int TakeProfit_II = 140; +extern int StopLoss_II = 35; +extern int MaxPipsTrailing2 = 200; +extern int MinPipsTrailing2 = 10; +extern int Break = 12; +int g_period_520 = 1; +int g_period_524 = 20; +double gd_528 = 1.25; +extern double ATRTrailingFactor2 = 1.6; +int gi_544 = 60; +extern int F_TrailingProfit_II = 125; +extern int F_Trailing_II = 20; +extern bool Use_Exp_Trailing_II = FALSE; +extern double Exp_Trail_Factor_II = 0.22; +int g_timeframe_568 = PERIOD_M15; +int gi_572 = 30; +int gi_576 = 75; +int gi_580 = 5; +int gi_584 = 19; +int gi_588 = 20; +int gi_592 = 17; +int gi_596 = 5; +int gi_600 = 23; +int gi_604 = 11; +int gi_608 = 13; +int gi_612 = 16; +int gi_616 = 2; +int gi_620 = 1; +int gi_624 = 5; +int gi_628 = 5; +int gi_unused_632 = 5; +int gi_636 = 5; +int gi_640 = 5; +int gi_644 = 5; +extern string Reversal = "==== FXCOMBO Reversal System Parameters ===="; +extern int BegHourSys_III = 23; +extern int EndHourSys_III = 0; +extern int TakeProfit_III = 90; +extern int StopLoss_III = 250; +int gi_672 = 300; +extern int MaxPipsTrailing3 = 300; +extern int MinPipsTrailing3 = 10; +int g_period_684 = 80; +double gd_688 = 17.0; +int g_period_696 = 6; +int gi_700 = -1; +int gi_704 = 25; +extern int F_TrailingProfit_III = 300; +extern int F_Trailing_III = 30; +extern bool Use_Exp_Trailing_III = TRUE; +extern double Exp_Trail_Factor_III = 0.4; +int gi_728 = 1; +int gi_732 = 5; +extern string EuroRange = "==== FXCOMBO EuroRange System Parameters ===="; +int gi_744 = 3; +int gi_748 = 23; +extern int MaxRangePips = 100; +extern int BreakPips = -6; +extern double TargetPercent = 2.1; +extern int StopLoss_IV = 25; +int gi_772 = 300; +int gi_776 = 300; +int gi_780 = 10; +double gd_784 = 100.0; +extern int F_TrailingProfit_IV = 300; +extern int F_Trailing_IV = 30; +extern bool Use_Exp_Trailing_IV = TRUE; +extern double Exp_Trail_Factor_IV = 0.44; +int g_timeframe_812 = PERIOD_M5; +int gi_816 = 60; +extern string NF = "==== News Filter Settings ===="; +extern bool Include_Medium_News = TRUE; +extern int Wait_Before_News = 30; +extern int Wait_After_News = 30; +extern bool NewsFilterSys1 = FALSE; +extern bool NewsFilterSys2 = FALSE; +extern bool NewsFilterSys3 = FALSE; +extern bool NewsFilterSys4 = FALSE; +string gs_856 = ""; +string gs_864 = ""; +string gs_872 = ""; +int g_datetime_880 = 0; +bool gi_884 = TRUE; +string gs_888 = ""; +string gs_896 = ""; +int gi_904 = 0; +int gi_908 = -1; +double g_minlot_912 = 0.0; +double g_maxlot_920 = 0.0; +int g_leverage_928 = 0; +int g_lotsize_932 = 0; +double g_lotstep_936 = 0.0; +int g_datetime_944 = 0; +int g_datetime_948 = 0; +int g_datetime_952 = 0; +int g_datetime_956 = 0; +int gi_960; +int gi_964; +int gi_968 = 0; +int gi_972 = 1; +int gi_unused_976 = 3; +int gi_980 = 13; +int g_datetime_984 = 0; +int g_index_988 = 0; +int gia_992[1000]; +string gsa_996[1000]; +string gsa_1000[1000]; + +// E37F0136AA3FFAF149B351F6A4C948E9 +int init() { + gi_884 = TRUE; + gi_84 = FALSE; + Comment(""); + if (ObjectFind("klc") >= 0) ObjectDelete("klc"); + if (ObjectFind("klc2") >= 0) ObjectDelete("klc2"); + if (ObjectFind("klc3") >= 0) ObjectDelete("klc3"); + return (0); +} + +// 52D46093050F38C27267BCE42543EF60 +int deinit() { + Comment(""); + if (ObjectFind("klc") >= 0) ObjectDelete("klc"); + if (ObjectFind("klc2") >= 0) ObjectDelete("klc2"); + if (ObjectFind("klc3") >= 0) ObjectDelete("klc3"); + return (0); +} + +// EA2B2676C28C0DB26D39331A336C6B92 +int start() { + double price_0; + double price_8; + double price_16; + color color_32; + string ls_48; + int li_56; + string ls_60; + bool bool_68; + bool bool_72; + bool bool_76; + double ld_88; + string ls_104; + int li_120; + int li_292; + int li_296; + int li_300; + int li_304; + int li_308; + int li_312; + int li_316; + int ticket_460; + int ticket_464; + int ticket_468; + int ticket_472; + double price_480; + double price_488; + double price_496; + double price_504; + double ld_512; + double price_520; + double price_528; + double price_536; + double ld_544; + double price_552; + double price_560; + double price_568; + string ls_624; + double ld_40 = 1; + if (gi_884) { + gi_884 = FALSE; + g_minlot_912 = MarketInfo(Symbol(), MODE_MINLOT); + g_maxlot_920 = MarketInfo(Symbol(), MODE_MAXLOT); + g_leverage_928 = AccountLeverage(); + g_lotsize_932 = MarketInfo(Symbol(), MODE_LOTSIZE); + g_lotstep_936 = MarketInfo(Symbol(), MODE_LOTSTEP); + gi_908 = -1; + gs_856 = ""; + gs_864 = ""; + gs_872 = ""; + g_datetime_880 = 0; + } + if ((!IsTesting()) && IsStopped()) return (0); + if ((!IsTesting()) && !IsTradeAllowed()) { + Comment("Trading server: Trading is not Allowed ..."); + return (0); + } + if ((!IsTesting()) && IsTradeContextBusy()) { + Comment("Trading server: Trade Context is Busy ..."); + return (0); + } + if (iATR(NULL, PERIOD_M5, 1, 1) < Point / 2.0) return (0); + if (IsDllsAllowed() == FALSE) { + Comment("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors."); + Print("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors."); + Alert("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors."); + Sleep(30000); + return (0); + } + + gi_84 = TRUE; // to trade - yes;) educated by 4words (WWI) + + /*if ((!gi_84) && !IsTesting()) { + if (IsDemo() == FALSE) ls_60 = "AccountType=2"; + else ls_60 = "AccountType=1"; + if (f0_11(gs_76 + "?AccountId=" + DoubleToStr(AccountNumber(), 0) + "&" + ls_60, ls_48)) { + if (StringTrimRight(StringTrimLeft(f0_10(ls_48, 0, "", "", li_56))) == "OK") gi_84 = TRUE; + else { + Comment("Online validation is not passed. For more information, contact us at support@forex-combo.com!"); + Alert("Online validation is not passed. For more information, contact us at support@forex-combo.com!"); + Sleep(30000); + return (0); + } + } else { + Comment("\n Online validation failed (error number " + DoubleToStr(GetLastError(), 0) + "). Visit www.fxautomater.com for more information!"); + Alert("Online validation failed (error number " + DoubleToStr(GetLastError(), 0) + "). Visit www.fxautomater.com for more information!"); + Sleep(30000); + return (0); + } + }*/ + if (gi_908 <= 0) { + gi_908 = f0_23(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), TimeCurrent()); + if (IsTesting()) Calculate_DST = FALSE; + if (IsTesting() || AutoGMT_Offset == FALSE) gi_904 = ManualGMT_Offset; + if (!IsTesting() && AutoGMT_Offset == TRUE && Calculate_DST == TRUE && (Month() > 3 && Month() < 11)) gi_904 = f0_17() - 1; + if (!IsTesting() && AutoGMT_Offset == TRUE && Calculate_DST == TRUE && Month() <= 3 || Month() >= 11) gi_904 = f0_17(); + if (!IsTesting() && AutoGMT_Offset == TRUE && Calculate_DST == FALSE) gi_904 = f0_17(); + } + if (gi_908 <= 0 && gi_84 && (!IsTesting())) { + Comment("DLL initialization is failed (" + DoubleToStr(gi_908, 0) + "). For more information, contact us at support@forex-combo.com!"); + Alert("DLL initialization is failed (" + DoubleToStr(gi_908, 0) + "). For more information, contact us at support@forex-combo.com!"); + Sleep(10000); + return (0); + } + if (gi_908 <= 0 && IsTesting()) Print("DLL initialization is failed (" + DoubleToStr(gi_908, 0) + "). Please register you test account at forex-combo.com!"); + int stoplevel_80 = MarketInfo(Symbol(), MODE_STOPLEVEL); + bool li_84 = TRUE; + if (stoplevel_80 == 0 || Use_ECN_Execution == TRUE || Hidden_StopAndTarget == TRUE) li_84 = FALSE; + if (Digits <= 3) ld_88 = 0.01; + else ld_88 = 0.0001; + double ld_96 = NormalizeDouble((Ask - Bid) / ld_88, 1); + if (IsTesting()) Calculate_DST = FALSE; + if (Calculate_DST == TRUE) ls_104 = "YES"; + if (Calculate_DST == FALSE) ls_104 = "NO"; + string ls_112 = "*** SPREAD OK ***"; + if (ld_96 > MaxSPREAD) ls_112 = "*** SPREAD IS TOO HIGH ***"; + if (!IsTesting()) li_120 = f0_17(); + else li_120 = ManualGMT_Offset; + gs_888 = "\n\n Greenwich Mean Time : " + TimeToStr(TimeCurrent() - 3600 * li_120, TIME_DATE|TIME_MINUTES|TIME_SECONDS) + + "\n Broker Time : " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS) + + "\n Calculate DST: " + ls_104; + string ls_124 = "FX COMBO is running on your account - Validation OK"; + string ls_132 = "FX COMBO is set up for time zone GMT " + gi_904; + string ls_140 = "Spread= " + DoubleToStr(ld_96, 1) + " pips"; + string ls_148 = "Account Balance= " + DoubleToStr(AccountBalance(), 2); + string ls_156 = ls_112; + string ls_164 = ""; + f0_2(); + if (gs_864 != "") { + ls_164 = "\n" + + gs_864; + } + ls_164 = ls_164 + + "\n\n " + gs_856; + Comment("\n\n\n\n\n " + ls_124 + " \n " + ls_132 + " \n " + ls_140 + " \n " + ls_148 + " \n\n " + ls_156 + " " + gs_888 + " " + gs_896 + ls_164); + ObjectCreate("klc", OBJ_LABEL, 0, 0, 0); + ObjectSetText("klc", " ** FOREX COMBO SYSTEM 4 in 1 **", 9, "System", Red); + ObjectSet("klc", OBJPROP_CORNER, 0); + ObjectSet("klc", OBJPROP_XDISTANCE, 0); + ObjectSet("klc", OBJPROP_YDISTANCE, 29); + ObjectCreate("klc3", OBJ_LABEL, 0, 0, 0); + ObjectSetText("klc3", " Copyright © www.fxautomater.com ", 9, "System", Gray); + ObjectSet("klc3", OBJPROP_CORNER, 0); + ObjectSet("klc3", OBJPROP_XDISTANCE, 0); + ObjectSet("klc3", OBJPROP_YDISTANCE, 45); + if (UseAgresiveMM != TRUE) { + LossFactorSys1 = 1; + LossFactorSys2 = 1; + LossFactorSys3 = 1; + LossFactorSys4 = 1; + } + HideTestIndicators(TRUE); + double iclose_172 = iClose(NULL, PERIOD_M15, 1); + double ima_180 = iMA(NULL, PERIOD_M15, g_period_456, 0, MODE_SMMA, PRICE_CLOSE, 1); + double iwpr_188 = iWPR(NULL, PERIOD_M15, g_period_464, 1); + double iatr_196 = iATR(NULL, PERIOD_H1, g_period_524, 1); + double ima_204 = iMA(NULL, PERIOD_H1, g_period_520, 0, MODE_EMA, PRICE_CLOSE, 1); + double ld_212 = ima_204 + iatr_196 * gd_528; + double ld_220 = ima_204 - iatr_196 * gd_528; + double iclose_228 = iClose(NULL, g_timeframe_568, 1); + double iatr_236 = iATR(NULL, PERIOD_M5, g_period_684, 1); + double ihigh_244 = iHigh(NULL, PERIOD_H1, 1); + double ilow_252 = iLow(NULL, PERIOD_H1, 1); + double ibands_260 = iBands(NULL, PERIOD_H1, g_period_696, 2, 0, PRICE_CLOSE, MODE_UPPER, 1); + double ibands_268 = iBands(NULL, PERIOD_H1, g_period_696, 2, 0, PRICE_CLOSE, MODE_LOWER, 1); + HideTestIndicators(FALSE); + double ihigh_276 = iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, MODE_HIGH, gi_744, 1)); + double ilow_284 = iLow(NULL, PERIOD_H1, iLowest(NULL, PERIOD_H1, MODE_LOW, gi_744, 1)); + if (gi_480 < 0) f0_19(gi_480, gi_484); + if (gi_584 < 0) f0_8(gi_584, gi_588, gi_592, gi_596, gi_600, gi_604, gi_608, gi_612, gi_616, gi_620, gi_624, gi_628); + if (TakeProfit < stoplevel_80 * Point / ld_88) li_292 = stoplevel_80 * Point / ld_88; + else li_292 = TakeProfit; + if (StopLoss < stoplevel_80 * Point / ld_88) li_296 = stoplevel_80 * Point / ld_88; + else li_296 = StopLoss; + if (TakeProfit_II < stoplevel_80 * Point / ld_88) li_300 = stoplevel_80 * Point / ld_88; + else li_300 = TakeProfit_II; + if (StopLoss_II < stoplevel_80 * Point / ld_88) li_304 = stoplevel_80 * Point / ld_88; + else li_304 = StopLoss_II; + if (TakeProfit_III < stoplevel_80 * Point / ld_88) li_308 = stoplevel_80 * Point / ld_88; + else li_308 = TakeProfit_III; + if (StopLoss_III < stoplevel_80 * Point / ld_88) li_312 = stoplevel_80 * Point / ld_88; + else li_312 = StopLoss_III; + if (StopLoss_IV < stoplevel_80 * Point / ld_88) li_316 = stoplevel_80 * Point / ld_88; + else li_316 = StopLoss_IV; + int li_320 = gi_480 + gi_904; + int li_324 = gi_480 + gi_904; + int li_328 = BegHourSys_III + gi_904; + int li_332 = EndHourSys_III + gi_904; + if (li_320 > 23) li_320 -= 24; + if (li_320 < 0) li_320 += 24; + if (li_328 > 23) li_328 -= 24; + if (li_328 < 0) li_328 += 24; + if (li_324 > 23) li_324 -= 24; + if (li_324 < 0) li_324 += 24; + if (li_332 > 23) li_332 -= 24; + if (li_332 < 0) li_332 += 24; + int li_336 = gi_584 + gi_904; + int li_340 = gi_588 + gi_904; + int li_344 = gi_592 + gi_904; + int li_348 = gi_596 + gi_904; + int li_352 = gi_600 + gi_904; + int li_356 = gi_604 + gi_904; + int li_360 = gi_608 + gi_904; + int li_364 = gi_612 + gi_904; + int li_368 = gi_616 + gi_904; + int li_372 = gi_620 + gi_904; + int li_376 = gi_624 + gi_904; + int li_380 = gi_628 + gi_904; + int li_384 = gi_592 + gi_904; + int li_388 = gi_636 + gi_904; + int li_392 = gi_640 + gi_904; + int li_396 = gi_644 + gi_904; + if (li_336 > 23) li_336 -= 24; + if (li_336 < 0) li_336 += 24; + if (li_340 > 23) li_340 -= 24; + if (li_340 < 0) li_340 += 24; + if (li_344 > 23) li_344 -= 24; + if (li_344 < 0) li_344 += 24; + if (li_348 > 23) li_348 -= 24; + if (li_348 < 0) li_348 += 24; + if (li_352 > 23) li_352 -= 24; + if (li_352 < 0) li_352 += 24; + if (li_356 > 23) li_356 -= 24; + if (li_356 < 0) li_356 += 24; + if (li_360 > 23) li_360 -= 24; + if (li_360 < 0) li_360 += 24; + if (li_364 > 23) li_364 -= 24; + if (li_364 < 0) li_364 += 24; + if (li_368 > 23) li_368 -= 24; + if (li_368 < 0) li_368 += 24; + if (li_372 > 23) li_372 -= 24; + if (li_372 < 0) li_372 += 24; + if (li_376 > 23) li_376 -= 24; + if (li_376 < 0) li_376 += 24; + if (li_380 > 23) li_380 -= 24; + if (li_380 < 0) li_380 += 24; + if (li_384 > 23) li_384 -= 24; + if (li_384 < 0) li_384 += 24; + if (li_388 > 23) li_388 -= 24; + if (li_388 < 0) li_388 += 24; + if (li_392 > 23) li_392 -= 24; + if (li_392 < 0) li_392 += 24; + if (li_396 > 23) li_396 -= 24; + if (li_396 < 0) li_396 += 24; + int slippage_400 = Slippage * (ld_88 / Point); + int count_404 = 0; + int count_408 = 0; + int count_412 = 0; + int count_416 = 0; + int count_420 = 0; + int count_424 = 0; + int count_428 = 0; + int count_432 = 0; + int datetime_436 = g_datetime_944; + int li_440 = g_datetime_944 + gi_544; + int datetime_444 = g_datetime_948; + int li_448 = g_datetime_948 + gi_672; + int datetime_452 = g_datetime_952; + int li_456 = g_datetime_952 + gi_772; + for (int pos_476 = OrdersTotal() - 1; pos_476 >= 0; pos_476--) { + if (!OrderSelect(pos_476, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", pos_476); + else { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { + if (OrderMagicNumber() == Magic1) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_480 = NormalizeDouble(OrderOpenPrice() - li_296 * ld_88, Digits); + price_488 = NormalizeDouble(OrderOpenPrice() + li_292 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_480, price_488, 0, Green); + } + if ((f0_22(gi_908, iwpr_188, OSC_close) == 0 && Bid > iclose_172 + gi_476 * ld_88) || Bid >= OrderOpenPrice() + li_292 * ld_88 || Bid <= OrderOpenPrice() - li_296 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_400, Violet); + Sleep(5000); + } else count_404++; + } else { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_480 = NormalizeDouble(OrderOpenPrice() + li_296 * ld_88, Digits); + price_488 = NormalizeDouble(OrderOpenPrice() - li_292 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_480, price_488, 0, Green); + } + if ((f0_22(gi_908, iwpr_188, OSC_close) == 1 && Bid < iclose_172 - gi_476 * ld_88) || Ask <= OrderOpenPrice() - li_292 * ld_88 || Ask >= OrderOpenPrice() + li_296 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_400, Violet); + Sleep(5000); + } else count_408++; + } + } + if (OrderMagicNumber() == Magic2) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_496 = NormalizeDouble(OrderOpenPrice() - li_304 * ld_88, Digits); + price_504 = NormalizeDouble(OrderOpenPrice() + li_300 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_496, price_504, 0, Green); + } + if ((f0_24(gi_908, iclose_228, ld_220, ld_212, Break * ld_88) == 0 && TimeCurrent() - OrderOpenTime() > 3600) || Bid >= OrderOpenPrice() + li_300 * ld_88 || Bid <= OrderOpenPrice() - li_304 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_400, Violet); + Sleep(5000); + } else count_412++; + if (TimeCurrent() >= li_440) { + if (Use_Exp_Trailing_II) { + ld_512 = f0_9(Exp_Trail_Factor_II * ld_88, OrderOpenPrice(), iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0))); + } else ld_512 = iatr_196 * ATRTrailingFactor2; + if (ld_512 > MaxPipsTrailing2 * ld_88) ld_512 = MaxPipsTrailing2 * ld_88; + if (ld_512 < MinPipsTrailing2 * ld_88) ld_512 = MinPipsTrailing2 * ld_88; + if (Bid - OrderOpenPrice() > F_TrailingProfit_II * ld_88 && (!Use_Exp_Trailing_II)) ld_512 = F_Trailing_II * ld_88; + price_520 = NormalizeDouble(Bid - ld_512, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 60 && Bid <= MathMax(OrderOpenPrice() - li_304 * ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, + PERIOD_M5, OrderOpenTime()) + 1, 0)) - ld_512) && iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) - OrderOpenPrice() > ld_512) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_400, Violet); + Sleep(5000); + } + } else { + if (Bid - OrderOpenPrice() > ld_512) { + if (OrderStopLoss() <= price_520 - Point) { + bool_68 = OrderModify(OrderTicket(), OrderOpenPrice(), price_520, OrderTakeProfit(), 0, Blue); + if (bool_68) { + datetime_436 = TimeCurrent(); + g_datetime_944 = datetime_436; + } + } + } + } + } + } else { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_496 = NormalizeDouble(OrderOpenPrice() + li_304 * ld_88, Digits); + price_504 = NormalizeDouble(OrderOpenPrice() - li_300 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_496, price_504, 0, Green); + } + if ((f0_24(gi_908, iclose_228, ld_220, ld_212, Break * ld_88) == 1 && TimeCurrent() - OrderOpenTime() > 3600) || Ask <= OrderOpenPrice() - li_300 * ld_88 || Ask >= OrderOpenPrice() + + li_304 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_400, Violet); + Sleep(5000); + } else count_416++; + if (TimeCurrent() >= li_440) { + if (Use_Exp_Trailing_II) { + ld_512 = f0_16(Exp_Trail_Factor_II * ld_88, OrderOpenPrice(), iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0)) + Ask - Bid); + } else ld_512 = iatr_196 * ATRTrailingFactor2; + if (ld_512 > MaxPipsTrailing2 * ld_88) ld_512 = MaxPipsTrailing2 * ld_88; + if (ld_512 < MinPipsTrailing2 * ld_88) ld_512 = MinPipsTrailing2 * ld_88; + if (OrderOpenPrice() - Ask > F_TrailingProfit_II * ld_88 && (!Use_Exp_Trailing_II)) ld_512 = F_Trailing_II * ld_88; + price_520 = NormalizeDouble(Ask + ld_512, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 60 && Ask >= Ask - Bid + MathMin(OrderOpenPrice() + li_304 * ld_88, iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, + iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) + ld_512) && OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, + OrderOpenTime()) + 1, 0)) + Ask - Bid) > ld_512) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_400, Violet); + Sleep(5000); + } + } else { + if (OrderOpenPrice() - Ask > ld_512) { + if (OrderStopLoss() >= price_520 + Point) { + bool_68 = OrderModify(OrderTicket(), OrderOpenPrice(), price_520, OrderTakeProfit(), 0, Red); + if (bool_68) { + datetime_436 = TimeCurrent(); + g_datetime_944 = datetime_436; + } + } + } + } + } + } + } + if (OrderMagicNumber() == Magic3) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_528 = NormalizeDouble(OrderOpenPrice() - li_312 * ld_88, Digits); + price_536 = NormalizeDouble(OrderOpenPrice() + li_308 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_528, price_536, 0, Green); + } + if (((li_328 <= li_332 && TimeHour(TimeCurrent()) >= li_328 && TimeHour(TimeCurrent()) <= li_332) || (li_328 > li_332 && TimeHour(TimeCurrent()) >= li_328 || TimeHour(TimeCurrent()) <= li_332) && + f0_20(gi_908, ibands_260, ibands_268, gi_704 * ld_88, ihigh_244, ilow_252, gi_700 * ld_88) == 0 && TimeCurrent() - OrderOpenTime() > 7200) || Bid >= OrderOpenPrice() + + li_308 * ld_88 || Bid <= OrderOpenPrice() - li_312 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_400, Violet); + Sleep(5000); + } else count_420++; + if (TimeCurrent() >= li_448) { + if (Use_Exp_Trailing_III) ld_544 = Exp_Trail_Factor_III * ld_88 / (iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) - OrderOpenPrice()); + else ld_544 = iatr_236 * gd_688; + if (ld_544 > MaxPipsTrailing3 * ld_88) ld_544 = MaxPipsTrailing3 * ld_88; + if (ld_544 < MinPipsTrailing3 * ld_88) ld_544 = MinPipsTrailing3 * ld_88; + if (Bid - OrderOpenPrice() > F_TrailingProfit_III * ld_88 && (!Use_Exp_Trailing_III)) ld_544 = F_Trailing_III * ld_88; + price_552 = NormalizeDouble(Bid - ld_544, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 300 && Bid <= MathMax(OrderOpenPrice() - li_312 * ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, + PERIOD_M5, OrderOpenTime()) + 1, 0)) - ld_544) && iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) - OrderOpenPrice() > ld_544) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_400, Violet); + Sleep(5000); + } + } else { + if (Bid - OrderOpenPrice() > ld_544) { + if (OrderStopLoss() <= price_552 - Point) { + bool_72 = OrderModify(OrderTicket(), OrderOpenPrice(), price_552, OrderTakeProfit(), 0, Blue); + if (bool_72) { + datetime_444 = TimeCurrent(); + g_datetime_948 = datetime_444; + } + } + } + } + } + } else { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_528 = NormalizeDouble(OrderOpenPrice() + li_312 * ld_88, Digits); + price_536 = NormalizeDouble(OrderOpenPrice() - li_308 * ld_88, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_528, price_536, 0, Green); + } + if (((li_328 <= li_332 && TimeHour(TimeCurrent()) >= li_328 && TimeHour(TimeCurrent()) <= li_332) || (li_328 > li_332 && TimeHour(TimeCurrent()) >= li_328 || TimeHour(TimeCurrent()) <= li_332) && + f0_20(gi_908, ibands_260, ibands_268, gi_704 * ld_88, ihigh_244, ilow_252, gi_700 * ld_88) == 1 && TimeCurrent() - OrderOpenTime() > 7200) || Ask <= OrderOpenPrice() - li_308 * ld_88 || + Ask >= OrderOpenPrice() + li_312 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_400, Violet); + Sleep(5000); + } else count_424++; + if (TimeCurrent() >= li_448) { + if (Use_Exp_Trailing_III) { + ld_544 = Exp_Trail_Factor_III * ld_88 / (OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0)) + Ask - Bid)); + } else ld_544 = iatr_236 * gd_688; + if (ld_544 > MaxPipsTrailing3 * ld_88) ld_544 = MaxPipsTrailing3 * ld_88; + if (ld_544 < MinPipsTrailing3 * ld_88) ld_544 = MinPipsTrailing3 * ld_88; + if (OrderOpenPrice() - Ask > F_TrailingProfit_III * ld_88 && (!Use_Exp_Trailing_III)) ld_544 = F_Trailing_III * ld_88; + price_552 = NormalizeDouble(Ask + ld_544, Digits); + if (Hidden_StopAndTarget) { + if (TimeCurrent() - OrderOpenTime() > 300 && Ask >= Ask - Bid + MathMin(OrderOpenPrice() + li_312 * ld_88, iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, + iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) + ld_544) && OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, + OrderOpenTime()) + 1, 0)) + Ask - Bid) > ld_544) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_400, Violet); + Sleep(5000); + } + } else { + if (OrderOpenPrice() - Ask > ld_544) { + if (OrderStopLoss() >= price_552 + Point) { + bool_72 = OrderModify(OrderTicket(), OrderOpenPrice(), price_552, OrderTakeProfit(), 0, Red); + if (bool_72) { + datetime_444 = TimeCurrent(); + g_datetime_948 = datetime_444; + } + } + } + } + } + } + } + if (OrderMagicNumber() == Magic4) { + if (OrderType() == OP_BUY) { + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_560 = NormalizeDouble(ilow_284 - li_316 * ld_88, Digits); + price_568 = NormalizeDouble(OrderOpenPrice() + (ihigh_276 - ilow_284) * TargetPercent, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_560, price_568, 0, Green); + } + if ((TimeCurrent() - OrderOpenTime() > 300 && f0_15(gi_908, iClose(NULL, g_timeframe_812, 1), iOpen(NULL, g_timeframe_812, 1), Bid - OrderOpenPrice(), gi_816 * ld_88) == 0) || + Bid >= OrderOpenPrice() + (iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, MODE_HIGH, gi_744, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) - iLow(NULL, PERIOD_H1, + iLowest(NULL, PERIOD_H1, MODE_LOW, gi_744, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1))) * TargetPercent || Bid <= iLow(NULL, PERIOD_H1, iLowest(NULL, PERIOD_H1, + MODE_LOW, gi_744, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) - li_316 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_400, Violet); + Sleep(5000); + } else count_428++; + if (TimeCurrent() < li_456) continue; + if (Use_Exp_Trailing_IV) { + ld_544 = Exp_Trail_Factor_IV * ld_88 / MathMax(ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, + 0)) - OrderOpenPrice()); + } else ld_544 = iatr_236 * gd_784; + if (ld_544 > gi_776 * ld_88) ld_544 = gi_776 * ld_88; + if (ld_544 < gi_780 * ld_88) ld_544 = gi_780 * ld_88; + if (Bid - OrderOpenPrice() > F_TrailingProfit_IV * ld_88 && (!Use_Exp_Trailing_IV)) ld_544 = F_Trailing_IV * ld_88; + price_552 = NormalizeDouble(Bid - ld_544, Digits); + if (Hidden_StopAndTarget) { + if (!(TimeCurrent() - OrderOpenTime() > 300 && Bid <= MathMax(OrderOpenPrice() - li_316 * ld_88, iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, + PERIOD_M5, OrderOpenTime()) + 1, 0)) - ld_544) && iHigh(NULL, PERIOD_M5, iHighest(NULL, PERIOD_M5, MODE_HIGH, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) - OrderOpenPrice() > ld_544)) continue; + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), slippage_400, Violet); + Sleep(5000); + } else { + if (Bid - OrderOpenPrice() <= ld_544) continue; + if (OrderStopLoss() > price_552 - Point) continue; + bool_76 = OrderModify(OrderTicket(), OrderOpenPrice(), price_552, OrderTakeProfit(), 0, Blue); + if (!(bool_76)) continue; + datetime_452 = TimeCurrent(); + g_datetime_952 = datetime_452; + continue; + } + } + if (OrderStopLoss() == 0.0 && Hidden_StopAndTarget == FALSE) { + price_560 = NormalizeDouble(ihigh_276 + li_316 * ld_88, Digits); + price_568 = NormalizeDouble(OrderOpenPrice() - (ihigh_276 - ilow_284) * TargetPercent, Digits); + OrderModify(OrderTicket(), OrderOpenPrice(), price_560, price_568, 0, Green); + } + if ((TimeCurrent() - OrderOpenTime() > 300 && f0_15(gi_908, iClose(NULL, g_timeframe_812, 1), iOpen(NULL, g_timeframe_812, 1), OrderOpenPrice() - Ask, gi_816 * ld_88) == 1) || + Ask <= OrderOpenPrice() - (iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, MODE_HIGH, gi_744, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) - iLow(NULL, PERIOD_H1, + iLowest(NULL, PERIOD_H1, MODE_LOW, gi_744, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1))) * TargetPercent || Ask >= iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1, + MODE_HIGH, gi_744, iBarShift(NULL, PERIOD_H1, OrderOpenTime()) + 1)) + li_316 * ld_88) { + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_400, Violet); + Sleep(5000); + } else count_432++; + if (TimeCurrent() >= li_456) { + if (Use_Exp_Trailing_IV) { + ld_544 = Exp_Trail_Factor_IV * ld_88 / MathMax(ld_88, OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + + 1, 0)) + Ask - Bid)); + } else ld_544 = iatr_236 * gd_784; + if (ld_544 > gi_776 * ld_88) ld_544 = gi_776 * ld_88; + if (ld_544 < gi_780 * ld_88) ld_544 = gi_780 * ld_88; + if (OrderOpenPrice() - Ask > F_TrailingProfit_III * ld_88 && (!Use_Exp_Trailing_IV)) ld_544 = F_Trailing_IV * ld_88; + price_552 = NormalizeDouble(Ask + ld_544, Digits); + if (Hidden_StopAndTarget) { + if (!(TimeCurrent() - OrderOpenTime() > 300 && Ask >= Ask - Bid + MathMin(OrderOpenPrice() + li_316 * ld_88, iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, + iBarShift(NULL, PERIOD_M5, OrderOpenTime()) + 1, 0)) + ld_544) && OrderOpenPrice() - (iLow(NULL, PERIOD_M5, iLowest(NULL, PERIOD_M5, MODE_LOW, iBarShift(NULL, PERIOD_M5, + OrderOpenTime()) + 1, 0)) + Ask - Bid) > ld_544)) continue; + RefreshRates(); + OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), slippage_400, Violet); + Sleep(5000); + continue; + } + if (OrderOpenPrice() - Ask > ld_544) { + if (OrderStopLoss() >= price_552 + Point) { + bool_76 = OrderModify(OrderTicket(), OrderOpenPrice(), price_552, OrderTakeProfit(), 0, Red); + if (bool_76) { + datetime_452 = TimeCurrent(); + g_datetime_952 = datetime_452; + } + } + } + } + } + } + } + } + double ld_576 = 0; + if (StringSubstr(AccountCurrency(), 0, 3) == "JPY") { + ld_576 = MarketInfo("USDJPY" + StringSubstr(Symbol(), 6), MODE_BID); + if (ld_576 > 0.1) ld_40 = ld_576; + else ld_40 = 84; + } + if (StringSubstr(AccountCurrency(), 0, 3) == "GBP") { + ld_576 = MarketInfo("GBPUSD" + StringSubstr(Symbol(), 6), MODE_BID); + if (ld_576 > 0.1) ld_40 = 1 / ld_576; + else ld_40 = 0.6211180124; + } + if (StringSubstr(AccountCurrency(), 0, 3) == "EUR") { + ld_576 = MarketInfo("EURUSD" + StringSubstr(Symbol(), 6), MODE_BID); + if (ld_576 > 0.1) ld_40 = 1 / ld_576; + else ld_40 = 0.7042253521; + } + if (EMAIL_Notification == TRUE) f0_7(); + bool li_584 = TRUE; + bool li_588 = TRUE; + if (No_Hedge_Trades == TRUE && count_408 > 0 || count_416 > 0 || count_424 > 0 || count_432 > 0) li_584 = FALSE; + if (No_Hedge_Trades == TRUE && count_404 > 0 || count_412 > 0 || count_420 > 0 || count_428 > 0) li_588 = FALSE; + if (NFA_Compatibility == TRUE && count_408 > 0 || count_416 > 0 || count_424 > 0 || count_432 > 0 || count_404 > 0 || count_412 > 0 || count_420 > 0 || count_428 > 0) { + li_584 = FALSE; + li_588 = FALSE; + } + double lots_592 = MathMin(g_maxlot_920, MathMax(g_minlot_912, LotsSys1)); + if (TradeMMSys1 > 0.0) lots_592 = MathMax(g_minlot_912, MathMin(g_maxlot_920, NormalizeDouble(f0_18() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_936 / (g_lotsize_932 / 100), 0) * g_lotstep_936)); + if (lots_592 > MaximalLots) lots_592 = MaximalLots; + double lots_600 = MathMin(g_maxlot_920, MathMax(g_minlot_912, LotsSys2)); + if (TradeMMSys2 > 0.0) lots_600 = MathMax(g_minlot_912, MathMin(g_maxlot_920, NormalizeDouble(f0_0() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_936 / (g_lotsize_932 / 100), 0) * g_lotstep_936)); + if (lots_600 > MaximalLots) lots_600 = MaximalLots; + double lots_608 = MathMin(g_maxlot_920, MathMax(g_minlot_912, LotsSys3)); + if (TradeMMSys3 > 0.0) lots_608 = MathMax(g_minlot_912, MathMin(g_maxlot_920, NormalizeDouble(f0_13() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_936 / (g_lotsize_932 / 100), 0) * g_lotstep_936)); + if (lots_608 > MaximalLots) lots_608 = MaximalLots; + double lots_616 = MathMin(g_maxlot_920, MathMax(g_minlot_912, LotsSys4)); + if (TradeMMSys4 > 0.0) lots_616 = MathMax(g_minlot_912, MathMin(g_maxlot_920, NormalizeDouble(f0_21() / ld_40 / 100.0 * AccountFreeMargin() / g_lotstep_936 / (g_lotsize_932 / 100), 0) * g_lotstep_936)); + if (lots_616 > MaximalLots) lots_616 = MaximalLots; + if (!Use_FXCOMBO_Scalping) lots_592 = 0; + if (!Use_FXCOMBO_Breakout) lots_600 = 0; + if (!Use_FXCOMBO_Reversal) lots_608 = 0; + if (!Use_FXCOMBO_EuroRange) lots_616 = 0; + gs_896 = "\n\n LOTS Sys1 : " + DoubleToStr(lots_592, 2) + + "\n LOTS Sys2 : " + DoubleToStr(lots_600, 2) + + "\n LOTS Sys3 : " + DoubleToStr(lots_608, 2) + + "\n LOTS Sys4 : " + DoubleToStr(lots_616, 2); + int cmd_36 = -1; + if (Use_FXCOMBO_Scalping != FALSE) { + if (count_404 < 1 && li_584 && f0_3(gi_908, iclose_172, ima_180, TREND_STR * ld_88, iwpr_188, OSC_open, gi_488, Hour(), li_320, li_324) == 0 && Bid < iclose_172 - gi_476 * ld_88) { + if (ld_96 > MaxSPREAD) Print("System 1 BUY not taken due to high spead!"); + else { + ls_624 = "BUY"; + cmd_36 = 0; + color_32 = Aqua; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = price_0 - li_296 * ld_88; + price_16 = price_0 + li_292 * ld_88; + } + } + if (count_408 < 1 && li_588 && f0_3(gi_908, iclose_172, ima_180, TREND_STR * ld_88, iwpr_188, OSC_open, gi_488, Hour(), li_320, li_324) == 1 && Bid > iclose_172 + + gi_476 * ld_88) { + if (ld_96 > MaxSPREAD) Print("System 1 SELL not taken due to high spead!"); + else { + ls_624 = "SELL"; + cmd_36 = 1; + color_32 = Red; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = price_0 + li_296 * ld_88; + price_16 = price_0 - li_292 * ld_88; + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys1 == FALSE || (NewsFilterSys1 && f0_12())) { + if (li_84 == FALSE) ticket_460 = OrderSend(Symbol(), cmd_36, lots_592, price_0, slippage_400, 0, 0, CommentSys1, Magic1, 0, color_32); + else ticket_460 = OrderSend(Symbol(), cmd_36, lots_592, price_0, slippage_400, price_8, price_16, CommentSys1, Magic1, 0, color_32); + Sleep(5000); + if (ticket_460 > 0) { + if (OrderSelect(ticket_460, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_624 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_624 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys1 && g_datetime_956 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_956 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_872); + else Print("SELL skipped: " + gs_872); + } + } + cmd_36 = -1; + if (!(TimeHour(TimeCurrent()) != li_336 && TimeHour(TimeCurrent()) != li_340 && TimeHour(TimeCurrent()) != li_344 && TimeHour(TimeCurrent()) != li_348 && TimeHour(TimeCurrent()) != li_352 && + TimeHour(TimeCurrent()) != li_356 && TimeHour(TimeCurrent()) != li_360 && TimeHour(TimeCurrent()) != li_364 && TimeHour(TimeCurrent()) != li_368 && TimeHour(TimeCurrent()) != li_372 && TimeHour(TimeCurrent()) != li_376 && TimeHour(TimeCurrent()) != li_380 && TimeHour(TimeCurrent()) != li_384 && TimeHour(TimeCurrent()) != li_388 && TimeHour(TimeCurrent()) != li_392) || + !(TimeHour(TimeCurrent()) != li_396)) { + if (Use_FXCOMBO_Breakout != FALSE) { + if (DayOfWeek() != gi_580) { + if (f0_4()) { + if (count_416 < 1 && li_588 && f0_6(gi_908, iclose_228, ld_220, ld_212, Break * ld_88, Bid, (Break - 3) * ld_88) == 1) { + if (ld_96 > MaxSPREAD) Print("System 2 SELL not taken due to high spead!"); + else { + ls_624 = "SELL"; + cmd_36 = 1; + color_32 = Yellow; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = price_0 + li_304 * ld_88; + price_16 = price_0 - li_300 * ld_88; + } + } + if (count_412 < 1 && li_584 && f0_6(gi_908, iclose_228, ld_220, ld_212, Break * ld_88, Bid, (Break - 3) * ld_88) == 0) { + if (ld_96 > MaxSPREAD) Print("System 2 BUY not taken due to high spead!"); + else { + ls_624 = "BUY"; + cmd_36 = 0; + color_32 = DodgerBlue; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = price_0 - li_304 * ld_88; + price_16 = price_0 + li_300 * ld_88; + } + } + } + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys2 == FALSE || (NewsFilterSys2 && f0_12())) { + if (li_84 == FALSE) ticket_464 = OrderSend(Symbol(), cmd_36, lots_600, price_0, slippage_400, 0, 0, CommentSys2, Magic2, 0, color_32); + else ticket_464 = OrderSend(Symbol(), cmd_36, lots_600, price_0, slippage_400, price_8, price_16, CommentSys2, Magic2, 0, color_32); + Sleep(5000); + if (ticket_464 > 0) { + if (OrderSelect(ticket_464, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_624 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_624 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys2 && g_datetime_956 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_956 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_872); + else Print("SELL skipped: " + gs_872); + } + } + cmd_36 = -1; + if (Use_FXCOMBO_Reversal != FALSE) { + if (DayOfWeek() != gi_728) { + if (DayOfWeek() != gi_732) { + if (count_420 < 1 && li_584 && (li_328 <= li_332 && TimeHour(TimeCurrent()) >= li_328 && TimeHour(TimeCurrent()) <= li_332) || (li_328 > li_332 && TimeHour(TimeCurrent()) >= li_328 || + TimeHour(TimeCurrent()) <= li_332) && f0_14(gi_908, ibands_260, ibands_268, gi_704 * ld_88, ihigh_244, ilow_252, gi_700 * ld_88) == 0) { + if (ld_96 > MaxSPREAD) Print("System 3 BUY not taken due to high spead!"); + else { + ls_624 = "BUY"; + cmd_36 = 0; + color_32 = Aqua; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = price_0 - li_312 * ld_88; + price_16 = price_0 + li_308 * ld_88; + } + } + if (count_424 < 1 && li_588 && (li_328 <= li_332 && TimeHour(TimeCurrent()) >= li_328 && TimeHour(TimeCurrent()) <= li_332) || (li_328 > li_332 && TimeHour(TimeCurrent()) >= li_328 || + TimeHour(TimeCurrent()) <= li_332) && f0_14(gi_908, ibands_260, ibands_268, gi_704 * ld_88, ihigh_244, ilow_252, gi_700 * ld_88) == 1) { + if (ld_96 > MaxSPREAD) Print("System 3 SELL not taken due to high spead!"); + else { + ls_624 = "SELL"; + cmd_36 = 1; + color_32 = DeepPink; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = price_0 + li_312 * ld_88; + price_16 = price_0 - li_308 * ld_88; + } + } + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys3 == FALSE || (NewsFilterSys3 && f0_12())) { + if (li_84 == FALSE) ticket_468 = OrderSend(Symbol(), cmd_36, lots_608, price_0, slippage_400, 0, 0, CommentSys3, Magic3, 0, color_32); + else ticket_468 = OrderSend(Symbol(), cmd_36, lots_608, price_0, slippage_400, price_8, price_16, CommentSys3, Magic3, 0, color_32); + Sleep(5000); + if (ticket_468 > 0) { + if (OrderSelect(ticket_468, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_624 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_624 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys3 && g_datetime_956 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_956 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_872); + else Print("SELL skipped: " + gs_872); + } + } + cmd_36 = -1; + if (Use_FXCOMBO_EuroRange != FALSE) { + if (count_428 < 1 && li_584 && f0_5(gi_908, gi_904, Hour(), Minute(), iOpen(NULL, PERIOD_M5, 0), ilow_284, ihigh_276, BreakPips * ld_88, gi_748 * ld_88, MaxRangePips * ld_88) == 0) { + if (ld_96 > MaxSPREAD) Print("System 4 BUY not taken due to high spead!"); + else { + ls_624 = "BUY"; + cmd_36 = 0; + color_32 = Aqua; + RefreshRates(); + price_0 = NormalizeDouble(Ask, Digits); + price_8 = NormalizeDouble(ilow_284 - li_316 * ld_88, Digits); + price_16 = NormalizeDouble(Ask + (ihigh_276 - ilow_284) * TargetPercent, Digits); + } + } + if (count_432 < 1 && li_588 && f0_5(gi_908, gi_904, Hour(), Minute(), iOpen(NULL, PERIOD_M5, 0), ilow_284, ihigh_276, BreakPips * ld_88, gi_748 * ld_88, MaxRangePips * ld_88) == 1) { + if (ld_96 > MaxSPREAD) Print("System 3 SELL not taken due to high spead!"); + else { + ls_624 = "SELL"; + cmd_36 = 1; + color_32 = DeepPink; + RefreshRates(); + price_0 = NormalizeDouble(Bid, Digits); + price_8 = NormalizeDouble(ihigh_276 + li_316 * ld_88, Digits); + price_16 = NormalizeDouble(Bid - (ihigh_276 - ilow_284) * TargetPercent, Digits); + } + } + } + if (cmd_36 >= OP_BUY && NewsFilterSys4 == FALSE || (NewsFilterSys4 && f0_12())) { + if (li_84 == FALSE) ticket_472 = OrderSend(Symbol(), cmd_36, lots_616, price_0, slippage_400, 0, 0, CommentSys4, Magic4, 0, color_32); + else ticket_472 = OrderSend(Symbol(), cmd_36, lots_616, price_0, slippage_400, price_8, price_16, CommentSys4, Magic4, 0, color_32); + Sleep(5000); + if (ticket_472 > 0) { + if (OrderSelect(ticket_472, SELECT_BY_TICKET, MODE_TRADES)) Print("Order " + ls_624 + " opened!: ", OrderOpenPrice()); + } else Print("Error opening " + ls_624 + " order!: ", GetLastError()); + } else { + if (cmd_36 >= OP_BUY && NewsFilterSys4 && g_datetime_956 != iTime(NULL, PERIOD_M5, 1)) { + g_datetime_956 = iTime(NULL, PERIOD_M5, 1); + if (cmd_36 == OP_BUY) Print("BUY skipped: " + gs_872); + else Print("SELL skipped: " + gs_872); + } + } + return (0); +} + +// D02E3467D6EE65679474EA510952586A +double f0_18() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys1; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic1) { + if (OrderProfit() > 0.0) { + if (gi_280 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_280) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_272 && gi_276 > 1) { + li_8 = MathMod(li_12, gi_276); + ld_ret_0 *= MathPow(LossFactorSys1, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// 1426E1C9819471BC17C98E7E2C7DD408 +double f0_0() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys2; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic2) { + if (OrderProfit() > 0.0) { + if (gi_324 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_324) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_316 && gi_320 > 1) { + li_8 = MathMod(li_12, gi_320); + ld_ret_0 *= MathPow(LossFactorSys2, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// 83F4D115D503A4449CBA89CBA1C83522 +double f0_13() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys3; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic3) { + if (OrderProfit() > 0.0) { + if (gi_368 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_368) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_360 && gi_364 > 1) { + li_8 = MathMod(li_12, gi_364); + ld_ret_0 *= MathPow(LossFactorSys3, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// D641B0C57C7A54EBE0F39CE9DC45E7CA +double f0_21() { + int li_8; + double ld_16; + double ld_ret_0 = TradeMMSys4; + int li_12 = 0; + if (Digits <= 3) ld_16 = 0.01; + else ld_16 = 0.0001; + for (int hist_total_24 = OrdersHistoryTotal(); hist_total_24 >= 0; hist_total_24--) { + if (OrderSelect(hist_total_24, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic4) { + if (OrderProfit() > 0.0) { + if (gi_412 == 0) break; + if (MathAbs(OrderClosePrice() - OrderOpenPrice()) / ld_16 > gi_412) break; + continue; + } + li_12++; + } + } + } + if (li_12 > gi_404 && gi_408 > 1) { + li_8 = MathMod(li_12, gi_408); + ld_ret_0 *= MathPow(LossFactorSys4, li_8); + } + if (MMMax > 0.0 && ld_ret_0 > MMMax) ld_ret_0 = MMMax; + return (ld_ret_0); +} + +// 1BBC94D06E1F0D3B9CFC87C094EBA75D +int f0_1(bool ai_0) { + string ls_4; + if (gi_960 == 0) { + ls_4 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)"; + gi_960 = InternetOpenA(ls_4, gi_968, "0", "0", 0); + gi_964 = InternetOpenA(ls_4, gi_972, "0", "0", 0); + } + if (ai_0) return (gi_964); + return (gi_960); +} + +// 67B5F51F6CCDE3F6F9D86EE70C3F4037 +int f0_11(string as_0, string &as_8) { + int lia_24[] = {1}; + string ls_28 = "x"; + int li_16 = InternetOpenUrlA(f0_1(0), as_0, "0", 0, -2080374528, 0); + if (li_16 == 0) return (0); + int li_20 = InternetReadFile(li_16, ls_28, gi_980, lia_24); + if (li_20 == 0) return (0); + int li_36 = lia_24[0]; + for (as_8 = StringSubstr(ls_28, 0, lia_24[0]); lia_24[0] != 0; as_8 = as_8 + StringSubstr(ls_28, 0, lia_24[0])) { + li_20 = InternetReadFile(li_16, ls_28, gi_980, lia_24); + if (lia_24[0] == 0) break; + li_36 += lia_24[0]; + } + li_20 = InternetCloseHandle(li_16); + if (li_20 == 0) return (0); + return (1); +} + +// 52600E5BE768512CC215866649A5EEE8 +string f0_10(string as_0, int ai_8, string as_12, string as_20, int &ai_28) { + int li_40; + string ls_ret_32 = ""; + ai_28 = StringFind(as_0, as_12, ai_8); + if (ai_28 != -1) { + ai_28 += StringLen(as_12); + li_40 = StringFind(as_0, as_20, ai_28 + 1); + ls_ret_32 = StringTrimLeft(StringTrimRight(StringSubstr(as_0, ai_28, li_40 - ai_28))); + } + return (ls_ret_32); +} + +// 2ECDE036AF96C414B28F3D71FF3E5C89 +bool f0_4() { + double ld_4; + int datetime_12; + bool li_ret_0 = TRUE; + if (Digits <= 3) ld_4 = 0.01; + else ld_4 = 0.0001; + if (gi_572 > 0 && gi_576 > 0) { + datetime_12 = 0; + for (int pos_16 = OrdersHistoryTotal() - 1; pos_16 >= 0; pos_16--) { + if (OrderSelect(pos_16, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic2) { + if (!((OrderType() == OP_BUY && (OrderClosePrice() - OrderOpenPrice()) / ld_4 <= (-gi_572)) || (OrderType() == OP_SELL && (OrderOpenPrice() - OrderClosePrice()) / ld_4 <= (-gi_572)))) break; + datetime_12 = OrderCloseTime(); + break; + } + } + } + if (TimeCurrent() - datetime_12 < 60 * gi_576) li_ret_0 = FALSE; + } + return (li_ret_0); +} + +// 4562D26A98BEC98E7F1F6ECD0D270191 +void f0_7() { + string ls_0; + string ls_8; + bool li_16 = FALSE; + if (IsTesting() || EMAIL_Notification == FALSE) return; + if (g_datetime_984 == 0) { + g_datetime_984 = TimeCurrent(); + return; + } + if (g_datetime_984 != TimeCurrent()) { + for (int pos_20 = 0; pos_20 <= OrdersTotal() - 1; pos_20++) { + if (OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { + ls_0 = ""; + ls_8 = ""; + if (OrderOpenTime() >= g_datetime_984) { + if (OrderMagicNumber() == Magic1) ls_0 = "FX COMBO - System 1"; + else { + if (OrderMagicNumber() == Magic2) ls_0 = "FX COMBO - System 2"; + else { + if (OrderMagicNumber() == Magic3) ls_0 = "FX COMBO - System 3"; + else + if (OrderMagicNumber() == Magic4) ls_0 = "FX COMBO - System 4"; + } + } + } + if (StringLen(ls_0) > 1) { + if (OrderType() == OP_BUY) ls_8 = "Buy"; + else ls_8 = "Sell"; + ls_8 = ls_8 + " order (" + OrderTicket() + ") is opened: " + DoubleToStr(OrderOpenPrice(), Digits) + ", SL:" + DoubleToStr(OrderStopLoss(), Digits) + ", TP:" + DoubleToStr(OrderTakeProfit(), + Digits); + li_16 = TRUE; + SendMail(ls_0, ls_8); + } + } + } + } + for (pos_20 = OrdersHistoryTotal() - 1; pos_20 >= 0; pos_20--) { + if (OrderSelect(pos_20, SELECT_BY_POS, MODE_HISTORY)) { + if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { + if (OrderCloseTime() <= g_datetime_984) break; + ls_0 = ""; + ls_8 = ""; + if (OrderMagicNumber() == Magic1) ls_0 = "FX COMBO - System 1"; + else { + if (OrderMagicNumber() == Magic2) ls_0 = "FX COMBO - System 2"; + else { + if (OrderMagicNumber() == Magic3) ls_0 = "FX COMBO - System 3"; + else + if (OrderMagicNumber() == Magic4) ls_0 = "FX COMBO - System 4"; + } + } + if (StringLen(ls_0) > 1) { + if (OrderType() == OP_BUY) ls_8 = "Buy"; + else ls_8 = "Sell"; + ls_8 = ls_8 + " order (" + OrderTicket() + ") is closed at " + DoubleToStr(OrderClosePrice(), Digits) + ", result: " + DoubleToStr(OrderProfit(), 2); + li_16 = TRUE; + SendMail(ls_0, ls_8); + } + } + } + } + g_datetime_984 = TimeCurrent(); + if (li_16) Sleep(1000); + } +} + +// E3B8CE68351C84C8B515C82ACBBB0EE6 +int f0_23(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16) { + return (dllInit(ai_0, ai_4, ai_8, ai_12, ai_16)); +} + +// 29DAC705E91697557643EA4C711D8B68 +int f0_3(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44, int ai_52, int ai_56, int ai_60) { + return (dllOpenCond1(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44, ai_52, ai_56, ai_60)); +} + +// D9202589407AB6642667D56EE84254EA +int f0_22(int ai_0, double ad_4, double ad_12) { + return (dllCloseCond1(ai_0, ad_4, ad_12)); +} + +// 44567E69B823BB26B6869904454BF05C +int f0_6(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44) { + return (dllOpenCond2(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44)); +} + +// EEF41F888AA1DBD8510C8683BC48D7AD +int f0_24(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28) { + return (dllCloseCond2(ai_0, ad_4, ad_12, ad_20, ad_28)); +} + +// 92A3FDDEEEC551F0BD51E1CA298C5AD1 +int f0_14(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44) { + return (dllOpenCond3(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44)); +} + +// D46589441045E3AD992FFC65BB286757 +int f0_20(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28, double ad_36, double ad_44) { + return (dllCloseCond3(ai_0, ad_4, ad_12, ad_20, ad_28, ad_36, ad_44)); +} + +// 3B7B45F7BE75FFD320F254B07E5B03F8 +int f0_5(int ai_0, int ai_4, int ai_8, int ai_12, double ad_16, double ad_24, double ad_32, double ad_40, double ad_48, double ad_56) { + return (dllOpenCond4(ai_0, ai_4, ai_8, ai_12, ad_16, ad_24, ad_32, ad_40, ad_48, ad_56)); +} + +// A3F60245633C3C27AC5CFCF739CC878C +int f0_15(int ai_0, double ad_4, double ad_12, double ad_20, double ad_28) { + return (dllCloseCond4(ai_0, ad_4, ad_12, ad_20, ad_28)); +} + +// D2144D62ECAE784A90B5A1507B3470E5 +void f0_19(int &ai_0, int &ai_4) { + ai_0 = dllParamInit1(1); + ai_4 = dllParamInit1(2); +} + +// 4EC5637CC867CE5029614AE3D5C0250E +void f0_8(int &ai_0, int &ai_4, int &ai_8, int &ai_12, int &ai_16, int &ai_20, int &ai_24, int &ai_28, int &ai_32, int &ai_36, int &ai_40, int &ai_44) { + ai_0 = dllParamInit2(1); + ai_4 = dllParamInit2(2); + ai_8 = dllParamInit2(3); + ai_12 = dllParamInit2(4); + ai_16 = dllParamInit2(5); + ai_20 = dllParamInit2(6); + ai_24 = dllParamInit2(7); + ai_28 = dllParamInit2(8); + ai_32 = dllParamInit2(9); + ai_36 = dllParamInit2(10); + ai_40 = dllParamInit2(11); + ai_44 = dllParamInit2(12); +} + +// 4FDB54BD385BA8F60BAEB409EB093F11 +double f0_9(double ad_0, double ad_8, double ad_16) { + return (dllExpTrailLong(ad_0, ad_8, ad_16)); +} + +// B16077AEC05278814CF99921982899CE +double f0_16(double ad_0, double ad_8, double ad_16) { + return (dllExpTrailShort(ad_0, ad_8, ad_16)); +} + +// B95D831F7DC28FD0740EAF9E89023C16 +int f0_17() { + return (dllGMTOffset()); +} + +// 1C73977C8A2A8C537EB65C934BBA7E7B +void f0_2() { + int file_0; + int li_8; + int li_12; + string ls_16; + string ls_24; + bool li_32; + string ls_44; + string ls_52; + string ls_60; + string ls_68; + string ls_76; + string ls_84; + string ls_92; + int li_100; + string name_104; + string ls_112; + string ls_120; + bool li_128; + int li_132; + int li_136; + int li_140; + int li_144; + string ls_152; + int li_160; + gs_856 = ""; + if (NewsFilterSys1 == FALSE && NewsFilterSys2 == FALSE && NewsFilterSys3 == FALSE && NewsFilterSys4 == FALSE) { + gs_856 = "News Filter - OFF"; + return; + } + gs_864 = ""; + if (NewsFilterSys1) { + gs_864 = gs_864 + + "\n News Filter System 1: ENABLED "; + } else { + gs_864 = gs_864 + + "\n News Filter System 1: DISABLED "; + } + if (NewsFilterSys2) { + gs_864 = gs_864 + + "\n News Filter System 2: ENABLED "; + } else { + gs_864 = gs_864 + + "\n News Filter System 2: DISABLED "; + } + if (NewsFilterSys3) { + gs_864 = gs_864 + + "\n News Filter System 3: ENABLED "; + } else { + gs_864 = gs_864 + + "\n News Filter System 3: DISABLED "; + } + if (NewsFilterSys4) { + gs_864 = gs_864 + + "\n News Filter System 4: ENABLED "; + } else { + gs_864 = gs_864 + + "\n News Filter System 4: DISABLED "; + } + gs_856 = "News Filter - No Important News"; + if (MathAbs(TimeCurrent() - g_datetime_880) >= 86400.0 || TimeDay(TimeCurrent()) != TimeDay(g_datetime_880)) { + name_104 = "forex_combo_system_current_news.csv"; + ls_112 = "http://www.forex-combo.com/calendar.php?all=0"; + g_datetime_880 = TimeCurrent(); + if (IsTesting()) { + name_104 = "forex_combo_system_history_news.csv"; + ls_112 = "http://www.forex-combo.com/calendar.php?all=1"; + } + ls_112 = ls_112 + "&AccountId=" + DoubleToStr(AccountNumber(), 0) + "&AccountType="; + if (IsDemo()) ls_112 = ls_112 + "1"; + else ls_112 = ls_112 + "2"; + li_32 = TRUE; + for (int li_4 = 1; li_4 <= 3; li_4++) { + file_0 = FileOpen(name_104, FILE_CSV|FILE_READ, ';'); + if (file_0 >= 0) break; + Sleep(1000); + } + if (file_0 >= 0) { + while (!FileIsEnding(file_0)) { + for (string ls_36 = FileReadString(file_0); !FileIsEnding(file_0); ls_36 = FileReadString(file_0)) + if (StringLen(ls_36) == 10 && StringFind(ls_36, ".") == 4) break; + ls_44 = FileReadString(file_0); + if (StringLen(ls_44) != 5 || StringFind(ls_44, ":") != 2) continue; + ls_52 = FileReadString(file_0); + ls_60 = FileReadString(file_0); + ls_68 = FileReadString(file_0); + ls_76 = FileReadString(file_0); + ls_84 = FileReadString(file_0); + ls_92 = FileReadString(file_0); + if (StringLen(ls_36) > 0 && StringLen(ls_44) > 0) { + li_100 = StrToTime(ls_36 + " " + ls_44) + 3600 * gi_904; + if ((IsTesting() && li_100 >= TimeCurrent() - 86400) || (!IsTesting() && li_100 >= TimeCurrent() + 86400) || (!IsTesting() && Day() >= 5 && li_100 - 3600 * gi_904 > iTime(NULL, + PERIOD_D1, 0))) { + li_32 = FALSE; + break; + } + } + } + FileClose(file_0); + if (li_32) FileDelete(name_104); + } + if (li_32) { + li_12 = 0; + for (li_4 = 1; li_4 <= 3; li_4++) { + file_0 = FileOpen(name_104, FILE_CSV|FILE_WRITE, ';'); + if (file_0 >= 0) break; + Sleep(1000); + } + if (file_0 >= 0) { + ls_120 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)"; + li_128 = FALSE; + li_144 = 120; + int lia_148[] = {1}; + ls_152 = " "; + ls_16 = ""; + for (li_4 = 1; li_4 <= 3; li_4++) { + li_132 = InternetOpenA(ls_120, li_128, "0", "0", 0); + if (li_132 != 0) break; + Sleep(1000); + } + if (li_132 != 0) { + for (li_4 = 1; li_4 <= 3; li_4++) { + li_136 = InternetOpenUrlA(li_132, ls_112, "0", 0, -2080374528, 0); + if (li_136 != 0) break; + Sleep(1000); + } + if (li_136 != 0) { + li_140 = InternetReadFile(li_136, ls_152, li_144, lia_148); + if (li_140 != 0) { + ls_16 = StringSubstr(ls_152, 0, lia_148[0]); + while (lia_148[0] != 0) { + li_140 = InternetReadFile(li_136, ls_152, li_144, lia_148); + if (lia_148[0] == 0) break; + ls_16 = ls_16 + StringSubstr(ls_152, 0, lia_148[0]); + li_12 += lia_148[0]; + while (true) { + li_8 = -1; + for (li_4 = 0; li_4 < StringLen(ls_16); li_4++) { + li_160 = StringGetChar(ls_16, li_4); + if (li_160 == 10 || li_160 == 13) { + li_8 = li_4; + break; + } + } + if (li_8 < 0) break; + if (li_8 > 0) { + ls_24 = StringSubstr(ls_16, 0, li_8); + FileWrite(file_0, ls_24); + } + ls_16 = StringSubstr(ls_16, li_8 + 1); + } + } + if (StringLen(ls_16) > 0) FileWrite(file_0, ls_16); + ls_16 = ""; + } + InternetCloseHandle(li_136); + } + InternetCloseHandle(li_132); + } + FileClose(file_0); + } + if (li_12 <= 10) { + Alert("Can\'t download " + name_104 + ". News Filter was turned OFF"); + if (IsTesting()) Print("Can\'t download " + name_104 + ". News Filter was turned OFF"); + Sleep(5000); + } else Print("Downloaded " + DoubleToStr(li_12, 0) + " bytes (" + name_104 + ")"); + } + g_index_988 = 0; + for (li_4 = 1; li_4 <= 3; li_4++) { + file_0 = FileOpen(name_104, FILE_CSV|FILE_READ, ';'); + if (file_0 >= 0) break; + Sleep(1000); + } + if (file_0 < 0) { + Alert("Can\'t open " + name_104 + ". Error code: ", GetLastError()); + if (IsTesting()) Print("Can\'t open " + name_104 + ". Error code: ", GetLastError()); + Sleep(5000); + } else { + while (!FileIsEnding(file_0)) { + for (ls_36 = FileReadString(file_0); !FileIsEnding(file_0); ls_36 = FileReadString(file_0)) + if (StringLen(ls_36) == 10 && StringFind(ls_36, ".") == 4) break; + ls_44 = FileReadString(file_0); + if (StringLen(ls_44) != 5 || StringFind(ls_44, ":") != 2) continue; + ls_52 = FileReadString(file_0); + ls_60 = FileReadString(file_0); + ls_68 = FileReadString(file_0); + ls_76 = FileReadString(file_0); + ls_84 = FileReadString(file_0); + ls_92 = FileReadString(file_0); + if (StringLen(ls_36) > 0 && StringLen(ls_44) > 0) { + li_100 = StrToTime(ls_36 + " " + ls_44) + 3600 * gi_904; + if (li_100 >= TimeCurrent() - 86400 && li_100 <= TimeCurrent() + 86400 && StringFind(Symbol(), ls_52) >= 0 && ls_68 == "3" || (ls_68 == "2" && Include_Medium_News)) { + g_index_988++; + gia_992[g_index_988] = li_100; + gsa_996[g_index_988] = ls_52; + gsa_1000[g_index_988] = ls_60; + } + } + } + FileClose(file_0); + } + } + for (li_4 = 1; li_4 <= g_index_988; li_4++) { + if (gia_992[li_4] >= TimeCurrent() && gia_992[li_4] <= TimeCurrent() + 86400 && TimeDay(gia_992[li_4]) == TimeDay(TimeCurrent())) { + gs_856 = TimeToStr(gia_992[li_4], TIME_MINUTES) + " " + gsa_996[li_4] + " News - " + gsa_1000[li_4]; + break; + } + } + if (StringLen(gs_856) > 33) gs_856 = StringSubstr(gs_856, 0, 30) + "..."; +} + +// 697A7D88FF8EA0B64CD60B324DDE1103 +int f0_12() { + bool li_ret_0 = TRUE; + if (NewsFilterSys1 || NewsFilterSys2 || NewsFilterSys3 || NewsFilterSys4) { + gs_872 = ""; + for (int li_4 = 1; li_4 <= g_index_988; li_4++) { + if ((gia_992[li_4] < TimeCurrent() && gia_992[li_4] + 60 * Wait_After_News >= TimeCurrent()) || (gia_992[li_4] >= TimeCurrent() && gia_992[li_4] - 60 * Wait_Before_News <= TimeCurrent())) { + gs_872 = TimeToStr(gia_992[li_4], TIME_MINUTES) + " " + gsa_996[li_4] + " News - " + gsa_1000[li_4]; + li_ret_0 = FALSE; + break; + } + } + } + return (li_ret_0); +} \ No newline at end of file diff --git a/GPSForexRobotEURGBP_edu.mq4 b/GPSForexRobotEURGBP_edu.mq4 new file mode 100644 index 0000000..ad3f71c --- /dev/null +++ b/GPSForexRobotEURGBP_edu.mq4 @@ -0,0 +1,1210 @@ +/* + Generated by EX4-TO-MQ4 decompiler V4.0.224.1 [] + Website: http://purebeam.biz + E-mail : purebeam@gmail.com +*/ +#property copyright "Copyright © 2010, GPSForexRobot.com" +#property link "http://gpsforexrobot.com/" + +#import "GPSForexRobotEURGBP.dll" +// int GPSForexRobot(double& a0[], string a1, string a2, int a3, int a4); + int GetGMT(); +#import + +extern string GPS_Forex_Robot_EURGBP = " "; +/* +extern string ____Authentication________ = "---------------------------------------------"; +extern string EMail = ""; +extern string CBReceipt = ""; +*/ +extern string ____Size_of_lots________ = "---------------------------------------------"; +extern bool UseMM = FALSE; +extern double Lots = 0.01; +extern double LotsRiskReductor = 10.0; +extern double MaxLots = 1000.0; +extern string ____General_Options_____ = "---------------------------------------------"; +extern bool AutoGMTOffset = TRUE; +extern int GMTOffset = 1; +bool gi_160 = FALSE; +int gi_164 = 2; +bool gi_168 = TRUE; +double gd_172 = 34.0; +double gd_180 = 10.0; +int gi_188 = 7; +int gi_192 = 0; +bool gi_196 = FALSE; +bool gi_200 = TRUE; +bool gi_204 = FALSE; +bool gi_208 = TRUE; +bool gi_212 = FALSE; +int gi_216 = -6; +int gi_220 = 1; +int gi_224 = 20100109; +bool gi_228 = TRUE; +double gd_232 = 30.0; +double gd_240 = 11.0; +double gd_248 = 3.0; +int gi_256 = 20100129; +extern string ____Others______________ = "---------------------------------------------"; +extern string ExpertComment = "GPS Forex Robot"; +extern color ColorBuy = Blue; +extern color ColorSell = Red; +extern bool SendEmail = FALSE; +extern bool SoundAlert = FALSE; +extern string SoundFileAtOpen = "alert.wav"; +extern string SoundFileAtClose = "alert.wav"; +extern bool WriteLog = FALSE; +extern bool WriteDebugLog = FALSE; +bool gi_316 = TRUE; +int gi_320 = 2; +int gi_324 = 1; +string gs_unused_328 = "New Trade Information"; +string gs_336 = "New Trade Information"; +int g_bool_344; +int gi_348; +int gi_352; +int g_slippage_356; +double gd_360; +double g_maxlot_368; +double g_minlot_376; +double gd_384; +double gd_392; +double g_lotstep_400; +double gd_408; +string g_symbol_416; +string gs_424; +bool gba_432[4]; +double gda_436[4]; +double gda_440[4]; +int gia_444[4]; +int gia_448[4]; +bool gba_452[4][5]; +int gia_456[4]; +int gia_460[4]; +int gia_464[4]; +bool gba_468[4]; +double gda_472[4]; +double gda_476[4]; +double gda_480[4]; +int gia_484[4]; +bool gi_488; +bool gi_492; +int gi_496 = 0; +bool gi_500 = FALSE; +int gi_504 = 0; +double gda_508[52] = {0}; +string gs_512 = ""; +string gs_520 = ""; +string gs_528 = ""; +bool gi_536 = FALSE; + +int init() { + gi_492 = TRUE; + if (!IsDllsAllowed()) { + SetCommentPrint("WARNING: Set Parameter \"AllowDLL Imports\" ON in menu Tools -> Options -> ExpertAdvisors.", "comment"); + gi_492 = FALSE; + return (0); + } + if (StringSubstr(Symbol(), 0, 6) != "EURGBP") { + SetCommentPrint("WARNING: Use GPS Forex Robot EURGBP only on EURGBP pair.", "comment"); + gi_492 = FALSE; + return (0); + } + if (IsTesting()) { + if (AutoGMTOffset) { + SetCommentPrint("WARNING: Automatic GMT offset calculation works only on live/demo trading " + "and should be set as FALSE for backtests - strategy testing.", "comment"); + gi_492 = FALSE; + return (0); + } + } + if (WriteDebugLog) { + WriteLog = TRUE; + Print("*************************** Initialization ***************************"); + } + g_symbol_416 = Symbol(); + g_maxlot_368 = MarketInfo(g_symbol_416, MODE_MAXLOT); + g_minlot_376 = MarketInfo(g_symbol_416, MODE_MINLOT); + g_lotstep_400 = MarketInfo(g_symbol_416, MODE_LOTSTEP); + if (g_lotstep_400 == 0.01) gi_348 = 2; + else { + if (g_lotstep_400 == 0.1) gi_348 = 1; + else { + if (g_lotstep_400 == 1.0) gi_348 = 0; + else { + if (g_lotstep_400 == 0.001) gi_348 = 3; + else gi_348 = 4; + } + } + } + double l_leverage_0 = AccountLeverage(); + gd_408 = NormalizeDouble(LotsRiskReductor * (100 / l_leverage_0), 2); + gs_424 = AccountCurrency(); + g_bool_344 = IsTesting(); + if (Digits < 4) { + gd_360 = 0.01; + gi_352 = 2; + } else { + gd_360 = 0.0001; + gi_352 = 4; + } + int li_8 = MathPow(10, Digits - gi_352); + g_slippage_356 = gi_164 * li_8; + gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits - gi_352); + gd_392 = gd_384; + if (IsTesting()) { + Authentication(); + if (gi_496 != 1) { + PrintInformation(); + gi_492 = FALSE; + return (0); + } + } + gi_488 = TRUE; + return (0); +} + +int deinit() { + Comment(""); + if (WriteDebugLog) Print("*************************** Deinitialization ***************************"); + return (0); +} + +int start() { + double ld_24; + if (!gi_492) return (0); + int l_datetime_0 = TimeCurrent(); + if (!IsTesting()) { + if (gi_488) { + if (AutoGMTOffset) { + if (AutoGMTOffset(GMTOffset)) gs_512 = GMTOffset + " (automatic)"; + else gs_512 = "Error"; + } else gs_512 = GMTOffset + " (manual)"; + Authentication(); + gi_500 = TRUE; + gi_504 = l_datetime_0; + gi_488 = FALSE; + } + if (gi_500 == TRUE && gi_504 < l_datetime_0 - 60) { + gi_500 = FALSE; + gi_504 = l_datetime_0 + 60 * (780 - Rand(120)); + } + if (gi_500 == FALSE && l_datetime_0 >= gi_504) { + gi_500 = TRUE; + Authentication(); + } + PrintInformation(); + } + if (gi_496 != 1) return (0); + gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits - gi_352); + if (gd_384 > gd_392) gd_392 = gd_384; + int l_datetime_4 = TimeCurrent(); + int li_8 = l_datetime_4 - 3600 * GMTOffset; + int l_day_of_week_12 = TimeDayOfWeek(l_datetime_4); + int l_datetime_16 = iTime(NULL, PERIOD_D1, 0); + for (int l_index_20 = 0; l_index_20 < 4; l_index_20++) { + if (gba_432[l_index_20]) { + if (!gi_160) SetOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]); + WatchOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]); + if (gba_468[l_index_20]) { + if (!gi_160) SetOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]); + WatchOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]); + if (HaveOrdersInDay(-2, gia_484[l_index_20], l_datetime_16) == 0) WatchReverseAfterSL(l_index_20); + } + if (l_day_of_week_12 <= 0 || l_day_of_week_12 > 5) continue; + if ((gba_452[l_index_20][l_day_of_week_12 - 1])) { + if (gia_444[l_index_20] != TimeHour(l_datetime_4) || gia_448[l_index_20] != TimeMinute(l_datetime_4)) continue; + if (HaveOrdersInDay(-2, gia_460[l_index_20], l_datetime_16) <= 0) { + ld_24 = LotsOptimized(gia_464[l_index_20]); + if (gia_456[l_index_20] >= 0) + if (l_day_of_week_12 == gia_456[l_index_20]) ld_24 = NormalizeDouble(2.0 * ld_24, gi_348); + OpenOrder(gia_464[l_index_20], gia_460[l_index_20], ExpertComment, ld_24); + } + } + } + } + return (0); +} + +string ErrorDescription(int ai_0) { + string ls_ret_8; + switch (ai_0) { + case 0: + case 1: + ls_ret_8 = "no error"; + break; + case 2: + ls_ret_8 = "common error"; + break; + case 3: + ls_ret_8 = "invalid trade parameters"; + break; + case 4: + ls_ret_8 = "trade server is busy"; + break; + case 5: + ls_ret_8 = "old version of the client terminal"; + break; + case 6: + ls_ret_8 = "no connection with trade server"; + break; + case 7: + ls_ret_8 = "not enough rights"; + break; + case 8: + ls_ret_8 = "too frequent requests"; + break; + case 9: + ls_ret_8 = "malfunctional trade operation (never returned error)"; + break; + case 64: + ls_ret_8 = "account disabled"; + break; + case 65: + ls_ret_8 = "invalid account"; + break; + case 128: + ls_ret_8 = "trade timeout"; + break; + case 129: + ls_ret_8 = "invalid price"; + break; + case 130: + ls_ret_8 = "invalid stops"; + break; + case 131: + ls_ret_8 = "invalid trade volume"; + break; + case 132: + ls_ret_8 = "market is closed"; + break; + case 133: + ls_ret_8 = "trade is disabled"; + break; + case 134: + ls_ret_8 = "not enough money"; + break; + case 135: + ls_ret_8 = "price changed"; + break; + case 136: + ls_ret_8 = "off quotes"; + break; + case 137: + ls_ret_8 = "broker is busy (never returned error)"; + break; + case 138: + ls_ret_8 = "requote"; + break; + case 139: + ls_ret_8 = "order is locked"; + break; + case 140: + ls_ret_8 = "long positions only allowed"; + break; + case 141: + ls_ret_8 = "too many requests"; + break; + case 145: + ls_ret_8 = "modification denied because order too close to market"; + break; + case 146: + ls_ret_8 = "trade context is busy"; + break; + case 147: + ls_ret_8 = "expirations are denied by broker"; + break; + case 148: + ls_ret_8 = "amount of open and pending orders has reached the limit"; + break; + case 149: + ls_ret_8 = "hedging is prohibited"; + break; + case 150: + ls_ret_8 = "prohibited by FIFO rules"; + break; + case 4000: + ls_ret_8 = "no error (never generated code)"; + break; + case 4001: + ls_ret_8 = "wrong function pointer"; + break; + case 4002: + ls_ret_8 = "array index is out of range"; + break; + case 4003: + ls_ret_8 = "no memory for function call stack"; + break; + case 4004: + ls_ret_8 = "recursive stack overflow"; + break; + case 4005: + ls_ret_8 = "not enough stack for parameter"; + break; + case 4006: + ls_ret_8 = "no memory for parameter string"; + break; + case 4007: + ls_ret_8 = "no memory for temp string"; + break; + case 4008: + ls_ret_8 = "not initialized string"; + break; + case 4009: + ls_ret_8 = "not initialized string in array"; + break; + case 4010: + ls_ret_8 = "no memory for array\' string"; + break; + case 4011: + ls_ret_8 = "too long string"; + break; + case 4012: + ls_ret_8 = "remainder from zero divide"; + break; + case 4013: + ls_ret_8 = "zero divide"; + break; + case 4014: + ls_ret_8 = "unknown command"; + break; + case 4015: + ls_ret_8 = "wrong jump (never generated error)"; + break; + case 4016: + ls_ret_8 = "not initialized array"; + break; + case 4017: + ls_ret_8 = "dll calls are not allowed"; + break; + case 4018: + ls_ret_8 = "cannot load library"; + break; + case 4019: + ls_ret_8 = "cannot call function"; + break; + case 4020: + ls_ret_8 = "expert function calls are not allowed"; + break; + case 4021: + ls_ret_8 = "not enough memory for temp string returned from function"; + break; + case 4022: + ls_ret_8 = "system is busy (never generated error)"; + break; + case 4050: + ls_ret_8 = "invalid function parameters count"; + break; + case 4051: + ls_ret_8 = "invalid function parameter value"; + break; + case 4052: + ls_ret_8 = "string function internal error"; + break; + case 4053: + ls_ret_8 = "some array error"; + break; + case 4054: + ls_ret_8 = "incorrect series array using"; + break; + case 4055: + ls_ret_8 = "custom indicator error"; + break; + case 4056: + ls_ret_8 = "arrays are incompatible"; + break; + case 4057: + ls_ret_8 = "global variables processing error"; + break; + case 4058: + ls_ret_8 = "global variable not found"; + break; + case 4059: + ls_ret_8 = "function is not allowed in testing mode"; + break; + case 4060: + ls_ret_8 = "function is not confirmed"; + break; + case 4061: + ls_ret_8 = "send mail error"; + break; + case 4062: + ls_ret_8 = "string parameter expected"; + break; + case 4063: + ls_ret_8 = "integer parameter expected"; + break; + case 4064: + ls_ret_8 = "double parameter expected"; + break; + case 4065: + ls_ret_8 = "array as parameter expected"; + break; + case 4066: + ls_ret_8 = "requested history data in update state"; + break; + case 4099: + ls_ret_8 = "end of file"; + break; + case 4100: + ls_ret_8 = "some file error"; + break; + case 4101: + ls_ret_8 = "wrong file name"; + break; + case 4102: + ls_ret_8 = "too many opened files"; + break; + case 4103: + ls_ret_8 = "cannot open file"; + break; + case 4104: + ls_ret_8 = "incompatible access to a file"; + break; + case 4105: + ls_ret_8 = "no order selected"; + break; + case 4106: + ls_ret_8 = "unknown symbol"; + break; + case 4107: + ls_ret_8 = "invalid price parameter for trade function"; + break; + case 4108: + ls_ret_8 = "invalid ticket"; + break; + case 4109: + ls_ret_8 = "trade is not allowed in the expert properties"; + break; + case 4110: + ls_ret_8 = "longs are not allowed in the expert properties"; + break; + case 4111: + ls_ret_8 = "shorts are not allowed in the expert properties"; + break; + case 4200: + ls_ret_8 = "object is already exist"; + break; + case 4201: + ls_ret_8 = "unknown object property"; + break; + case 4202: + ls_ret_8 = "object is not exist"; + break; + case 4203: + ls_ret_8 = "unknown object type"; + break; + case 4204: + ls_ret_8 = "no object name"; + break; + case 4205: + ls_ret_8 = "object coordinates error"; + break; + case 4206: + ls_ret_8 = "no specified subwindow"; + break; + default: + ls_ret_8 = "unknown error"; + } + return (ls_ret_8); +} + +string OrderTypeToStr(int ai_0) { + string ls_ret_8; + switch (ai_0) { + case 0: + ls_ret_8 = "Buy"; + break; + case 1: + ls_ret_8 = "Sell"; + break; + case 2: + ls_ret_8 = "BuyLimit"; + break; + case 3: + ls_ret_8 = "SellLimit"; + break; + case 4: + ls_ret_8 = "BuyStop"; + break; + case 5: + ls_ret_8 = "SellStop"; + break; + default: + ls_ret_8 = "Unknown"; + } + return (ls_ret_8); +} + +int GetGMTCorrection(int ai_0) { + ai_0 += GMTOffset; + while (true) { + if (ai_0 >= 24) { + ai_0 -= 24; + continue; + } + if (ai_0 >= 0) break; + ai_0 += 24; + } + return (ai_0); +} + +void SetOrderLevels(double ad_0, double ad_8, int a_magic_16) { + int l_cmd_36; + double ld_40; + double l_price_48; + double ld_56; + double ld_64; + bool li_72; + double l_price_76; + bool li_84; + double l_price_88; + bool l_bool_96; + double ld_20 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits); + int li_28 = OrdersTotal() - 1; + for (int l_pos_32 = li_28; l_pos_32 >= 0; l_pos_32--) { + if (!OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("SetOrderLevels: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_16) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_36 = OrderType(); + ld_40 = NormalizeDouble(OrderClosePrice(), Digits); + l_price_48 = NormalizeDouble(OrderOpenPrice(), Digits); + if (l_cmd_36 > OP_SELL) + if (NormalizeDouble(MathAbs(l_price_48 - ld_40), Digits) <= ld_20) continue; + ld_56 = NormalizeDouble(OrderStopLoss(), Digits); + ld_64 = NormalizeDouble(OrderTakeProfit(), Digits); + li_72 = FALSE; + if (ld_56 == 0.0) { + if (ad_8 < 0.0) { + if (l_cmd_36 % 2 == 0) { + l_price_76 = NormalizeDouble(l_price_48 + ad_8, Digits); + if (NormalizeDouble(ld_40 - l_price_76, Digits) > ld_20) li_72 = TRUE; + else l_price_76 = ld_56; + } else { + l_price_76 = NormalizeDouble(l_price_48 - ad_8, Digits); + if (NormalizeDouble(l_price_76 - ld_40, Digits) > ld_20) li_72 = TRUE; + else l_price_76 = ld_56; + } + } else l_price_76 = ld_56; + } else l_price_76 = ld_56; + li_84 = FALSE; + if (ld_64 == 0.0) { + if (ad_0 > 0.0) { + if (l_cmd_36 % 2 == 0) { + l_price_88 = NormalizeDouble(l_price_48 + ad_0, Digits); + if (NormalizeDouble(l_price_88 - ld_40, Digits) > ld_20) li_84 = TRUE; + else l_price_88 = ld_64; + } else { + l_price_88 = NormalizeDouble(l_price_48 - ad_0, Digits); + if (NormalizeDouble(ld_40 - l_price_88, Digits) > ld_20) li_84 = TRUE; + else l_price_88 = ld_64; + } + } else l_price_88 = ld_64; + } else l_price_88 = ld_64; + if (li_72 || li_84) { + while (!IsTradeAllowed()) Sleep(1000); + l_bool_96 = OrderModify(OrderTicket(), l_price_48, l_price_76, l_price_88, 0, CLR_NONE); + if (!l_bool_96) + if (WriteLog) Print(StringConcatenate("SetOrderLevels: OrderModify(", OrderTypeToStr(OrderType()), ") error = ", ErrorDescription(GetLastError()))); + } + } + } + } + } +} + +void WatchOrderLevels(double ad_0, double ad_8, int a_magic_16) { + double ld_28; + double ld_36; + double ld_44; + if (ad_0 <= 0.0 && ad_8 >= 0.0) return; + int li_20 = OrdersTotal() - 1; + for (int l_pos_24 = li_20; l_pos_24 >= 0; l_pos_24--) { + if (!OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("WatchOrderLevels: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_16) { + if (OrderType() <= OP_SELL) { + if (OrderSymbol() == g_symbol_416) { + ld_28 = NormalizeDouble(OrderClosePrice(), Digits); + ld_36 = NormalizeDouble(OrderOpenPrice(), Digits); + if (OrderType() == OP_BUY) { + ld_44 = NormalizeDouble(ld_28 - ld_36, Digits); + if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) { + if (WriteLog) Print("WatchOrderLevels: level for close BUY"); + CloseOrder(OrderTicket(), OrderLots(), 0, g_slippage_356); + } + } else { + ld_44 = NormalizeDouble(ld_36 - ld_28, Digits); + if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) { + if (WriteLog) Print("WatchOrderLevels: level for close SELL"); + CloseOrder(OrderTicket(), OrderLots(), 1, g_slippage_356); + } + } + } + } + } + } + } +} + +double LotsOptimized(int ai_unused_0) { + double ld_ret_4; + double ld_12; + double ld_20; + if (!UseMM) ld_ret_4 = Lots; + else { + ld_12 = AccountFreeMargin() * gd_408 / 100.0; + ld_20 = MarketInfo(g_symbol_416, MODE_MARGINREQUIRED) * g_lotstep_400; + ld_ret_4 = NormalizeDouble(MathFloor(ld_12 / ld_20) * g_lotstep_400, gi_348); + } + if (ld_ret_4 > MaxLots) ld_ret_4 = MaxLots; + if (ld_ret_4 < g_minlot_376) ld_ret_4 = g_minlot_376; + if (ld_ret_4 > g_maxlot_368) ld_ret_4 = g_maxlot_368; + return (ld_ret_4); +} + +int OpenOrder(int a_cmd_0, int a_magic_4, string a_comment_8, double ad_16, double a_price_24 = 0.0) { + color l_color_36; + int l_ticket_72; + int l_error_76; + double ld_80; + if (a_cmd_0 > OP_SELL && a_price_24 == 0.0) return (-1); + int l_cmd_32 = a_cmd_0 % 2; + if (ad_16 < g_minlot_376) ad_16 = g_minlot_376; + else + if (ad_16 > g_maxlot_368) ad_16 = g_maxlot_368; + if (AccountFreeMarginCheck(g_symbol_416, l_cmd_32, ad_16) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { + if (WriteLog) Print("OpenOrder: you don\'t have free margin."); + return (-1); + } + if (l_cmd_32 == OP_BUY) l_color_36 = ColorBuy; + else l_color_36 = ColorSell; + RefreshRates(); + double ld_40 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits); + double ld_48 = NormalizeDouble(Ask, Digits); + double ld_56 = NormalizeDouble(Bid, Digits); + switch (a_cmd_0) { + case OP_BUY: + a_price_24 = ld_48; + break; + case OP_SELL: + a_price_24 = ld_56; + break; + case OP_BUYLIMIT: + if (a_price_24 >= ld_48) { + a_price_24 = ld_48; + a_cmd_0 = 0; + } else + if (NormalizeDouble(ld_48 - a_price_24, Digits) < ld_40) return (-1); + break; + case OP_SELLLIMIT: + if (a_price_24 <= ld_56) { + a_price_24 = ld_56; + a_cmd_0 = 1; + } else + if (NormalizeDouble(a_price_24 - ld_56, Digits) < ld_40) return (-1); + break; + case OP_BUYSTOP: + if (a_price_24 <= ld_48) { + a_price_24 = ld_48; + a_cmd_0 = 0; + } else + if (NormalizeDouble(a_price_24 - ld_48, Digits) < ld_40) return (-1); + break; + case OP_SELLSTOP: + if (a_price_24 >= ld_56) { + a_price_24 = ld_56; + a_cmd_0 = 1; + } else + if (NormalizeDouble(ld_56 - a_price_24, Digits) < ld_40) return (-1); + break; + default: + return (-1); + } + int li_68 = gi_320; + while (li_68 > 0) { + while (!IsTradeAllowed()) Sleep(1000); + l_ticket_72 = OrderSend(g_symbol_416, a_cmd_0, ad_16, a_price_24, g_slippage_356, 0, 0, a_comment_8, a_magic_4, 0, l_color_36); + Sleep(MathRand() / 1000); + if (l_ticket_72 < 0) { + l_error_76 = GetLastError(); + if (WriteLog) { + Print("OpenOrder: OrderSend(", OrderTypeToStr(a_cmd_0), ") error = ", ErrorDescription(l_error_76)); + Print("OpenOrder: order ", g_symbol_416, " ", OrderTypeToStr(a_cmd_0), " lot = ", DoubleToStr(ad_16, 8), " op = ", DoubleToStr(a_price_24, 8), " slippage = ", g_slippage_356); + } + if (l_error_76 != 136/* OFF_QUOTES */) break; + if (!(gi_316)) break; + Sleep(6000); + RefreshRates(); + if (a_cmd_0 == OP_BUY) ld_80 = NormalizeDouble(Ask, Digits); + else ld_80 = NormalizeDouble(Bid, Digits); + if (NormalizeDouble(MathAbs((ld_80 - a_price_24) / gd_360), 0) > gi_324) break; + a_price_24 = ld_80; + li_68--; + if (li_68 > 0) + if (WriteLog) Print("... Possible to open order."); + ad_16 = NormalizeDouble(ad_16 / 2.0, gi_348); + if (ad_16 < g_minlot_376) ad_16 = g_minlot_376; + } else { + if (OrderSelect(l_ticket_72, SELECT_BY_TICKET)) a_price_24 = OrderOpenPrice(); + if (SendEmail) { + SendMail(gs_336, StringConcatenate("GPS Forex Robot trade Information\nCurrency Pair: ", StringSubstr(g_symbol_416, 0, 6), + "\nTime: ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS), + "\nOrder Type: ", OrderTypeToStr(a_cmd_0), + "\nPrice: ", DoubleToStr(a_price_24, Digits), + "\nLot size: ", DoubleToStr(ad_16, gi_348), + "\nEvent: Trade Opened", + "\n\nCurrent Balance: ", DoubleToStr(AccountBalance(), 2), " ", gs_424, + "\nCurrent Equity: ", DoubleToStr(AccountEquity(), 2), " ", gs_424)); + } + if (!(SoundAlert)) break; + PlaySound(SoundFileAtOpen); + break; + } + } + return (l_ticket_72); +} + +int CloseOrder(int a_ticket_0, double a_lots_4, int ai_12, int a_slippage_16) { + color l_color_20; + double l_price_40; + bool l_ord_close_48; + int l_error_52; + bool li_56; + if (ai_12 == 0) l_color_20 = ColorBuy; + else l_color_20 = ColorSell; + int l_count_24 = 0; + int l_count_28 = 0; + int l_count_32 = 0; + int l_count_36 = 0; + while (true) { + while (!IsTradeAllowed()) Sleep(1000); + RefreshRates(); + if (ai_12 == 0) l_price_40 = NormalizeDouble(Bid, Digits); + else l_price_40 = NormalizeDouble(Ask, Digits); + l_ord_close_48 = OrderClose(a_ticket_0, a_lots_4, l_price_40, a_slippage_16, l_color_20); + if (!l_ord_close_48) { + l_error_52 = GetLastError(); + if (WriteLog) Print(StringConcatenate("OrderClose(", OrderTypeToStr(ai_12), ",", DoubleToStr(a_ticket_0, 0), ") error = ", ErrorDescription(l_error_52))); + li_56 = FALSE; + switch (l_error_52) { + case 0/* NO_ERROR */: + Sleep(10000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 1/* NO_RESULT */: break; + case 2/* COMMON_ERROR */: break; + case 3/* INVALID_TRADE_PARAMETERS */: break; + case 4/* SERVER_BUSY */: break; + case 5/* OLD_VERSION */: break; + case 6/* NO_CONNECTION */: + Sleep(10000); + if (IsConnected()) li_56 = TRUE; + break; + case 7/* NOT_ENOUGH_RIGHTS */: break; + case 8/* TOO_FREQUENT_REQUESTS */: break; + case 9/* MALFUNCTIONAL_TRADE */: break; + case 64/* ACCOUNT_DISABLED */: break; + case 65/* INVALID_ACCOUNT */: break; + case 128/* TRADE_TIMEOUT */: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 129/* INVALID_PRICE */: + Sleep(6000); + l_count_24++; + if (l_count_24 <= 3) li_56 = TRUE; + break; + case 130/* INVALID_STOPS */: + Sleep(6000); + l_count_28++; + if (l_count_28 <= 3) li_56 = TRUE; + break; + case 131/* INVALID_TRADE_VOLUME */: break; + case 132/* MARKET_CLOSED */: break; + case 133/* TRADE_DISABLED */: break; + case 134/* NOT_ENOUGH_MONEY */: break; + case 135/* PRICE_CHANGED */: + li_56 = TRUE; + break; + case 136/* OFF_QUOTES */: + Sleep(6000); + li_56 = TRUE; + break; + case 137/* BROKER_BUSY */: + Sleep(20000); + l_count_32++; + if (l_count_32 <= 3) li_56 = TRUE; + break; + case 138/* REQUOTE */: + l_count_36++; + if (l_count_36 <= 3) li_56 = TRUE; + break; + case 139/* ORDER_LOCKED */: break; + case 140/* LONG_POSITIONS_ONLY_ALLOWED */: break; + case 141/* TOO_MANY_REQUESTS */: break; + case 142: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 143: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 144: break; + case 145/* TRADE_MODIFY_DENIED */: + Sleep(20000); + li_56 = TRUE; + break; + case 146/* TRADE_CONTEXT_BUSY */: + while (IsTradeContextBusy()) Sleep(1000); + li_56 = TRUE; + break; + case 147/* ERR_TRADE_EXPIRATION_DENIED */: break; + case 148/* ERR_TRADE_TOO_MANY_ORDERS */: break; + case 149/* ? */: break; + case 150: break; + case 4000/* NO_MQLERROR */: + Sleep(10000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + case 4051/* INVALID_FUNCTION_PARAMETER_VALUE */: break; + case 4062/* STRING_PARAMETER_EXPECTED */: break; + case 4063/* INTEGER_PARAMETER_EXPECTED */: break; + case 4064/* DOUBLE_PARAMETER_EXPECTED */: break; + case 4105/* NO_ORDER_SELECTED */: break; + case 4106/* UNKNOWN_SYMBOL */: break; + case 4107/* INVALID_PRICE_PARAM */: break; + case 4108/* INVALID_TICKET */: break; + case 4109/* TRADE_NOT_ALLOWED */: break; + case 4110/* LONGS__NOT_ALLOWED */: break; + case 4111/* SHORTS_NOT_ALLOWED */: break; + } + if (!(li_56)) break; + continue; + } + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) l_price_40 = OrderClosePrice(); + if (SendEmail) { + SendMail(gs_336, StringConcatenate("GPS Forex Robot trade Information\nCurrency Pair: ", StringSubstr(g_symbol_416, 0, 6), + "\nTime: ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS), + "\nOrder Type: ", OrderTypeToStr(ai_12), + "\nPrice: ", DoubleToStr(l_price_40, Digits), + "\nLot size: ", DoubleToStr(a_lots_4, gi_348), + "\nEvent: Trade Closed", + "\n\nCurrent Balance: ", DoubleToStr(AccountBalance(), 2), " ", gs_424, + "\nCurrent Equity: ", DoubleToStr(AccountEquity(), 2), " ", gs_424)); + } + if (!(SoundAlert)) break; + PlaySound(SoundFileAtClose); + break; + } + return (l_ord_close_48); +} + +int HaveOrdersInDay(int a_cmd_0, int a_magic_4, int ai_8) { + int l_cmd_24; + int l_count_12 = 0; + int li_16 = OrdersTotal() - 1; + for (int l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20--) { + if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("HaveOrdersInDay: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_4) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_24 = OrderType(); + if (a_cmd_0 == -4) { + if (l_cmd_24 % 2 != 0) continue; + } else { + if (a_cmd_0 == -5) { + if (l_cmd_24 % 2 != 1) continue; + } else { + if (a_cmd_0 == -3) { + if (l_cmd_24 <= OP_SELL) continue; + } else { + if (a_cmd_0 == -2) { + if (l_cmd_24 > OP_SELL) continue; + } else { + if (a_cmd_0 >= OP_BUY) + if (l_cmd_24 != a_cmd_0) continue; + } + } + } + } + if (OrderOpenTime() >= ai_8) l_count_12++; + } + } + } + } + if (l_count_12 == 0) { + li_16 = OrdersHistoryTotal() - 1; + for (l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20--) { + if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY)) { + if (WriteLog) Print(StringConcatenate("HaveOrdersInDay: OrderSelect_2() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_4) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_24 = OrderType(); + if (a_cmd_0 == -4) { + if (l_cmd_24 % 2 != 0) continue; + } else { + if (a_cmd_0 == -5) { + if (l_cmd_24 % 2 != 1) continue; + } else { + if (a_cmd_0 == -3) { + if (l_cmd_24 <= OP_SELL) continue; + } else { + if (a_cmd_0 == -2) { + if (l_cmd_24 > OP_SELL) continue; + } else { + if (a_cmd_0 >= OP_BUY) + if (l_cmd_24 != a_cmd_0) continue; + } + } + } + } + if (OrderOpenTime() < ai_8) break; + l_count_12++; + } + } + } + } + } + return (l_count_12); +} + +void WatchReverseAfterSL(int ai_0) { + int l_magic_12; + int l_datetime_16; + double ld_20; + int li_4 = OrdersHistoryTotal() - 1; + for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8--) { + if (!OrderSelect(l_pos_8, SELECT_BY_POS, MODE_HISTORY)) { + if (WriteLog) Print(StringConcatenate("WatchReverseAfterSL: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + l_magic_12 = OrderMagicNumber(); + if (l_magic_12 == gia_484[ai_0]) break; + if (l_magic_12 == gia_460[ai_0]) { + if (OrderSymbol() == g_symbol_416) { + if (OrderProfit() >= 0.0) break; + l_datetime_16 = OrderCloseTime(); + if (TimeHour(l_datetime_16) != Hour()) break; + if (TimeMinute(l_datetime_16) != Minute()) break; + if (TimeDay(l_datetime_16) != Day()) break; + if (TimeMonth(l_datetime_16) != Month()) break; + ld_20 = NormalizeDouble(OrderLots() * gda_480[ai_0], gi_348); + if (ld_20 > MaxLots) ld_20 = MaxLots; + if (ld_20 < g_minlot_376) ld_20 = g_minlot_376; + if (ld_20 > g_maxlot_368) ld_20 = g_maxlot_368; + OpenOrder(MathAbs(gia_464[ai_0] - 1), gia_484[ai_0], ExpertComment, ld_20); + return; + } + } + } + } +} + +bool AutoGMTOffset(int &ai_0) { + int li_4 = GetGMT(); + if (li_4 < 0) return (FALSE); + int li_8 = TimeCurrent() - li_4; + ai_0 = MathFloor((li_8 + 1800) / 3600); + return (TRUE); +} + +int SetCommentPrint(string as_0, string as_8 = "") { + Comment("\n\n" + "GPS FOREX ROBOT" + + "\n" + + "www.gpsforexrobot.com" + + "\n\n" + as_0); + if (as_8 != "") { + if (as_8 == "comment") Print(as_0); + else Print(as_8); + } + return (1); +} + +int PrintInformation() { + string ls_0; + if (gi_496 == 1) { + if (IsDemo()) ls_0 = "Demo"; + else ls_0 = "Real"; + SetCommentPrint("AUTHENTICATION STATUS: " + + "\n" + + gs_520 + + "\n" + + "---------------------------------------------------" + + "\n" + + "GENERAL INFORMATION:" + + "\n" + + "Broker Company: " + AccountCompany() + + "\n" + + "Terminal Company: " + TerminalCompany() + + "\n" + + "Server Name: " + AccountServer() + + "\n" + + "Current Server Time: " + TimeToStr(TimeCurrent(), TIME_SECONDS) + + "\n" + + "---------------------------------------------------" + + "\n" + + "ACCOUNT INFORMATION:" + + "\n" + + "Account Name: " + AccountName() + + "\n" + + "Account Number: " + AccountNumber() + + "\n" + + "Account Type: " + ls_0 + + "\n" + + "Account Leverage: 1:" + DoubleToStr(AccountLeverage(), 0) + + "\n" + + "Account Balance: " + DoubleToStr(AccountBalance(), 2) + + "\n" + + "Account Equity: " + DoubleToStr(AccountEquity(), 2) + + "\n" + + "Account Floating P/L: " + DoubleToStr(AccountProfit(), 2) + + "\n" + + "Account Currency: " + AccountCurrency() + + "\n" + + "---------------------------------------------------" + + "\n" + + "ADDITIONAL INFORMATION:" + + "\n" + + "Current Spread: " + DoubleToStr(gd_384, Digits - gi_352) + + "\n" + + "Maximum Spread: " + DoubleToStr(gd_392, Digits - gi_352) + + "\n" + + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 2) + + "\n" + + "Used Margin: " + DoubleToStr(AccountMargin(), 2) + + "\n" + + "---------------------------------------------------" + + "\n" + + "GMT SETTINGS:" + + "\n" + + "GMT Offset: " + gs_512); + } else { + if (!gi_536) { + SetCommentPrint("AUTHENTICATION STATUS: " + + "\n" + + gs_520, gs_528); + gi_536 = TRUE; + } + } + return (0); +} + +int SetVariables() { + gda_508[16] = 1.00000000; + gda_508[17] = 2.00000000; + gda_508[18] = 86.50000000; + gda_508[19] = 3.00000000; + gda_508[20] = 23.00000000; + gda_508[21] = 0.00000000; + gda_508[22] = 0.00000000; + gda_508[23] = 0.00000000; + gda_508[24] = 1.00000000; + gda_508[25] = 1.00000000; + gda_508[26] = 1.00000000; + gda_508[27] = 1.00000000; + gda_508[28] = 0.00000000; + gda_508[29] = -2.00000000; + gda_508[30] = 1.00000000; + gda_508[31] = 220.00000000; + gda_508[32] = 14.60000000; + gda_508[33] = 6.00000000; + + if (gda_508[16] == 1.0) gi_160 = TRUE; + else gi_160 = FALSE; + gi_164 = gda_508[17]; + gd_172 = gda_508[18]; + gd_180 = gda_508[19]; + gi_188 = gda_508[20]; + gi_192 = gda_508[21]; + if (gda_508[22] == 1.0) gi_196 = TRUE; + else gi_196 = FALSE; + if (gda_508[23] == 1.0) gi_200 = TRUE; + else gi_200 = FALSE; + if (GMTOffset <= 0) { + if (gda_508[24] == 1.0) gi_200 = TRUE; + else gi_200 = FALSE; + } + if (gda_508[25] == 1.0) gi_204 = TRUE; + else gi_204 = FALSE; + if (gda_508[26] == 1.0) gi_208 = TRUE; + else gi_208 = FALSE; + if (gda_508[27] == 1.0) gi_212 = TRUE; + else gi_212 = FALSE; + if (GMTOffset <= 0) { + if (gda_508[28] == 1.0) gi_212 = TRUE; + else gi_212 = FALSE; + } + gi_216 = gda_508[29]; + if (gda_508[30] == 1.0) gi_220 = TRUE; + else gi_220 = FALSE; + gd_232 = gda_508[31]; + gd_240 = gda_508[32]; + gd_248 = gda_508[33]; + gba_432[0] = gi_168; + gda_436[0] = NormalizeDouble((-1.0 * gd_172) * gd_360, Digits); + gda_440[0] = NormalizeDouble(gd_180 * gd_360, Digits); + gia_444[0] = GetGMTCorrection(gi_188); + gia_448[0] = gi_192; + gba_452[0][0] = gi_196; + gba_452[0][1] = gi_200; + gba_452[0][2] = gi_204; + gba_452[0][3] = gi_208; + gba_452[0][4] = gi_212; + gia_456[0] = gi_216; + gia_464[0] = gi_220; + gia_460[0] = gi_224; + gba_468[0] = gi_228; + gda_472[0] = NormalizeDouble((-1.0 * gd_232) * gd_360, Digits); + gda_476[0] = NormalizeDouble(gd_240 * gd_360, Digits); + gda_480[0] = gd_248; + gia_484[0] = gi_256; + return (1); +} + +int Authentication() { +/* + gi_496 = GPSForexRobot(gda_508, EMail, CBReceipt, IsDemo(), AccountNumber()); + if (gi_496 == -1) { + gs_520 = "Authentication Failed [Invalid Internet Connection]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Internet Connection] [Trades are not available]"; + return (-1); + } + if (gi_496 == -2) { + gs_520 = "Authentication Failed [Invalid Internet Connection]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Internet Connection] [Trades are not available]"; + return (-2); + } + if (gi_496 == -3) { + gs_520 = "Authentication Failed [Wrong E-Mail or CBReceipt]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Wrong E-Mail or CBReceipt] [Trades are not available]"; + return (-2); + } + if (gi_496 == -4) { + gs_520 = "Authentication Failed [Invalid Real Money Account Number]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Real Money Account Number] [Trades are not available]"; + return (-2); + } + if (*/gi_496 = 1;/*) {*/ + SetVariables(); + gs_520 = "Authenticated [Trades are available]\nThank you for joining the GPS Robot Team!"; + gs_528 = "Authenticatd: [Trades are available]"; + return (1); +/* + } + return (0); +*/ +} + +int Rand(int ai_0) { + MathSrand(TimeLocal()); + return (MathRand() % ai_0); +} \ No newline at end of file diff --git a/GPSForexRobotEURUSD_edu.mq4 b/GPSForexRobotEURUSD_edu.mq4 new file mode 100644 index 0000000..022f544 --- /dev/null +++ b/GPSForexRobotEURUSD_edu.mq4 @@ -0,0 +1,1200 @@ +/* + Generated by EX4-TO-MQ4 decompiler V4.0.224.1 [] + Website: http://purebeam.biz + E-mail : purebeam@gmail.com +*/ +#property copyright "Copyright © 2010, GPSForexRobot.com" +#property link "http://gpsforexrobot.com/" + +#import "GPSForexRobotEURUSD.dll" +// int GPSForexRobot(double& a0[], string a1, string a2, int a3, int a4); + int GetGMT(); +#import + +extern string GPS_Forex_Robot_EURUSD = " "; +/* +extern string ____Authentication________ = "---------------------------------------------"; +extern string EMail = ""; +extern string CBReceipt = ""; +*/ +extern string ____Size_of_lots________ = "---------------------------------------------"; +extern bool UseMM = FALSE; +extern double Lots = 0.01; +extern double LotsRiskReductor = 10.0; +extern double MaxLots = 1000.0; +extern string ____General_Options_____ = "---------------------------------------------"; +extern bool AutoGMTOffset = TRUE; +extern int GMTOffset = 1; +bool gi_160 = FALSE; +int gi_164 = 2; +bool gi_168 = TRUE; +double gd_172 = 64.0; +double gd_180 = 8.0; +int gi_188 = 11; +int gi_192 = 0; +bool gi_196 = TRUE; +bool gi_200 = FALSE; +bool gi_204 = TRUE; +bool gi_208 = FALSE; +bool gi_212 = TRUE; +int gi_216 = -14; +int gi_220 = 0; +int gi_224 = 20100106; +bool gi_228 = TRUE; +double gd_232 = 53.0; +double gd_240 = 14.0; +double gd_248 = 3.0; +int gi_256 = 20100126; +extern string ____Others______________ = "---------------------------------------------"; +extern string ExpertComment = "GPS Forex Robot"; +extern color ColorBuy = Blue; +extern color ColorSell = Red; +extern bool SendEmail = FALSE; +extern bool SoundAlert = FALSE; +extern string SoundFileAtOpen = "alert.wav"; +extern string SoundFileAtClose = "alert.wav"; +extern bool WriteLog = FALSE; +extern bool WriteDebugLog = FALSE; +bool gi_316 = TRUE; +int gi_320 = 2; +int gi_324 = 1; +string gs_unused_328 = "New Trade Information"; +string gs_336 = "New Trade Information"; +int g_bool_344; +int gi_348; +int gi_352; +int g_slippage_356; +double gd_360; +double g_maxlot_368; +double g_minlot_376; +double gd_384; +double gd_392; +double g_lotstep_400; +double gd_408; +string g_symbol_416; +string gs_424; +bool gba_432[1]; +double gda_436[1]; +double gda_440[1]; +int gia_444[1]; +int gia_448[1]; +bool gba_452[1][5]; +int gia_456[1]; +int gia_460[1]; +int gia_464[1]; +bool gba_468[1]; +double gda_472[1]; +double gda_476[1]; +double gda_480[1]; +int gia_484[1]; +bool gi_488; +bool gi_492; +int gi_496 = 0; +bool gi_500 = FALSE; +int gi_504 = 0; +double gda_508[52] = {0}; +string gs_512 = ""; +string gs_520 = ""; +string gs_528 = ""; +bool gi_536 = FALSE; + +int init() { + gi_492 = TRUE; + if (!IsDllsAllowed()) { + SetCommentPrint("WARNING: Set Parameter \"AllowDLL Imports\" ON in menu Tools -> Options -> ExpertAdvisors.", "comment"); + gi_492 = FALSE; + return (0); + } + if (StringSubstr(Symbol(), 0, 6) != "EURUSD") { + SetCommentPrint("WARNING: Use GPS Forex Robot EURUSD only on EURUSD pair.", "comment"); + gi_492 = FALSE; + return (0); + } + if (IsTesting()) { + if (AutoGMTOffset) { + SetCommentPrint("WARNING: Automatic GMT offset calculation works only on live/demo trading " + "and should be set as FALSE for backtests - strategy testing.", "comment"); + gi_492 = FALSE; + return (0); + } + } + if (WriteDebugLog) { + WriteLog = TRUE; + Print("*************************** Initialization ***************************"); + } + g_symbol_416 = Symbol(); + g_maxlot_368 = MarketInfo(g_symbol_416, MODE_MAXLOT); + g_minlot_376 = MarketInfo(g_symbol_416, MODE_MINLOT); + g_lotstep_400 = MarketInfo(g_symbol_416, MODE_LOTSTEP); + if (g_lotstep_400 == 0.01) gi_348 = 2; + else { + if (g_lotstep_400 == 0.1) gi_348 = 1; + else { + if (g_lotstep_400 == 1.0) gi_348 = 0; + else { + if (g_lotstep_400 == 0.001) gi_348 = 3; + else gi_348 = 4; + } + } + } + double l_leverage_0 = AccountLeverage(); + gd_408 = NormalizeDouble(LotsRiskReductor * (100 / l_leverage_0), 2); + gs_424 = AccountCurrency(); + g_bool_344 = IsTesting(); + if (Digits < 4) { + gd_360 = 0.01; + gi_352 = 2; + } else { + gd_360 = 0.0001; + gi_352 = 4; + } + int li_8 = MathPow(10, Digits - gi_352); + g_slippage_356 = gi_164 * li_8; + gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits - gi_352); + gd_392 = gd_384; + if (IsTesting()) { + Authentication(); + if (gi_496 != 1) { + PrintInformation(); + gi_492 = FALSE; + return (0); + } + } + gi_488 = TRUE; + return (0); +} + +int deinit() { + Comment(""); + if (WriteDebugLog) Print("*************************** Deinitialization ***************************"); + return (0); +} + +int start() { + double ld_24; + if (!gi_492) return (0); + int l_datetime_0 = TimeCurrent(); + if (!IsTesting()) { + if (gi_488) { + if (AutoGMTOffset) { + if (AutoGMTOffset(GMTOffset)) gs_512 = GMTOffset + " (automatic)"; + else gs_512 = "Error"; + } else gs_512 = GMTOffset + " (manual)"; + Authentication(); + gi_500 = TRUE; + gi_504 = l_datetime_0; + gi_488 = FALSE; + } + if (gi_500 == TRUE && gi_504 < l_datetime_0 - 60) { + gi_500 = FALSE; + gi_504 = l_datetime_0 + 60 * (780 - Rand(120)); + } + if (gi_500 == FALSE && l_datetime_0 >= gi_504) { + gi_500 = TRUE; + Authentication(); + } + PrintInformation(); + } + if (gi_496 != 1) return (0); + gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits - gi_352); + if (gd_384 > gd_392) gd_392 = gd_384; + int l_datetime_4 = TimeCurrent(); + int li_8 = l_datetime_4 - 3600 * GMTOffset; + int l_day_of_week_12 = TimeDayOfWeek(l_datetime_4); + int l_datetime_16 = iTime(NULL, PERIOD_D1, 0); + for (int l_index_20 = 0; l_index_20 < 1; l_index_20++) { + if (gba_432[l_index_20]) { + if (!gi_160) SetOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]); + WatchOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]); + if (gba_468[l_index_20]) { + if (!gi_160) SetOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]); + WatchOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]); + if (HaveOrdersInDay(-2, gia_484[l_index_20], l_datetime_16) == 0) WatchReverseAfterSL(l_index_20); + } + if (l_day_of_week_12 <= 0 || l_day_of_week_12 > 5) continue; + if ((gba_452[l_index_20][l_day_of_week_12 - 1])) { + if (gia_444[l_index_20] != TimeHour(l_datetime_4) || gia_448[l_index_20] != TimeMinute(l_datetime_4)) continue; + if (HaveOrdersInDay(-2, gia_460[l_index_20], l_datetime_16) <= 0) { + ld_24 = LotsOptimized(gia_464[l_index_20]); + if (gia_456[l_index_20] >= 0) + if (l_day_of_week_12 == gia_456[l_index_20]) ld_24 = NormalizeDouble(2.0 * ld_24, gi_348); + OpenOrder(gia_464[l_index_20], gia_460[l_index_20], ExpertComment, ld_24); + } + } + } + } + return (0); +} + +string ErrorDescription(int ai_0) { + string ls_ret_8; + switch (ai_0) { + case 0: + case 1: + ls_ret_8 = "no error"; + break; + case 2: + ls_ret_8 = "common error"; + break; + case 3: + ls_ret_8 = "invalid trade parameters"; + break; + case 4: + ls_ret_8 = "trade server is busy"; + break; + case 5: + ls_ret_8 = "old version of the client terminal"; + break; + case 6: + ls_ret_8 = "no connection with trade server"; + break; + case 7: + ls_ret_8 = "not enough rights"; + break; + case 8: + ls_ret_8 = "too frequent requests"; + break; + case 9: + ls_ret_8 = "malfunctional trade operation (never returned error)"; + break; + case 64: + ls_ret_8 = "account disabled"; + break; + case 65: + ls_ret_8 = "invalid account"; + break; + case 128: + ls_ret_8 = "trade timeout"; + break; + case 129: + ls_ret_8 = "invalid price"; + break; + case 130: + ls_ret_8 = "invalid stops"; + break; + case 131: + ls_ret_8 = "invalid trade volume"; + break; + case 132: + ls_ret_8 = "market is closed"; + break; + case 133: + ls_ret_8 = "trade is disabled"; + break; + case 134: + ls_ret_8 = "not enough money"; + break; + case 135: + ls_ret_8 = "price changed"; + break; + case 136: + ls_ret_8 = "off quotes"; + break; + case 137: + ls_ret_8 = "broker is busy (never returned error)"; + break; + case 138: + ls_ret_8 = "requote"; + break; + case 139: + ls_ret_8 = "order is locked"; + break; + case 140: + ls_ret_8 = "long positions only allowed"; + break; + case 141: + ls_ret_8 = "too many requests"; + break; + case 145: + ls_ret_8 = "modification denied because order too close to market"; + break; + case 146: + ls_ret_8 = "trade context is busy"; + break; + case 147: + ls_ret_8 = "expirations are denied by broker"; + break; + case 148: + ls_ret_8 = "amount of open and pending orders has reached the limit"; + break; + case 149: + ls_ret_8 = "hedging is prohibited"; + break; + case 150: + ls_ret_8 = "prohibited by FIFO rules"; + break; + case 4000: + ls_ret_8 = "no error (never generated code)"; + break; + case 4001: + ls_ret_8 = "wrong function pointer"; + break; + case 4002: + ls_ret_8 = "array index is out of range"; + break; + case 4003: + ls_ret_8 = "no memory for function call stack"; + break; + case 4004: + ls_ret_8 = "recursive stack overflow"; + break; + case 4005: + ls_ret_8 = "not enough stack for parameter"; + break; + case 4006: + ls_ret_8 = "no memory for parameter string"; + break; + case 4007: + ls_ret_8 = "no memory for temp string"; + break; + case 4008: + ls_ret_8 = "not initialized string"; + break; + case 4009: + ls_ret_8 = "not initialized string in array"; + break; + case 4010: + ls_ret_8 = "no memory for array\' string"; + break; + case 4011: + ls_ret_8 = "too long string"; + break; + case 4012: + ls_ret_8 = "remainder from zero divide"; + break; + case 4013: + ls_ret_8 = "zero divide"; + break; + case 4014: + ls_ret_8 = "unknown command"; + break; + case 4015: + ls_ret_8 = "wrong jump (never generated error)"; + break; + case 4016: + ls_ret_8 = "not initialized array"; + break; + case 4017: + ls_ret_8 = "dll calls are not allowed"; + break; + case 4018: + ls_ret_8 = "cannot load library"; + break; + case 4019: + ls_ret_8 = "cannot call function"; + break; + case 4020: + ls_ret_8 = "expert function calls are not allowed"; + break; + case 4021: + ls_ret_8 = "not enough memory for temp string returned from function"; + break; + case 4022: + ls_ret_8 = "system is busy (never generated error)"; + break; + case 4050: + ls_ret_8 = "invalid function parameters count"; + break; + case 4051: + ls_ret_8 = "invalid function parameter value"; + break; + case 4052: + ls_ret_8 = "string function internal error"; + break; + case 4053: + ls_ret_8 = "some array error"; + break; + case 4054: + ls_ret_8 = "incorrect series array using"; + break; + case 4055: + ls_ret_8 = "custom indicator error"; + break; + case 4056: + ls_ret_8 = "arrays are incompatible"; + break; + case 4057: + ls_ret_8 = "global variables processing error"; + break; + case 4058: + ls_ret_8 = "global variable not found"; + break; + case 4059: + ls_ret_8 = "function is not allowed in testing mode"; + break; + case 4060: + ls_ret_8 = "function is not confirmed"; + break; + case 4061: + ls_ret_8 = "send mail error"; + break; + case 4062: + ls_ret_8 = "string parameter expected"; + break; + case 4063: + ls_ret_8 = "integer parameter expected"; + break; + case 4064: + ls_ret_8 = "double parameter expected"; + break; + case 4065: + ls_ret_8 = "array as parameter expected"; + break; + case 4066: + ls_ret_8 = "requested history data in update state"; + break; + case 4099: + ls_ret_8 = "end of file"; + break; + case 4100: + ls_ret_8 = "some file error"; + break; + case 4101: + ls_ret_8 = "wrong file name"; + break; + case 4102: + ls_ret_8 = "too many opened files"; + break; + case 4103: + ls_ret_8 = "cannot open file"; + break; + case 4104: + ls_ret_8 = "incompatible access to a file"; + break; + case 4105: + ls_ret_8 = "no order selected"; + break; + case 4106: + ls_ret_8 = "unknown symbol"; + break; + case 4107: + ls_ret_8 = "invalid price parameter for trade function"; + break; + case 4108: + ls_ret_8 = "invalid ticket"; + break; + case 4109: + ls_ret_8 = "trade is not allowed in the expert properties"; + break; + case 4110: + ls_ret_8 = "longs are not allowed in the expert properties"; + break; + case 4111: + ls_ret_8 = "shorts are not allowed in the expert properties"; + break; + case 4200: + ls_ret_8 = "object is already exist"; + break; + case 4201: + ls_ret_8 = "unknown object property"; + break; + case 4202: + ls_ret_8 = "object is not exist"; + break; + case 4203: + ls_ret_8 = "unknown object type"; + break; + case 4204: + ls_ret_8 = "no object name"; + break; + case 4205: + ls_ret_8 = "object coordinates error"; + break; + case 4206: + ls_ret_8 = "no specified subwindow"; + break; + default: + ls_ret_8 = "unknown error"; + } + return (ls_ret_8); +} + +string OrderTypeToStr(int ai_0) { + string ls_ret_8; + switch (ai_0) { + case 0: + ls_ret_8 = "Buy"; + break; + case 1: + ls_ret_8 = "Sell"; + break; + case 2: + ls_ret_8 = "BuyLimit"; + break; + case 3: + ls_ret_8 = "SellLimit"; + break; + case 4: + ls_ret_8 = "BuyStop"; + break; + case 5: + ls_ret_8 = "SellStop"; + break; + default: + ls_ret_8 = "Unknown"; + } + return (ls_ret_8); +} + +int GetGMTCorrection(int ai_0) { + ai_0 += GMTOffset; + while (true) { + if (ai_0 >= 24) { + ai_0 -= 24; + continue; + } + if (ai_0 >= 0) break; + ai_0 += 24; + } + return (ai_0); +} + +void SetOrderLevels(double ad_0, double ad_8, int a_magic_16) { + int l_cmd_36; + double ld_40; + double l_price_48; + double ld_56; + double ld_64; + bool li_72; + double l_price_76; + bool li_84; + double l_price_88; + bool l_bool_96; + double ld_20 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits); + int li_28 = OrdersTotal() - 1; + for (int l_pos_32 = li_28; l_pos_32 >= 0; l_pos_32--) { + if (!OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("SetOrderLevels: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_16) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_36 = OrderType(); + ld_40 = NormalizeDouble(OrderClosePrice(), Digits); + l_price_48 = NormalizeDouble(OrderOpenPrice(), Digits); + if (l_cmd_36 > OP_SELL) + if (NormalizeDouble(MathAbs(l_price_48 - ld_40), Digits) <= ld_20) continue; + ld_56 = NormalizeDouble(OrderStopLoss(), Digits); + ld_64 = NormalizeDouble(OrderTakeProfit(), Digits); + li_72 = FALSE; + if (ld_56 == 0.0) { + if (ad_8 < 0.0) { + if (l_cmd_36 % 2 == 0) { + l_price_76 = NormalizeDouble(l_price_48 + ad_8, Digits); + if (NormalizeDouble(ld_40 - l_price_76, Digits) > ld_20) li_72 = TRUE; + else l_price_76 = ld_56; + } else { + l_price_76 = NormalizeDouble(l_price_48 - ad_8, Digits); + if (NormalizeDouble(l_price_76 - ld_40, Digits) > ld_20) li_72 = TRUE; + else l_price_76 = ld_56; + } + } else l_price_76 = ld_56; + } else l_price_76 = ld_56; + li_84 = FALSE; + if (ld_64 == 0.0) { + if (ad_0 > 0.0) { + if (l_cmd_36 % 2 == 0) { + l_price_88 = NormalizeDouble(l_price_48 + ad_0, Digits); + if (NormalizeDouble(l_price_88 - ld_40, Digits) > ld_20) li_84 = TRUE; + else l_price_88 = ld_64; + } else { + l_price_88 = NormalizeDouble(l_price_48 - ad_0, Digits); + if (NormalizeDouble(ld_40 - l_price_88, Digits) > ld_20) li_84 = TRUE; + else l_price_88 = ld_64; + } + } else l_price_88 = ld_64; + } else l_price_88 = ld_64; + if (li_72 || li_84) { + while (!IsTradeAllowed()) Sleep(1000); + l_bool_96 = OrderModify(OrderTicket(), l_price_48, l_price_76, l_price_88, 0, CLR_NONE); + if (!l_bool_96) + if (WriteLog) Print(StringConcatenate("SetOrderLevels: OrderModify(", OrderTypeToStr(OrderType()), ") error = ", ErrorDescription(GetLastError()))); + } + } + } + } + } +} + +void WatchOrderLevels(double ad_0, double ad_8, int a_magic_16) { + double ld_28; + double ld_36; + double ld_44; + if (ad_0 <= 0.0 && ad_8 >= 0.0) return; + int li_20 = OrdersTotal() - 1; + for (int l_pos_24 = li_20; l_pos_24 >= 0; l_pos_24--) { + if (!OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("WatchOrderLevels: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_16) { + if (OrderType() <= OP_SELL) { + if (OrderSymbol() == g_symbol_416) { + ld_28 = NormalizeDouble(OrderClosePrice(), Digits); + ld_36 = NormalizeDouble(OrderOpenPrice(), Digits); + if (OrderType() == OP_BUY) { + ld_44 = NormalizeDouble(ld_28 - ld_36, Digits); + if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) { + if (WriteLog) Print("WatchOrderLevels: level for close BUY"); + CloseOrder(OrderTicket(), OrderLots(), 0, g_slippage_356); + } + } else { + ld_44 = NormalizeDouble(ld_36 - ld_28, Digits); + if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) { + if (WriteLog) Print("WatchOrderLevels: level for close SELL"); + CloseOrder(OrderTicket(), OrderLots(), 1, g_slippage_356); + } + } + } + } + } + } + } +} + +double LotsOptimized(int ai_unused_0) { + double ld_ret_4; + double ld_12; + double ld_20; + if (!UseMM) ld_ret_4 = Lots; + else { + ld_12 = AccountFreeMargin() * gd_408 / 100.0; + ld_20 = MarketInfo(g_symbol_416, MODE_MARGINREQUIRED) * g_lotstep_400; + ld_ret_4 = NormalizeDouble(MathFloor(ld_12 / ld_20) * g_lotstep_400, gi_348); + } + if (ld_ret_4 > MaxLots) ld_ret_4 = MaxLots; + if (ld_ret_4 < g_minlot_376) ld_ret_4 = g_minlot_376; + if (ld_ret_4 > g_maxlot_368) ld_ret_4 = g_maxlot_368; + return (ld_ret_4); +} + +int OpenOrder(int a_cmd_0, int a_magic_4, string a_comment_8, double ad_16, double a_price_24 = 0.0) { + color l_color_36; + int l_ticket_72; + int l_error_76; + double ld_80; + if (a_cmd_0 > OP_SELL && a_price_24 == 0.0) return (-1); + int l_cmd_32 = a_cmd_0 % 2; + if (ad_16 < g_minlot_376) ad_16 = g_minlot_376; + else + if (ad_16 > g_maxlot_368) ad_16 = g_maxlot_368; + if (AccountFreeMarginCheck(g_symbol_416, l_cmd_32, ad_16) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { + if (WriteLog) Print("OpenOrder: you don\'t have free margin."); + return (-1); + } + if (l_cmd_32 == OP_BUY) l_color_36 = ColorBuy; + else l_color_36 = ColorSell; + RefreshRates(); + double ld_40 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits); + double ld_48 = NormalizeDouble(Ask, Digits); + double ld_56 = NormalizeDouble(Bid, Digits); + switch (a_cmd_0) { + case OP_BUY: + a_price_24 = ld_48; + break; + case OP_SELL: + a_price_24 = ld_56; + break; + case OP_BUYLIMIT: + if (a_price_24 >= ld_48) { + a_price_24 = ld_48; + a_cmd_0 = 0; + } else + if (NormalizeDouble(ld_48 - a_price_24, Digits) < ld_40) return (-1); + break; + case OP_SELLLIMIT: + if (a_price_24 <= ld_56) { + a_price_24 = ld_56; + a_cmd_0 = 1; + } else + if (NormalizeDouble(a_price_24 - ld_56, Digits) < ld_40) return (-1); + break; + case OP_BUYSTOP: + if (a_price_24 <= ld_48) { + a_price_24 = ld_48; + a_cmd_0 = 0; + } else + if (NormalizeDouble(a_price_24 - ld_48, Digits) < ld_40) return (-1); + break; + case OP_SELLSTOP: + if (a_price_24 >= ld_56) { + a_price_24 = ld_56; + a_cmd_0 = 1; + } else + if (NormalizeDouble(ld_56 - a_price_24, Digits) < ld_40) return (-1); + break; + default: + return (-1); + } + int li_68 = gi_320; + while (li_68 > 0) { + while (!IsTradeAllowed()) Sleep(1000); + l_ticket_72 = OrderSend(g_symbol_416, a_cmd_0, ad_16, a_price_24, g_slippage_356, 0, 0, a_comment_8, a_magic_4, 0, l_color_36); + Sleep(MathRand() / 1000); + if (l_ticket_72 < 0) { + l_error_76 = GetLastError(); + if (WriteLog) { + Print("OpenOrder: OrderSend(", OrderTypeToStr(a_cmd_0), ") error = ", ErrorDescription(l_error_76)); + Print("OpenOrder: order ", g_symbol_416, " ", OrderTypeToStr(a_cmd_0), " lot = ", DoubleToStr(ad_16, 8), " op = ", DoubleToStr(a_price_24, 8), " slippage = ", g_slippage_356); + } + if (l_error_76 != 136/* OFF_QUOTES */) break; + if (!(gi_316)) break; + Sleep(6000); + RefreshRates(); + if (a_cmd_0 == OP_BUY) ld_80 = NormalizeDouble(Ask, Digits); + else ld_80 = NormalizeDouble(Bid, Digits); + if (NormalizeDouble(MathAbs((ld_80 - a_price_24) / gd_360), 0) > gi_324) break; + a_price_24 = ld_80; + li_68--; + if (li_68 > 0) + if (WriteLog) Print("... Possible to open order."); + ad_16 = NormalizeDouble(ad_16 / 2.0, gi_348); + if (ad_16 < g_minlot_376) ad_16 = g_minlot_376; + } else { + if (OrderSelect(l_ticket_72, SELECT_BY_TICKET)) a_price_24 = OrderOpenPrice(); + if (SendEmail) { + SendMail(gs_336, StringConcatenate("GPS Forex Robot trade Information\nCurrency Pair: ", StringSubstr(g_symbol_416, 0, 6), + "\nTime: ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS), + "\nOrder Type: ", OrderTypeToStr(a_cmd_0), + "\nPrice: ", DoubleToStr(a_price_24, Digits), + "\nLot size: ", DoubleToStr(ad_16, gi_348), + "\nEvent: Trade Opened", + "\n\nCurrent Balance: ", DoubleToStr(AccountBalance(), 2), " ", gs_424, + "\nCurrent Equity: ", DoubleToStr(AccountEquity(), 2), " ", gs_424)); + } + if (!(SoundAlert)) break; + PlaySound(SoundFileAtOpen); + break; + } + } + return (l_ticket_72); +} + +int CloseOrder(int a_ticket_0, double a_lots_4, int ai_12, int a_slippage_16) { + color l_color_20; + double l_price_40; + bool l_ord_close_48; + int l_error_52; + bool li_56; + if (ai_12 == 0) l_color_20 = ColorBuy; + else l_color_20 = ColorSell; + int l_count_24 = 0; + int l_count_28 = 0; + int l_count_32 = 0; + int l_count_36 = 0; + while (true) { + while (!IsTradeAllowed()) Sleep(1000); + RefreshRates(); + if (ai_12 == 0) l_price_40 = NormalizeDouble(Bid, Digits); + else l_price_40 = NormalizeDouble(Ask, Digits); + l_ord_close_48 = OrderClose(a_ticket_0, a_lots_4, l_price_40, a_slippage_16, l_color_20); + if (!l_ord_close_48) { + l_error_52 = GetLastError(); + if (WriteLog) Print(StringConcatenate("OrderClose(", OrderTypeToStr(ai_12), ",", DoubleToStr(a_ticket_0, 0), ") error = ", ErrorDescription(l_error_52))); + li_56 = FALSE; + switch (l_error_52) { + case 0/* NO_ERROR */: + Sleep(10000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 1/* NO_RESULT */: break; + case 2/* COMMON_ERROR */: break; + case 3/* INVALID_TRADE_PARAMETERS */: break; + case 4/* SERVER_BUSY */: break; + case 5/* OLD_VERSION */: break; + case 6/* NO_CONNECTION */: + Sleep(10000); + if (IsConnected()) li_56 = TRUE; + break; + case 7/* NOT_ENOUGH_RIGHTS */: break; + case 8/* TOO_FREQUENT_REQUESTS */: break; + case 9/* MALFUNCTIONAL_TRADE */: break; + case 64/* ACCOUNT_DISABLED */: break; + case 65/* INVALID_ACCOUNT */: break; + case 128/* TRADE_TIMEOUT */: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 129/* INVALID_PRICE */: + Sleep(6000); + l_count_24++; + if (l_count_24 <= 3) li_56 = TRUE; + break; + case 130/* INVALID_STOPS */: + Sleep(6000); + l_count_28++; + if (l_count_28 <= 3) li_56 = TRUE; + break; + case 131/* INVALID_TRADE_VOLUME */: break; + case 132/* MARKET_CLOSED */: break; + case 133/* TRADE_DISABLED */: break; + case 134/* NOT_ENOUGH_MONEY */: break; + case 135/* PRICE_CHANGED */: + li_56 = TRUE; + break; + case 136/* OFF_QUOTES */: + Sleep(6000); + li_56 = TRUE; + break; + case 137/* BROKER_BUSY */: + Sleep(20000); + l_count_32++; + if (l_count_32 <= 3) li_56 = TRUE; + break; + case 138/* REQUOTE */: + l_count_36++; + if (l_count_36 <= 3) li_56 = TRUE; + break; + case 139/* ORDER_LOCKED */: break; + case 140/* LONG_POSITIONS_ONLY_ALLOWED */: break; + case 141/* TOO_MANY_REQUESTS */: break; + case 142: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 143: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 144: break; + case 145/* TRADE_MODIFY_DENIED */: + Sleep(20000); + li_56 = TRUE; + break; + case 146/* TRADE_CONTEXT_BUSY */: + while (IsTradeContextBusy()) Sleep(1000); + li_56 = TRUE; + break; + case 147/* ERR_TRADE_EXPIRATION_DENIED */: break; + case 148/* ERR_TRADE_TOO_MANY_ORDERS */: break; + case 149/* ? */: break; + case 150: break; + case 4000/* NO_MQLERROR */: + Sleep(10000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + case 4051/* INVALID_FUNCTION_PARAMETER_VALUE */: break; + case 4062/* STRING_PARAMETER_EXPECTED */: break; + case 4063/* INTEGER_PARAMETER_EXPECTED */: break; + case 4064/* DOUBLE_PARAMETER_EXPECTED */: break; + case 4105/* NO_ORDER_SELECTED */: break; + case 4106/* UNKNOWN_SYMBOL */: break; + case 4107/* INVALID_PRICE_PARAM */: break; + case 4108/* INVALID_TICKET */: break; + case 4109/* TRADE_NOT_ALLOWED */: break; + case 4110/* LONGS__NOT_ALLOWED */: break; + case 4111/* SHORTS_NOT_ALLOWED */: break; + } + if (!(li_56)) break; + continue; + } + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) l_price_40 = OrderClosePrice(); + if (SendEmail) { + SendMail(gs_336, StringConcatenate("GPS Forex Robot trade Information\nCurrency Pair: ", StringSubstr(g_symbol_416, 0, 6), + "\nTime: ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS), + "\nOrder Type: ", OrderTypeToStr(ai_12), + "\nPrice: ", DoubleToStr(l_price_40, Digits), + "\nLot size: ", DoubleToStr(a_lots_4, gi_348), + "\nEvent: Trade Closed", + "\n\nCurrent Balance: ", DoubleToStr(AccountBalance(), 2), " ", gs_424, + "\nCurrent Equity: ", DoubleToStr(AccountEquity(), 2), " ", gs_424)); + } + if (!(SoundAlert)) break; + PlaySound(SoundFileAtClose); + break; + } + return (l_ord_close_48); +} + +int HaveOrdersInDay(int a_cmd_0, int a_magic_4, int ai_8) { + int l_cmd_24; + int l_count_12 = 0; + int li_16 = OrdersTotal() - 1; + for (int l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20--) { + if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("HaveOrdersInDay: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_4) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_24 = OrderType(); + if (a_cmd_0 == -4) { + if (l_cmd_24 % 2 != 0) continue; + } else { + if (a_cmd_0 == -5) { + if (l_cmd_24 % 2 != 1) continue; + } else { + if (a_cmd_0 == -3) { + if (l_cmd_24 <= OP_SELL) continue; + } else { + if (a_cmd_0 == -2) { + if (l_cmd_24 > OP_SELL) continue; + } else { + if (a_cmd_0 >= OP_BUY) + if (l_cmd_24 != a_cmd_0) continue; + } + } + } + } + if (OrderOpenTime() >= ai_8) l_count_12++; + } + } + } + } + if (l_count_12 == 0) { + li_16 = OrdersHistoryTotal() - 1; + for (l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20--) { + if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY)) { + if (WriteLog) Print(StringConcatenate("HaveOrdersInDay: OrderSelect_2() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_4) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_24 = OrderType(); + if (a_cmd_0 == -4) { + if (l_cmd_24 % 2 != 0) continue; + } else { + if (a_cmd_0 == -5) { + if (l_cmd_24 % 2 != 1) continue; + } else { + if (a_cmd_0 == -3) { + if (l_cmd_24 <= OP_SELL) continue; + } else { + if (a_cmd_0 == -2) { + if (l_cmd_24 > OP_SELL) continue; + } else { + if (a_cmd_0 >= OP_BUY) + if (l_cmd_24 != a_cmd_0) continue; + } + } + } + } + if (OrderOpenTime() < ai_8) break; + l_count_12++; + } + } + } + } + } + return (l_count_12); +} + +void WatchReverseAfterSL(int ai_0) { + int l_magic_12; + int l_datetime_16; + double ld_20; + int li_4 = OrdersHistoryTotal() - 1; + for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8--) { + if (!OrderSelect(l_pos_8, SELECT_BY_POS, MODE_HISTORY)) { + if (WriteLog) Print(StringConcatenate("WatchReverseAfterSL: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + l_magic_12 = OrderMagicNumber(); + if (l_magic_12 == gia_484[ai_0]) break; + if (l_magic_12 == gia_460[ai_0]) { + if (OrderSymbol() == g_symbol_416) { + if (OrderProfit() >= 0.0) break; + l_datetime_16 = OrderCloseTime(); + if (TimeHour(l_datetime_16) != Hour()) break; + if (TimeMinute(l_datetime_16) != Minute()) break; + if (TimeDay(l_datetime_16) != Day()) break; + if (TimeMonth(l_datetime_16) != Month()) break; + ld_20 = NormalizeDouble(OrderLots() * gda_480[ai_0], gi_348); + if (ld_20 > MaxLots) ld_20 = MaxLots; + if (ld_20 < g_minlot_376) ld_20 = g_minlot_376; + if (ld_20 > g_maxlot_368) ld_20 = g_maxlot_368; + OpenOrder(MathAbs(gia_464[ai_0] - 1), gia_484[ai_0], ExpertComment, ld_20); + return; + } + } + } + } +} + +bool AutoGMTOffset(int &ai_0) { + int li_4 = GetGMT(); + if (li_4 < 0) return (FALSE); + int li_8 = TimeCurrent() - li_4; + ai_0 = MathFloor((li_8 + 1800) / 3600); + return (TRUE); +} + +int SetCommentPrint(string as_0, string as_8 = "") { + Comment("\n\n" + "GPS FOREX ROBOT" + + "\n" + + "www.gpsforexrobot.com" + + "\n\n" + as_0); + if (as_8 != "") { + if (as_8 == "comment") Print(as_0); + else Print(as_8); + } + return (1); +} + +int PrintInformation() { + string ls_0; + if (gi_496 == 1) { + if (IsDemo()) ls_0 = "Demo"; + else ls_0 = "Real"; + SetCommentPrint("AUTHENTICATION STATUS: " + + "\n" + + gs_520 + + "\n" + + "---------------------------------------------------" + + "\n" + + "GENERAL INFORMATION:" + + "\n" + + "Broker Company: " + AccountCompany() + + "\n" + + "Terminal Company: " + TerminalCompany() + + "\n" + + "Server Name: " + AccountServer() + + "\n" + + "Current Server Time: " + TimeToStr(TimeCurrent(), TIME_SECONDS) + + "\n" + + "---------------------------------------------------" + + "\n" + + "ACCOUNT INFORMATION:" + + "\n" + + "Account Name: " + AccountName() + + "\n" + + "Account Number: " + AccountNumber() + + "\n" + + "Account Type: " + ls_0 + + "\n" + + "Account Leverage: 1:" + DoubleToStr(AccountLeverage(), 0) + + "\n" + + "Account Balance: " + DoubleToStr(AccountBalance(), 2) + + "\n" + + "Account Equity: " + DoubleToStr(AccountEquity(), 2) + + "\n" + + "Account Floating P/L: " + DoubleToStr(AccountProfit(), 2) + + "\n" + + "Account Currency: " + AccountCurrency() + + "\n" + + "---------------------------------------------------" + + "\n" + + "ADDITIONAL INFORMATION:" + + "\n" + + "Current Spread: " + DoubleToStr(gd_384, Digits - gi_352) + + "\n" + + "Maximum Spread: " + DoubleToStr(gd_392, Digits - gi_352) + + "\n" + + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 2) + + "\n" + + "Used Margin: " + DoubleToStr(AccountMargin(), 2) + + "\n" + + "---------------------------------------------------" + + "\n" + + "GMT SETTINGS:" + + "\n" + + "GMT Offset: " + gs_512); + } else { + if (!gi_536) { + SetCommentPrint("AUTHENTICATION STATUS: " + + "\n" + + gs_520, gs_528); + gi_536 = TRUE; + } + } + return (0); +} + +int SetVariables() { + gda_508[0] = 1.00000000; + gda_508[1] = 2.00000000; + gda_508[2] = 88.00000000; + gda_508[3] = 5.00000000; + gda_508[4] = 23.00000000; + gda_508[5] = 0.00000000; + gda_508[6] = 1.00000000; + gda_508[7] = 1.00000000; + gda_508[8] = 1.00000000; + gda_508[9] = 1.00000000; + gda_508[10] = 1.00000000; + gda_508[11] = -2.00000000; + gda_508[12] = 0.00000000; + gda_508[13] = 220.00000000; + gda_508[14] = 18.00000000; + gda_508[15] = 5.30000000; + + if (gda_508[0] == 1.0) gi_160 = TRUE; + else gi_160 = FALSE; + gi_164 = gda_508[1]; + gd_172 = gda_508[2]; + gd_180 = gda_508[3]; + gi_188 = gda_508[4]; + gi_192 = gda_508[5]; + if (gda_508[6] == 1.0) gi_196 = TRUE; + else gi_196 = FALSE; + if (gda_508[7] == 1.0) gi_200 = TRUE; + else gi_200 = FALSE; + if (gda_508[8] == 1.0) gi_204 = TRUE; + else gi_204 = FALSE; + if (gda_508[9] == 1.0) gi_208 = TRUE; + else gi_208 = FALSE; + if (gda_508[10] == 1.0) gi_212 = TRUE; + else gi_212 = FALSE; + gi_216 = gda_508[11]; + if (gda_508[12] == 1.0) gi_220 = TRUE; + else gi_220 = FALSE; + gd_232 = gda_508[13]; + gd_240 = gda_508[14]; + gd_248 = gda_508[15]; + gba_432[0] = gi_168; + gda_436[0] = NormalizeDouble((-1.0 * gd_172) * gd_360, Digits); + gda_440[0] = NormalizeDouble(gd_180 * gd_360, Digits); + gia_444[0] = GetGMTCorrection(gi_188); + gia_448[0] = gi_192; + gba_452[0][0] = gi_196; + gba_452[0][1] = gi_200; + gba_452[0][2] = gi_204; + gba_452[0][3] = gi_208; + gba_452[0][4] = gi_212; + gia_456[0] = gi_216; + gia_464[0] = gi_220; + gia_460[0] = gi_224; + gba_468[0] = gi_228; + gda_472[0] = NormalizeDouble((-1.0 * gd_232) * gd_360, Digits); + gda_476[0] = NormalizeDouble(gd_240 * gd_360, Digits); + gda_480[0] = gd_248; + gia_484[0] = gi_256; + return (1); +} + +int Authentication() { +/* + gi_496 = GPSForexRobot(gda_508, EMail, CBReceipt, IsDemo(), AccountNumber()); + if (gi_496 == -1) { + gs_520 = "Authentication Failed [Invalid Internet Connection]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Internet Connection] [Trades are not available]"; + return (-1); + } + if (gi_496 == -2) { + gs_520 = "Authentication Failed [Invalid Internet Connection]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Internet Connection] [Trades are not available]"; + return (-2); + } + if (gi_496 == -3) { + gs_520 = "Authentication Failed [Wrong E-Mail or CBReceipt]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Wrong E-Mail or CBReceipt] [Trades are not available]"; + return (-2); + } + if (gi_496 == -4) { + gs_520 = "Authentication Failed [Invalid Real Money Account Number]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Real Money Account Number] [Trades are not available]"; + return (-2); + } + if (*/gi_496 = 1;/*) {*/ + SetVariables(); + gs_520 = "Authenticated [Trades are available]\nThank you for joining the GPS Robot Team!"; + gs_528 = "Authenticatd: [Trades are available]"; + return (1); +/* + } + return (0); +*/ +} + +int Rand(int ai_0) { + MathSrand(TimeLocal()); + return (MathRand() % ai_0); +} \ No newline at end of file diff --git a/GPSForexRobotUSDCHF_edu.mq4 b/GPSForexRobotUSDCHF_edu.mq4 new file mode 100644 index 0000000..67d3f17 --- /dev/null +++ b/GPSForexRobotUSDCHF_edu.mq4 @@ -0,0 +1,1210 @@ +/* + Generated by EX4-TO-MQ4 decompiler V4.0.224.1 [] + Website: http://purebeam.biz + E-mail : purebeam@gmail.com +*/ +#property copyright "Copyright © 2010, GPSForexRobot.com" +#property link "http://gpsforexrobot.com/" + +#import "GPSForexRobotUSDCHF.dll" +// int GPSForexRobot(double& a0[], string a1, string a2, int a3, int a4); + int GetGMT(); +#import + +extern string GPS_Forex_Robot_USDCHF = " "; +/* +extern string ____Authentication________ = "---------------------------------------------"; +extern string EMail = ""; +extern string CBReceipt = ""; +*/ +extern string ____Size_of_lots________ = "---------------------------------------------"; +extern bool UseMM = FALSE; +extern double Lots = 0.01; +extern double LotsRiskReductor = 10.0; +extern double MaxLots = 1000.0; +extern string ____General_Options_____ = "---------------------------------------------"; +extern bool AutoGMTOffset = TRUE; +extern int GMTOffset = 1; +bool gi_160 = FALSE; +int gi_164 = 2; +bool gi_168 = TRUE; +double gd_172 = 32.0; +double gd_180 = 8.0; +int gi_188 = 16; +int gi_192 = 0; +bool gi_196 = TRUE; +bool gi_200 = FALSE; +bool gi_204 = FALSE; +bool gi_208 = TRUE; +bool gi_212 = TRUE; +int gi_216 = -4; +int gi_220 = 1; +int gi_224 = 20100109; +bool gi_228 = TRUE; +double gd_232 = 45.0; +double gd_240 = 14.0; +double gd_248 = 4.0; +int gi_256 = 20100129; +extern string ____Others______________ = "---------------------------------------------"; +extern string ExpertComment = "GPS Forex Robot"; +extern color ColorBuy = Blue; +extern color ColorSell = Red; +extern bool SendEmail = FALSE; +extern bool SoundAlert = FALSE; +extern string SoundFileAtOpen = "alert.wav"; +extern string SoundFileAtClose = "alert.wav"; +extern bool WriteLog = FALSE; +extern bool WriteDebugLog = FALSE; +bool gi_316 = TRUE; +int gi_320 = 2; +int gi_324 = 1; +string gs_unused_328 = "New Trade Information"; +string gs_336 = "New Trade Information"; +int g_bool_344; +int gi_348; +int gi_352; +int g_slippage_356; +double gd_360; +double g_maxlot_368; +double g_minlot_376; +double gd_384; +double gd_392; +double g_lotstep_400; +double gd_408; +string g_symbol_416; +string gs_424; +bool gba_432[4]; +double gda_436[4]; +double gda_440[4]; +int gia_444[4]; +int gia_448[4]; +bool gba_452[4][5]; +int gia_456[4]; +int gia_460[4]; +int gia_464[4]; +bool gba_468[4]; +double gda_472[4]; +double gda_476[4]; +double gda_480[4]; +int gia_484[4]; +bool gi_488; +bool gi_492; +int gi_496 = 0; +bool gi_500 = FALSE; +int gi_504 = 0; +double gda_508[52] = {0}; +string gs_512 = ""; +string gs_520 = ""; +string gs_528 = ""; +bool gi_536 = FALSE; + +int init() { + gi_492 = TRUE; + if (!IsDllsAllowed()) { + SetCommentPrint("WARNING: Set Parameter \"AllowDLL Imports\" ON in menu Tools -> Options -> ExpertAdvisors.", "comment"); + gi_492 = FALSE; + return (0); + } + if (StringSubstr(Symbol(), 0, 6) != "USDCHF") { + SetCommentPrint("WARNING: Use GPS Forex Robot USDCHF only on USDCHF pair.", "comment"); + gi_492 = FALSE; + return (0); + } + if (IsTesting()) { + if (AutoGMTOffset) { + SetCommentPrint("WARNING: Automatic GMT offset calculation works only on live/demo trading " + "and should be set as FALSE for backtests - strategy testing.", "comment"); + gi_492 = FALSE; + return (0); + } + } + if (WriteDebugLog) { + WriteLog = TRUE; + Print("*************************** Initialization ***************************"); + } + g_symbol_416 = Symbol(); + g_maxlot_368 = MarketInfo(g_symbol_416, MODE_MAXLOT); + g_minlot_376 = MarketInfo(g_symbol_416, MODE_MINLOT); + g_lotstep_400 = MarketInfo(g_symbol_416, MODE_LOTSTEP); + if (g_lotstep_400 == 0.01) gi_348 = 2; + else { + if (g_lotstep_400 == 0.1) gi_348 = 1; + else { + if (g_lotstep_400 == 1.0) gi_348 = 0; + else { + if (g_lotstep_400 == 0.001) gi_348 = 3; + else gi_348 = 4; + } + } + } + double l_leverage_0 = AccountLeverage(); + gd_408 = NormalizeDouble(LotsRiskReductor * (100 / l_leverage_0), 2); + gs_424 = AccountCurrency(); + g_bool_344 = IsTesting(); + if (Digits < 4) { + gd_360 = 0.01; + gi_352 = 2; + } else { + gd_360 = 0.0001; + gi_352 = 4; + } + int li_8 = MathPow(10, Digits - gi_352); + g_slippage_356 = gi_164 * li_8; + gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits - gi_352); + gd_392 = gd_384; + if (IsTesting()) { + Authentication(); + if (gi_496 != 1) { + PrintInformation(); + gi_492 = FALSE; + return (0); + } + } + gi_488 = TRUE; + return (0); +} + +int deinit() { + Comment(""); + if (WriteDebugLog) Print("*************************** Deinitialization ***************************"); + return (0); +} + +int start() { + double ld_24; + if (!gi_492) return (0); + int l_datetime_0 = TimeCurrent(); + if (!IsTesting()) { + if (gi_488) { + if (AutoGMTOffset) { + if (AutoGMTOffset(GMTOffset)) gs_512 = GMTOffset + " (automatic)"; + else gs_512 = "Error"; + } else gs_512 = GMTOffset + " (manual)"; + Authentication(); + gi_500 = TRUE; + gi_504 = l_datetime_0; + gi_488 = FALSE; + } + if (gi_500 == TRUE && gi_504 < l_datetime_0 - 60) { + gi_500 = FALSE; + gi_504 = l_datetime_0 + 60 * (780 - Rand(120)); + } + if (gi_500 == FALSE && l_datetime_0 >= gi_504) { + gi_500 = TRUE; + Authentication(); + } + PrintInformation(); + } + if (gi_496 != 1) return (0); + gd_384 = MarketInfo(Symbol(), MODE_SPREAD) / MathPow(10, Digits - gi_352); + if (gd_384 > gd_392) gd_392 = gd_384; + int l_datetime_4 = TimeCurrent(); + int li_8 = l_datetime_4 - 3600 * GMTOffset; + int l_day_of_week_12 = TimeDayOfWeek(l_datetime_4); + int l_datetime_16 = iTime(NULL, PERIOD_D1, 0); + for (int l_index_20 = 0; l_index_20 < 4; l_index_20++) { + if (gba_432[l_index_20]) { + if (!gi_160) SetOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]); + WatchOrderLevels(gda_440[l_index_20], gda_436[l_index_20], gia_460[l_index_20]); + if (gba_468[l_index_20]) { + if (!gi_160) SetOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]); + WatchOrderLevels(gda_476[l_index_20], gda_472[l_index_20], gia_484[l_index_20]); + if (HaveOrdersInDay(-2, gia_484[l_index_20], l_datetime_16) == 0) WatchReverseAfterSL(l_index_20); + } + if (l_day_of_week_12 <= 0 || l_day_of_week_12 > 5) continue; + if ((gba_452[l_index_20][l_day_of_week_12 - 1])) { + if (gia_444[l_index_20] != TimeHour(l_datetime_4) || gia_448[l_index_20] != TimeMinute(l_datetime_4)) continue; + if (HaveOrdersInDay(-2, gia_460[l_index_20], l_datetime_16) <= 0) { + ld_24 = LotsOptimized(gia_464[l_index_20]); + if (gia_456[l_index_20] >= 0) + if (l_day_of_week_12 == gia_456[l_index_20]) ld_24 = NormalizeDouble(2.0 * ld_24, gi_348); + OpenOrder(gia_464[l_index_20], gia_460[l_index_20], ExpertComment, ld_24); + } + } + } + } + return (0); +} + +string ErrorDescription(int ai_0) { + string ls_ret_8; + switch (ai_0) { + case 0: + case 1: + ls_ret_8 = "no error"; + break; + case 2: + ls_ret_8 = "common error"; + break; + case 3: + ls_ret_8 = "invalid trade parameters"; + break; + case 4: + ls_ret_8 = "trade server is busy"; + break; + case 5: + ls_ret_8 = "old version of the client terminal"; + break; + case 6: + ls_ret_8 = "no connection with trade server"; + break; + case 7: + ls_ret_8 = "not enough rights"; + break; + case 8: + ls_ret_8 = "too frequent requests"; + break; + case 9: + ls_ret_8 = "malfunctional trade operation (never returned error)"; + break; + case 64: + ls_ret_8 = "account disabled"; + break; + case 65: + ls_ret_8 = "invalid account"; + break; + case 128: + ls_ret_8 = "trade timeout"; + break; + case 129: + ls_ret_8 = "invalid price"; + break; + case 130: + ls_ret_8 = "invalid stops"; + break; + case 131: + ls_ret_8 = "invalid trade volume"; + break; + case 132: + ls_ret_8 = "market is closed"; + break; + case 133: + ls_ret_8 = "trade is disabled"; + break; + case 134: + ls_ret_8 = "not enough money"; + break; + case 135: + ls_ret_8 = "price changed"; + break; + case 136: + ls_ret_8 = "off quotes"; + break; + case 137: + ls_ret_8 = "broker is busy (never returned error)"; + break; + case 138: + ls_ret_8 = "requote"; + break; + case 139: + ls_ret_8 = "order is locked"; + break; + case 140: + ls_ret_8 = "long positions only allowed"; + break; + case 141: + ls_ret_8 = "too many requests"; + break; + case 145: + ls_ret_8 = "modification denied because order too close to market"; + break; + case 146: + ls_ret_8 = "trade context is busy"; + break; + case 147: + ls_ret_8 = "expirations are denied by broker"; + break; + case 148: + ls_ret_8 = "amount of open and pending orders has reached the limit"; + break; + case 149: + ls_ret_8 = "hedging is prohibited"; + break; + case 150: + ls_ret_8 = "prohibited by FIFO rules"; + break; + case 4000: + ls_ret_8 = "no error (never generated code)"; + break; + case 4001: + ls_ret_8 = "wrong function pointer"; + break; + case 4002: + ls_ret_8 = "array index is out of range"; + break; + case 4003: + ls_ret_8 = "no memory for function call stack"; + break; + case 4004: + ls_ret_8 = "recursive stack overflow"; + break; + case 4005: + ls_ret_8 = "not enough stack for parameter"; + break; + case 4006: + ls_ret_8 = "no memory for parameter string"; + break; + case 4007: + ls_ret_8 = "no memory for temp string"; + break; + case 4008: + ls_ret_8 = "not initialized string"; + break; + case 4009: + ls_ret_8 = "not initialized string in array"; + break; + case 4010: + ls_ret_8 = "no memory for array\' string"; + break; + case 4011: + ls_ret_8 = "too long string"; + break; + case 4012: + ls_ret_8 = "remainder from zero divide"; + break; + case 4013: + ls_ret_8 = "zero divide"; + break; + case 4014: + ls_ret_8 = "unknown command"; + break; + case 4015: + ls_ret_8 = "wrong jump (never generated error)"; + break; + case 4016: + ls_ret_8 = "not initialized array"; + break; + case 4017: + ls_ret_8 = "dll calls are not allowed"; + break; + case 4018: + ls_ret_8 = "cannot load library"; + break; + case 4019: + ls_ret_8 = "cannot call function"; + break; + case 4020: + ls_ret_8 = "expert function calls are not allowed"; + break; + case 4021: + ls_ret_8 = "not enough memory for temp string returned from function"; + break; + case 4022: + ls_ret_8 = "system is busy (never generated error)"; + break; + case 4050: + ls_ret_8 = "invalid function parameters count"; + break; + case 4051: + ls_ret_8 = "invalid function parameter value"; + break; + case 4052: + ls_ret_8 = "string function internal error"; + break; + case 4053: + ls_ret_8 = "some array error"; + break; + case 4054: + ls_ret_8 = "incorrect series array using"; + break; + case 4055: + ls_ret_8 = "custom indicator error"; + break; + case 4056: + ls_ret_8 = "arrays are incompatible"; + break; + case 4057: + ls_ret_8 = "global variables processing error"; + break; + case 4058: + ls_ret_8 = "global variable not found"; + break; + case 4059: + ls_ret_8 = "function is not allowed in testing mode"; + break; + case 4060: + ls_ret_8 = "function is not confirmed"; + break; + case 4061: + ls_ret_8 = "send mail error"; + break; + case 4062: + ls_ret_8 = "string parameter expected"; + break; + case 4063: + ls_ret_8 = "integer parameter expected"; + break; + case 4064: + ls_ret_8 = "double parameter expected"; + break; + case 4065: + ls_ret_8 = "array as parameter expected"; + break; + case 4066: + ls_ret_8 = "requested history data in update state"; + break; + case 4099: + ls_ret_8 = "end of file"; + break; + case 4100: + ls_ret_8 = "some file error"; + break; + case 4101: + ls_ret_8 = "wrong file name"; + break; + case 4102: + ls_ret_8 = "too many opened files"; + break; + case 4103: + ls_ret_8 = "cannot open file"; + break; + case 4104: + ls_ret_8 = "incompatible access to a file"; + break; + case 4105: + ls_ret_8 = "no order selected"; + break; + case 4106: + ls_ret_8 = "unknown symbol"; + break; + case 4107: + ls_ret_8 = "invalid price parameter for trade function"; + break; + case 4108: + ls_ret_8 = "invalid ticket"; + break; + case 4109: + ls_ret_8 = "trade is not allowed in the expert properties"; + break; + case 4110: + ls_ret_8 = "longs are not allowed in the expert properties"; + break; + case 4111: + ls_ret_8 = "shorts are not allowed in the expert properties"; + break; + case 4200: + ls_ret_8 = "object is already exist"; + break; + case 4201: + ls_ret_8 = "unknown object property"; + break; + case 4202: + ls_ret_8 = "object is not exist"; + break; + case 4203: + ls_ret_8 = "unknown object type"; + break; + case 4204: + ls_ret_8 = "no object name"; + break; + case 4205: + ls_ret_8 = "object coordinates error"; + break; + case 4206: + ls_ret_8 = "no specified subwindow"; + break; + default: + ls_ret_8 = "unknown error"; + } + return (ls_ret_8); +} + +string OrderTypeToStr(int ai_0) { + string ls_ret_8; + switch (ai_0) { + case 0: + ls_ret_8 = "Buy"; + break; + case 1: + ls_ret_8 = "Sell"; + break; + case 2: + ls_ret_8 = "BuyLimit"; + break; + case 3: + ls_ret_8 = "SellLimit"; + break; + case 4: + ls_ret_8 = "BuyStop"; + break; + case 5: + ls_ret_8 = "SellStop"; + break; + default: + ls_ret_8 = "Unknown"; + } + return (ls_ret_8); +} + +int GetGMTCorrection(int ai_0) { + ai_0 += GMTOffset; + while (true) { + if (ai_0 >= 24) { + ai_0 -= 24; + continue; + } + if (ai_0 >= 0) break; + ai_0 += 24; + } + return (ai_0); +} + +void SetOrderLevels(double ad_0, double ad_8, int a_magic_16) { + int l_cmd_36; + double ld_40; + double l_price_48; + double ld_56; + double ld_64; + bool li_72; + double l_price_76; + bool li_84; + double l_price_88; + bool l_bool_96; + double ld_20 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits); + int li_28 = OrdersTotal() - 1; + for (int l_pos_32 = li_28; l_pos_32 >= 0; l_pos_32--) { + if (!OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("SetOrderLevels: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_16) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_36 = OrderType(); + ld_40 = NormalizeDouble(OrderClosePrice(), Digits); + l_price_48 = NormalizeDouble(OrderOpenPrice(), Digits); + if (l_cmd_36 > OP_SELL) + if (NormalizeDouble(MathAbs(l_price_48 - ld_40), Digits) <= ld_20) continue; + ld_56 = NormalizeDouble(OrderStopLoss(), Digits); + ld_64 = NormalizeDouble(OrderTakeProfit(), Digits); + li_72 = FALSE; + if (ld_56 == 0.0) { + if (ad_8 < 0.0) { + if (l_cmd_36 % 2 == 0) { + l_price_76 = NormalizeDouble(l_price_48 + ad_8, Digits); + if (NormalizeDouble(ld_40 - l_price_76, Digits) > ld_20) li_72 = TRUE; + else l_price_76 = ld_56; + } else { + l_price_76 = NormalizeDouble(l_price_48 - ad_8, Digits); + if (NormalizeDouble(l_price_76 - ld_40, Digits) > ld_20) li_72 = TRUE; + else l_price_76 = ld_56; + } + } else l_price_76 = ld_56; + } else l_price_76 = ld_56; + li_84 = FALSE; + if (ld_64 == 0.0) { + if (ad_0 > 0.0) { + if (l_cmd_36 % 2 == 0) { + l_price_88 = NormalizeDouble(l_price_48 + ad_0, Digits); + if (NormalizeDouble(l_price_88 - ld_40, Digits) > ld_20) li_84 = TRUE; + else l_price_88 = ld_64; + } else { + l_price_88 = NormalizeDouble(l_price_48 - ad_0, Digits); + if (NormalizeDouble(ld_40 - l_price_88, Digits) > ld_20) li_84 = TRUE; + else l_price_88 = ld_64; + } + } else l_price_88 = ld_64; + } else l_price_88 = ld_64; + if (li_72 || li_84) { + while (!IsTradeAllowed()) Sleep(1000); + l_bool_96 = OrderModify(OrderTicket(), l_price_48, l_price_76, l_price_88, 0, CLR_NONE); + if (!l_bool_96) + if (WriteLog) Print(StringConcatenate("SetOrderLevels: OrderModify(", OrderTypeToStr(OrderType()), ") error = ", ErrorDescription(GetLastError()))); + } + } + } + } + } +} + +void WatchOrderLevels(double ad_0, double ad_8, int a_magic_16) { + double ld_28; + double ld_36; + double ld_44; + if (ad_0 <= 0.0 && ad_8 >= 0.0) return; + int li_20 = OrdersTotal() - 1; + for (int l_pos_24 = li_20; l_pos_24 >= 0; l_pos_24--) { + if (!OrderSelect(l_pos_24, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("WatchOrderLevels: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_16) { + if (OrderType() <= OP_SELL) { + if (OrderSymbol() == g_symbol_416) { + ld_28 = NormalizeDouble(OrderClosePrice(), Digits); + ld_36 = NormalizeDouble(OrderOpenPrice(), Digits); + if (OrderType() == OP_BUY) { + ld_44 = NormalizeDouble(ld_28 - ld_36, Digits); + if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) { + if (WriteLog) Print("WatchOrderLevels: level for close BUY"); + CloseOrder(OrderTicket(), OrderLots(), 0, g_slippage_356); + } + } else { + ld_44 = NormalizeDouble(ld_36 - ld_28, Digits); + if ((ad_0 > 0.0 && ld_44 >= ad_0) || (ad_8 < 0.0 && ld_44 <= ad_8)) { + if (WriteLog) Print("WatchOrderLevels: level for close SELL"); + CloseOrder(OrderTicket(), OrderLots(), 1, g_slippage_356); + } + } + } + } + } + } + } +} + +double LotsOptimized(int ai_unused_0) { + double ld_ret_4; + double ld_12; + double ld_20; + if (!UseMM) ld_ret_4 = Lots; + else { + ld_12 = AccountFreeMargin() * gd_408 / 100.0; + ld_20 = MarketInfo(g_symbol_416, MODE_MARGINREQUIRED) * g_lotstep_400; + ld_ret_4 = NormalizeDouble(MathFloor(ld_12 / ld_20) * g_lotstep_400, gi_348); + } + if (ld_ret_4 > MaxLots) ld_ret_4 = MaxLots; + if (ld_ret_4 < g_minlot_376) ld_ret_4 = g_minlot_376; + if (ld_ret_4 > g_maxlot_368) ld_ret_4 = g_maxlot_368; + return (ld_ret_4); +} + +int OpenOrder(int a_cmd_0, int a_magic_4, string a_comment_8, double ad_16, double a_price_24 = 0.0) { + color l_color_36; + int l_ticket_72; + int l_error_76; + double ld_80; + if (a_cmd_0 > OP_SELL && a_price_24 == 0.0) return (-1); + int l_cmd_32 = a_cmd_0 % 2; + if (ad_16 < g_minlot_376) ad_16 = g_minlot_376; + else + if (ad_16 > g_maxlot_368) ad_16 = g_maxlot_368; + if (AccountFreeMarginCheck(g_symbol_416, l_cmd_32, ad_16) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) { + if (WriteLog) Print("OpenOrder: you don\'t have free margin."); + return (-1); + } + if (l_cmd_32 == OP_BUY) l_color_36 = ColorBuy; + else l_color_36 = ColorSell; + RefreshRates(); + double ld_40 = NormalizeDouble(MarketInfo(g_symbol_416, MODE_STOPLEVEL) * Point, Digits); + double ld_48 = NormalizeDouble(Ask, Digits); + double ld_56 = NormalizeDouble(Bid, Digits); + switch (a_cmd_0) { + case OP_BUY: + a_price_24 = ld_48; + break; + case OP_SELL: + a_price_24 = ld_56; + break; + case OP_BUYLIMIT: + if (a_price_24 >= ld_48) { + a_price_24 = ld_48; + a_cmd_0 = 0; + } else + if (NormalizeDouble(ld_48 - a_price_24, Digits) < ld_40) return (-1); + break; + case OP_SELLLIMIT: + if (a_price_24 <= ld_56) { + a_price_24 = ld_56; + a_cmd_0 = 1; + } else + if (NormalizeDouble(a_price_24 - ld_56, Digits) < ld_40) return (-1); + break; + case OP_BUYSTOP: + if (a_price_24 <= ld_48) { + a_price_24 = ld_48; + a_cmd_0 = 0; + } else + if (NormalizeDouble(a_price_24 - ld_48, Digits) < ld_40) return (-1); + break; + case OP_SELLSTOP: + if (a_price_24 >= ld_56) { + a_price_24 = ld_56; + a_cmd_0 = 1; + } else + if (NormalizeDouble(ld_56 - a_price_24, Digits) < ld_40) return (-1); + break; + default: + return (-1); + } + int li_68 = gi_320; + while (li_68 > 0) { + while (!IsTradeAllowed()) Sleep(1000); + l_ticket_72 = OrderSend(g_symbol_416, a_cmd_0, ad_16, a_price_24, g_slippage_356, 0, 0, a_comment_8, a_magic_4, 0, l_color_36); + Sleep(MathRand() / 1000); + if (l_ticket_72 < 0) { + l_error_76 = GetLastError(); + if (WriteLog) { + Print("OpenOrder: OrderSend(", OrderTypeToStr(a_cmd_0), ") error = ", ErrorDescription(l_error_76)); + Print("OpenOrder: order ", g_symbol_416, " ", OrderTypeToStr(a_cmd_0), " lot = ", DoubleToStr(ad_16, 8), " op = ", DoubleToStr(a_price_24, 8), " slippage = ", g_slippage_356); + } + if (l_error_76 != 136/* OFF_QUOTES */) break; + if (!(gi_316)) break; + Sleep(6000); + RefreshRates(); + if (a_cmd_0 == OP_BUY) ld_80 = NormalizeDouble(Ask, Digits); + else ld_80 = NormalizeDouble(Bid, Digits); + if (NormalizeDouble(MathAbs((ld_80 - a_price_24) / gd_360), 0) > gi_324) break; + a_price_24 = ld_80; + li_68--; + if (li_68 > 0) + if (WriteLog) Print("... Possible to open order."); + ad_16 = NormalizeDouble(ad_16 / 2.0, gi_348); + if (ad_16 < g_minlot_376) ad_16 = g_minlot_376; + } else { + if (OrderSelect(l_ticket_72, SELECT_BY_TICKET)) a_price_24 = OrderOpenPrice(); + if (SendEmail) { + SendMail(gs_336, StringConcatenate("GPS Forex Robot trade Information\nCurrency Pair: ", StringSubstr(g_symbol_416, 0, 6), + "\nTime: ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS), + "\nOrder Type: ", OrderTypeToStr(a_cmd_0), + "\nPrice: ", DoubleToStr(a_price_24, Digits), + "\nLot size: ", DoubleToStr(ad_16, gi_348), + "\nEvent: Trade Opened", + "\n\nCurrent Balance: ", DoubleToStr(AccountBalance(), 2), " ", gs_424, + "\nCurrent Equity: ", DoubleToStr(AccountEquity(), 2), " ", gs_424)); + } + if (!(SoundAlert)) break; + PlaySound(SoundFileAtOpen); + break; + } + } + return (l_ticket_72); +} + +int CloseOrder(int a_ticket_0, double a_lots_4, int ai_12, int a_slippage_16) { + color l_color_20; + double l_price_40; + bool l_ord_close_48; + int l_error_52; + bool li_56; + if (ai_12 == 0) l_color_20 = ColorBuy; + else l_color_20 = ColorSell; + int l_count_24 = 0; + int l_count_28 = 0; + int l_count_32 = 0; + int l_count_36 = 0; + while (true) { + while (!IsTradeAllowed()) Sleep(1000); + RefreshRates(); + if (ai_12 == 0) l_price_40 = NormalizeDouble(Bid, Digits); + else l_price_40 = NormalizeDouble(Ask, Digits); + l_ord_close_48 = OrderClose(a_ticket_0, a_lots_4, l_price_40, a_slippage_16, l_color_20); + if (!l_ord_close_48) { + l_error_52 = GetLastError(); + if (WriteLog) Print(StringConcatenate("OrderClose(", OrderTypeToStr(ai_12), ",", DoubleToStr(a_ticket_0, 0), ") error = ", ErrorDescription(l_error_52))); + li_56 = FALSE; + switch (l_error_52) { + case 0/* NO_ERROR */: + Sleep(10000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 1/* NO_RESULT */: break; + case 2/* COMMON_ERROR */: break; + case 3/* INVALID_TRADE_PARAMETERS */: break; + case 4/* SERVER_BUSY */: break; + case 5/* OLD_VERSION */: break; + case 6/* NO_CONNECTION */: + Sleep(10000); + if (IsConnected()) li_56 = TRUE; + break; + case 7/* NOT_ENOUGH_RIGHTS */: break; + case 8/* TOO_FREQUENT_REQUESTS */: break; + case 9/* MALFUNCTIONAL_TRADE */: break; + case 64/* ACCOUNT_DISABLED */: break; + case 65/* INVALID_ACCOUNT */: break; + case 128/* TRADE_TIMEOUT */: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 129/* INVALID_PRICE */: + Sleep(6000); + l_count_24++; + if (l_count_24 <= 3) li_56 = TRUE; + break; + case 130/* INVALID_STOPS */: + Sleep(6000); + l_count_28++; + if (l_count_28 <= 3) li_56 = TRUE; + break; + case 131/* INVALID_TRADE_VOLUME */: break; + case 132/* MARKET_CLOSED */: break; + case 133/* TRADE_DISABLED */: break; + case 134/* NOT_ENOUGH_MONEY */: break; + case 135/* PRICE_CHANGED */: + li_56 = TRUE; + break; + case 136/* OFF_QUOTES */: + Sleep(6000); + li_56 = TRUE; + break; + case 137/* BROKER_BUSY */: + Sleep(20000); + l_count_32++; + if (l_count_32 <= 3) li_56 = TRUE; + break; + case 138/* REQUOTE */: + l_count_36++; + if (l_count_36 <= 3) li_56 = TRUE; + break; + case 139/* ORDER_LOCKED */: break; + case 140/* LONG_POSITIONS_ONLY_ALLOWED */: break; + case 141/* TOO_MANY_REQUESTS */: break; + case 142: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 143: + Sleep(70000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + break; + case 144: break; + case 145/* TRADE_MODIFY_DENIED */: + Sleep(20000); + li_56 = TRUE; + break; + case 146/* TRADE_CONTEXT_BUSY */: + while (IsTradeContextBusy()) Sleep(1000); + li_56 = TRUE; + break; + case 147/* ERR_TRADE_EXPIRATION_DENIED */: break; + case 148/* ERR_TRADE_TOO_MANY_ORDERS */: break; + case 149/* ? */: break; + case 150: break; + case 4000/* NO_MQLERROR */: + Sleep(10000); + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) + if (OrderCloseTime() == 0) li_56 = TRUE; + case 4051/* INVALID_FUNCTION_PARAMETER_VALUE */: break; + case 4062/* STRING_PARAMETER_EXPECTED */: break; + case 4063/* INTEGER_PARAMETER_EXPECTED */: break; + case 4064/* DOUBLE_PARAMETER_EXPECTED */: break; + case 4105/* NO_ORDER_SELECTED */: break; + case 4106/* UNKNOWN_SYMBOL */: break; + case 4107/* INVALID_PRICE_PARAM */: break; + case 4108/* INVALID_TICKET */: break; + case 4109/* TRADE_NOT_ALLOWED */: break; + case 4110/* LONGS__NOT_ALLOWED */: break; + case 4111/* SHORTS_NOT_ALLOWED */: break; + } + if (!(li_56)) break; + continue; + } + if (OrderSelect(a_ticket_0, SELECT_BY_TICKET)) l_price_40 = OrderClosePrice(); + if (SendEmail) { + SendMail(gs_336, StringConcatenate("GPS Forex Robot trade Information\nCurrency Pair: ", StringSubstr(g_symbol_416, 0, 6), + "\nTime: ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES|TIME_SECONDS), + "\nOrder Type: ", OrderTypeToStr(ai_12), + "\nPrice: ", DoubleToStr(l_price_40, Digits), + "\nLot size: ", DoubleToStr(a_lots_4, gi_348), + "\nEvent: Trade Closed", + "\n\nCurrent Balance: ", DoubleToStr(AccountBalance(), 2), " ", gs_424, + "\nCurrent Equity: ", DoubleToStr(AccountEquity(), 2), " ", gs_424)); + } + if (!(SoundAlert)) break; + PlaySound(SoundFileAtClose); + break; + } + return (l_ord_close_48); +} + +int HaveOrdersInDay(int a_cmd_0, int a_magic_4, int ai_8) { + int l_cmd_24; + int l_count_12 = 0; + int li_16 = OrdersTotal() - 1; + for (int l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20--) { + if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_TRADES)) { + if (WriteLog) Print(StringConcatenate("HaveOrdersInDay: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_4) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_24 = OrderType(); + if (a_cmd_0 == -4) { + if (l_cmd_24 % 2 != 0) continue; + } else { + if (a_cmd_0 == -5) { + if (l_cmd_24 % 2 != 1) continue; + } else { + if (a_cmd_0 == -3) { + if (l_cmd_24 <= OP_SELL) continue; + } else { + if (a_cmd_0 == -2) { + if (l_cmd_24 > OP_SELL) continue; + } else { + if (a_cmd_0 >= OP_BUY) + if (l_cmd_24 != a_cmd_0) continue; + } + } + } + } + if (OrderOpenTime() >= ai_8) l_count_12++; + } + } + } + } + if (l_count_12 == 0) { + li_16 = OrdersHistoryTotal() - 1; + for (l_pos_20 = li_16; l_pos_20 >= 0; l_pos_20--) { + if (!OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY)) { + if (WriteLog) Print(StringConcatenate("HaveOrdersInDay: OrderSelect_2() error = ", ErrorDescription(GetLastError()))); + } else { + if (OrderMagicNumber() == a_magic_4) { + if (OrderSymbol() == g_symbol_416) { + l_cmd_24 = OrderType(); + if (a_cmd_0 == -4) { + if (l_cmd_24 % 2 != 0) continue; + } else { + if (a_cmd_0 == -5) { + if (l_cmd_24 % 2 != 1) continue; + } else { + if (a_cmd_0 == -3) { + if (l_cmd_24 <= OP_SELL) continue; + } else { + if (a_cmd_0 == -2) { + if (l_cmd_24 > OP_SELL) continue; + } else { + if (a_cmd_0 >= OP_BUY) + if (l_cmd_24 != a_cmd_0) continue; + } + } + } + } + if (OrderOpenTime() < ai_8) break; + l_count_12++; + } + } + } + } + } + return (l_count_12); +} + +void WatchReverseAfterSL(int ai_0) { + int l_magic_12; + int l_datetime_16; + double ld_20; + int li_4 = OrdersHistoryTotal() - 1; + for (int l_pos_8 = li_4; l_pos_8 >= 0; l_pos_8--) { + if (!OrderSelect(l_pos_8, SELECT_BY_POS, MODE_HISTORY)) { + if (WriteLog) Print(StringConcatenate("WatchReverseAfterSL: OrderSelect() error = ", ErrorDescription(GetLastError()))); + } else { + l_magic_12 = OrderMagicNumber(); + if (l_magic_12 == gia_484[ai_0]) break; + if (l_magic_12 == gia_460[ai_0]) { + if (OrderSymbol() == g_symbol_416) { + if (OrderProfit() >= 0.0) break; + l_datetime_16 = OrderCloseTime(); + if (TimeHour(l_datetime_16) != Hour()) break; + if (TimeMinute(l_datetime_16) != Minute()) break; + if (TimeDay(l_datetime_16) != Day()) break; + if (TimeMonth(l_datetime_16) != Month()) break; + ld_20 = NormalizeDouble(OrderLots() * gda_480[ai_0], gi_348); + if (ld_20 > MaxLots) ld_20 = MaxLots; + if (ld_20 < g_minlot_376) ld_20 = g_minlot_376; + if (ld_20 > g_maxlot_368) ld_20 = g_maxlot_368; + OpenOrder(MathAbs(gia_464[ai_0] - 1), gia_484[ai_0], ExpertComment, ld_20); + return; + } + } + } + } +} + +bool AutoGMTOffset(int &ai_0) { + int li_4 = GetGMT(); + if (li_4 < 0) return (FALSE); + int li_8 = TimeCurrent() - li_4; + ai_0 = MathFloor((li_8 + 1800) / 3600); + return (TRUE); +} + +int SetCommentPrint(string as_0, string as_8 = "") { + Comment("\n\n" + "GPS FOREX ROBOT" + + "\n" + + "www.gpsforexrobot.com" + + "\n\n" + as_0); + if (as_8 != "") { + if (as_8 == "comment") Print(as_0); + else Print(as_8); + } + return (1); +} + +int PrintInformation() { + string ls_0; + if (gi_496 == 1) { + if (IsDemo()) ls_0 = "Demo"; + else ls_0 = "Real"; + SetCommentPrint("AUTHENTICATION STATUS: " + + "\n" + + gs_520 + + "\n" + + "---------------------------------------------------" + + "\n" + + "GENERAL INFORMATION:" + + "\n" + + "Broker Company: " + AccountCompany() + + "\n" + + "Terminal Company: " + TerminalCompany() + + "\n" + + "Server Name: " + AccountServer() + + "\n" + + "Current Server Time: " + TimeToStr(TimeCurrent(), TIME_SECONDS) + + "\n" + + "---------------------------------------------------" + + "\n" + + "ACCOUNT INFORMATION:" + + "\n" + + "Account Name: " + AccountName() + + "\n" + + "Account Number: " + AccountNumber() + + "\n" + + "Account Type: " + ls_0 + + "\n" + + "Account Leverage: 1:" + DoubleToStr(AccountLeverage(), 0) + + "\n" + + "Account Balance: " + DoubleToStr(AccountBalance(), 2) + + "\n" + + "Account Equity: " + DoubleToStr(AccountEquity(), 2) + + "\n" + + "Account Floating P/L: " + DoubleToStr(AccountProfit(), 2) + + "\n" + + "Account Currency: " + AccountCurrency() + + "\n" + + "---------------------------------------------------" + + "\n" + + "ADDITIONAL INFORMATION:" + + "\n" + + "Current Spread: " + DoubleToStr(gd_384, Digits - gi_352) + + "\n" + + "Maximum Spread: " + DoubleToStr(gd_392, Digits - gi_352) + + "\n" + + "Free Margin: " + DoubleToStr(AccountFreeMargin(), 2) + + "\n" + + "Used Margin: " + DoubleToStr(AccountMargin(), 2) + + "\n" + + "---------------------------------------------------" + + "\n" + + "GMT SETTINGS:" + + "\n" + + "GMT Offset: " + gs_512); + } else { + if (!gi_536) { + SetCommentPrint("AUTHENTICATION STATUS: " + + "\n" + + gs_520, gs_528); + gi_536 = TRUE; + } + } + return (0); +} + +int SetVariables() { + gda_508[34] = 1.00000000; + gda_508[35] = 2.00000000; + gda_508[36] = 88.00000000; + gda_508[37] = 4.00000000; + gda_508[38] = 23.00000000; + gda_508[39] = 0.00000000; + gda_508[40] = 0.00000000; + gda_508[41] = 0.00000000; + gda_508[42] = 1.00000000; + gda_508[43] = 1.00000000; + gda_508[44] = 1.00000000; + gda_508[45] = 1.00000000; + gda_508[46] = 0.00000000; + gda_508[47] = -2.00000000; + gda_508[48] = 1.00000000; + gda_508[49] = 220.00000000; + gda_508[50] = 18.00000000; + gda_508[51] = 5.00000000; + + if (gda_508[34] == 1.0) gi_160 = TRUE; + else gi_160 = FALSE; + gi_164 = gda_508[35]; + gd_172 = gda_508[36]; + gd_180 = gda_508[37]; + gi_188 = gda_508[38]; + gi_192 = gda_508[39]; + if (gda_508[40] == 1.0) gi_196 = TRUE; + else gi_196 = FALSE; + if (gda_508[41] == 1.0) gi_200 = TRUE; + else gi_200 = FALSE; + if (GMTOffset <= 0) { + if (gda_508[42] == 1.0) gi_200 = TRUE; + else gi_200 = FALSE; + } + if (gda_508[43] == 1.0) gi_204 = TRUE; + else gi_204 = FALSE; + if (gda_508[44] == 1.0) gi_208 = TRUE; + else gi_208 = FALSE; + if (gda_508[45] == 1.0) gi_212 = TRUE; + else gi_212 = FALSE; + if (GMTOffset <= 0) { + if (gda_508[46] == 1.0) gi_212 = TRUE; + else gi_212 = FALSE; + } + gi_216 = gda_508[47]; + if (gda_508[48] == 1.0) gi_220 = TRUE; + else gi_220 = FALSE; + gd_232 = gda_508[49]; + gd_240 = gda_508[50]; + gd_248 = gda_508[51]; + gba_432[0] = gi_168; + gda_436[0] = NormalizeDouble((-1.0 * gd_172) * gd_360, Digits); + gda_440[0] = NormalizeDouble(gd_180 * gd_360, Digits); + gia_444[0] = GetGMTCorrection(gi_188); + gia_448[0] = gi_192; + gba_452[0][0] = gi_196; + gba_452[0][1] = gi_200; + gba_452[0][2] = gi_204; + gba_452[0][3] = gi_208; + gba_452[0][4] = gi_212; + gia_456[0] = gi_216; + gia_464[0] = gi_220; + gia_460[0] = gi_224; + gba_468[0] = gi_228; + gda_472[0] = NormalizeDouble((-1.0 * gd_232) * gd_360, Digits); + gda_476[0] = NormalizeDouble(gd_240 * gd_360, Digits); + gda_480[0] = gd_248; + gia_484[0] = gi_256; + return (1); +} + +int Authentication() { +/* + gi_496 = GPSForexRobot(gda_508, EMail, CBReceipt, IsDemo(), AccountNumber()); + if (gi_496 == -1) { + gs_520 = "Authentication Failed [Invalid Internet Connection]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Internet Connection] [Trades are not available]"; + return (-1); + } + if (gi_496 == -2) { + gs_520 = "Authentication Failed [Invalid Internet Connection]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Internet Connection] [Trades are not available]"; + return (-2); + } + if (gi_496 == -3) { + gs_520 = "Authentication Failed [Wrong E-Mail or CBReceipt]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Wrong E-Mail or CBReceipt] [Trades are not available]"; + return (-2); + } + if (gi_496 == -4) { + gs_520 = "Authentication Failed [Invalid Real Money Account Number]\n[Trades are not available]"; + gs_528 = "Authentication Failed: [Invalid Real Money Account Number] [Trades are not available]"; + return (-2); + } + if (*/gi_496 = 1;/*) {*/ + SetVariables(); + gs_520 = "Authenticated [Trades are available]\nThank you for joining the GPS Robot Team!"; + gs_528 = "Authenticatd: [Trades are available]"; + return (1); +/* + } + return (0); +*/ +} + +int Rand(int ai_0) { + MathSrand(TimeLocal()); + return (MathRand() % ai_0); +} \ No newline at end of file diff --git a/Geo crossover_signal.mq4 b/Geo crossover_signal.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..b2ad19f19849987eda451c4652cd2fe33d9b40d7 GIT binary patch literal 66172 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 literal 0 HcmV?d00001 diff --git a/Gmacd2.mq4 b/Gmacd2.mq4 new file mode 100644 index 0000000..f008fc9 --- /dev/null +++ b/Gmacd2.mq4 @@ -0,0 +1,328 @@ + +//+------------------------------------------------------------------+ +//| GMACD#2.mq4 | +//| Copyright © 2006, MetaQuotes Software Corp. | +//| http://www.metaquotes.net | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2006, MetaQuotes Software Corp." +#property link "http://www.metaquotes.net" + +/********************************************************************* +* Author: Muhammad Hamizi Jaminan (hymns) +* Original Author: CJA +* +* Date: December 14, 2006 +* Custom Indicator: GMACD2.mq4 +* Version: 1.0.1 +* Description: Multi TimeFrame MACD Signal & MACD Graph +* +* Change Logs +* Version 1.0.1 +* - Rewriting Code. Using less variable & ObjectCreate. Reduce CPU +* Usage. Solve multiple object label show on load. +* +* Version G#MACD#2 +* - Release by CJA +**********************************************************************/ + +#property indicator_separate_window +#property indicator_buffers 7 +#property indicator_color1 Black //DarkSlateGray // HISTO +#property indicator_color2 Black //Red // inside line +#property indicator_color3 Black //Blue // inside line +#property indicator_color4 Black //Red //middle line +#property indicator_color5 Black //Blue //middle line +#property indicator_color6 Black //DarkOrange // outside line +#property indicator_color7 Black //DodgerBlue //outside line +//#property indicator_width1 2 + +//---- input parameters +extern int FastEMA=8; +extern int FFastEMA=7; +extern int FFFastEMA=6; +extern int SlowEMA=17; +extern int SSlowEMA=16; +extern int SSSlowEMA=15; +extern int SignalSMA=9; +extern int SSignalSMA=8; +extern int SSSignalSMA=7; +extern bool Show_MAJOR_TREND = false; + +//---- buffers +double ExtMapBuffer1[]; +double ExtMapBuffer2[]; +double ExtMapBuffer3[]; +double ExtMapBuffer4[]; +double ExtMapBuffer5[]; +double ExtMapBuffer6[]; +double ExtMapBuffer7[]; + + + + +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { + IndicatorShortName("GMACD2"); +//---- indicators + SetIndexStyle(0,DRAW_HISTOGRAM); + SetIndexBuffer(0,ExtMapBuffer1); + SetIndexStyle(1,DRAW_LINE); + SetIndexBuffer(1,ExtMapBuffer2); + SetIndexStyle(2,DRAW_LINE); + SetIndexBuffer(2,ExtMapBuffer3); + SetIndexStyle(3,DRAW_LINE); + SetIndexBuffer(3,ExtMapBuffer4); + SetIndexStyle(4,DRAW_LINE); + SetIndexBuffer(4,ExtMapBuffer5); + SetIndexStyle(5,DRAW_LINE); + SetIndexBuffer(5,ExtMapBuffer6); + SetIndexStyle(6,DRAW_LINE); + SetIndexBuffer(6,ExtMapBuffer7); + +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + ObjectsDeleteAll(0,OBJ_LABEL); + ObjectDelete("Label1"); ObjectDelete("Label2"); ObjectDelete("Label3"); + ObjectDelete("DataM1"); ObjectDelete("DataM5"); ObjectDelete("DataM15"); + ObjectDelete("DataM30"); ObjectDelete("DataH1"); ObjectDelete("DataH4"); + ObjectDelete("DataD1"); ObjectDelete("DataW1"); ObjectDelete("DataMN"); + ObjectDelete("Trend1"); ObjectDelete("Trend2"); ObjectDelete("Level1"); +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int start() + { + int counted_bars=IndicatorCounted(); + +//---- + for(int i=Bars;i>=0;i--){ + ExtMapBuffer2[i]=iMACD(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,i); + ExtMapBuffer3[i]=iMACD(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,i); + ExtMapBuffer4[i]=iMACD(NULL,0,FFastEMA,SSlowEMA,SSignalSMA,PRICE_CLOSE,MODE_MAIN,i); + ExtMapBuffer5[i]=iMACD(NULL,0,FFastEMA,SSlowEMA,SSignalSMA,PRICE_CLOSE,MODE_SIGNAL,i); + ExtMapBuffer6[i]=iMACD(NULL,0,FFFastEMA,SSSlowEMA,SSSignalSMA,PRICE_CLOSE,MODE_MAIN,i); + ExtMapBuffer7[i]=iMACD(NULL,0,FFFastEMA,SSSlowEMA,SSSignalSMA,PRICE_CLOSE,MODE_SIGNAL,i); + + ExtMapBuffer1[i]=ExtMapBuffer2[i] - ExtMapBuffer3[i]; + } + + double macd_M1=iMACD(NULL,PERIOD_M1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_MM1=iMACD(NULL,PERIOD_M1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + double macd_M5=iMACD(NULL,PERIOD_M5,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_MM5=iMACD(NULL,PERIOD_M5,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + double macd_M15=iMACD(NULL,PERIOD_M15,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_MM15=iMACD(NULL,PERIOD_M15,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + double macd_M30=iMACD(NULL,PERIOD_M30,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_MM30=iMACD(NULL,PERIOD_M30,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + double macd_H1=iMACD(NULL,PERIOD_H1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_HH1=iMACD(NULL,PERIOD_H1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + double macd_H4=iMACD(NULL,PERIOD_H4,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_HH4=iMACD(NULL,PERIOD_H4,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + + if (Show_MAJOR_TREND == true) + { + double macd_D1=iMACD(NULL,PERIOD_D1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_DD1=iMACD(NULL,PERIOD_D1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + double macd_W1=iMACD(NULL,PERIOD_W1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_WW1=iMACD(NULL,PERIOD_W1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + double macd_MN1=iMACD(NULL,PERIOD_MN1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_MAIN,0); + double macd_MMN1=iMACD(NULL,PERIOD_MN1,FastEMA,SlowEMA,SignalSMA,PRICE_CLOSE,MODE_SIGNAL,0); + } + + string trend_signal = "", trend_main = "", trend_level = ""; + color color_m1, color_m5, color_m15, color_m30, color_h1, color_h4, color_d1, color_w1, color_mn, + color_signal, color_main, color_level; + + // UP Data + if ((macd_M5 > macd_MM5) && (macd_M1 > macd_MM1)) { trend_signal = "TREND/UP"; color_signal = Lime;} + //Down Data + if ((macd_M5 < macd_MM5) && (macd_M1 < macd_MM1)) { trend_signal = "TREND/DN"; color_signal = Red; } + + //Consolidation Data + if ((macd_M5 < macd_MM5) && (macd_M1 > macd_MM1)) { trend_signal = "SIDEWAY"; color_signal = Orange; } + if ((macd_M5 > macd_MM5) && (macd_M1 < macd_MM1)) { trend_signal = "SIDEWAY"; color_signal = Orange; } + + if ((macd_M15 < macd_MM15) && (macd_M30 > macd_MM30) && (macd_H1 > macd_HH1)&& (macd_H4 < macd_HH4)) { trend_level = "WEAK"; color_level = Tomato; } + if ((macd_M15 > macd_MM15) && (macd_M30 < macd_MM30) && (macd_H1 < macd_HH1)&& (macd_H4 > macd_HH4)) { trend_level = "WEAK"; color_level = Tomato; } + + if ((macd_M15 < macd_MM15) && (macd_M30 > macd_MM30) && (macd_H1 < macd_HH1) && (macd_H4 < macd_HH4)) { trend_level = "MEDIUM"; color_level = Orange; } + if ((macd_M15 > macd_MM15) && (macd_M30 < macd_MM30) && (macd_H1 > macd_HH1) && (macd_H4 > macd_HH4)) { trend_level = "MEDIUM"; color_level = Orange; } + + + if ((macd_M5 > macd_MM5) && (macd_M15 > macd_MM15) && (macd_M30 > macd_MM30) && (macd_H1 < macd_HH1) && (macd_H4 > macd_HH4)) { trend_level = "MEDIUM"; color_level = Orange; } + if ((macd_M5 < macd_MM5) && (macd_M15 < macd_MM15) && (macd_M30 < macd_MM30) && (macd_H1 >macd_HH1) && (macd_H4 < macd_HH4)) { trend_level = "MEDIUM"; color_level = Orange; } + + if ((macd_M15 < macd_MM15) && (macd_M30 > macd_MM30) && (macd_H1 > macd_HH1)) { trend_main = "TREND/UP"; color_main = YellowGreen; } + if ((macd_M15 > macd_MM15) && (macd_M30 < macd_MM30) && (macd_H1 < macd_HH1)) { trend_main = "TREND/DN"; color_main = Tomato; } + + if ((macd_M15 < macd_MM15) && (macd_M30 < macd_MM30) && (macd_H1 > macd_HH1)) { trend_main = "TREND/DN"; color_main = Tomato; } + if ((macd_M15 > macd_MM15) && (macd_M30 > macd_MM30) && (macd_H1 < macd_HH1)) { trend_main = "TREND/UP"; color_main = YellowGreen; } + + if ((macd_M15 < macd_MM15) && (macd_M30 > macd_MM30) && (macd_H1 < macd_HH1)) { trend_main = "TREND/DN"; color_main = Red; } + if ((macd_M15 > macd_MM15) && (macd_M30 < macd_MM30) && (macd_H1 > macd_HH1)) { trend_main = "TREND/UP"; color_main = Lime; } + + if ((macd_M5 < macd_MM5) && (macd_M15 < macd_MM15) && (macd_H1 > macd_HH1) && (macd_H4 > macd_HH4)) { trend_level = "WEAK"; color_level = Tomato; } + if ((macd_M5 > macd_MM5) && (macd_M15 > macd_MM15) && (macd_H1 < macd_HH1) && (macd_H4 < macd_HH4)) { trend_level = "WEAK"; color_level = Tomato; } + + if ((macd_M15 > macd_MM15) && (macd_H1 > macd_HH1) && (macd_M30 > macd_MM30) && (macd_H4 < macd_HH4)) { trend_level = "MEDIUM"; color_level = Orange; } + if ((macd_M15 < macd_MM15) && (macd_H1 < macd_HH1) && (macd_M30 < macd_MM30) && (macd_H4 > macd_HH4)) { trend_level = "MEDIUM"; color_level = Orange; } + + if ((macd_M15 > macd_MM15) && (macd_H1 > macd_HH1) && (macd_M30 > macd_MM30) && (macd_H4 > macd_HH4)) { trend_level = "STRONG"; color_level = Yellow; } + if ((macd_M15 < macd_MM15) && (macd_H1 < macd_HH1) && (macd_M30 < macd_MM30) && (macd_H4 < macd_HH4)) { trend_level = "STRONG"; color_level = Yellow; } + + if ((macd_M15 > macd_MM15) && (macd_H1 > macd_HH1) && (macd_M30 > macd_MM30) && (macd_H4 > macd_HH4)) { trend_main = "TREND/UP"; color_main = Lime; } + if ((macd_M15 < macd_MM15) && (macd_H1 < macd_HH1) && (macd_M30 < macd_MM30) && (macd_H4 < macd_HH4)) { trend_main = "TREND/DN"; color_main = Red; } + + + if ((macd_M15 > macd_MM15) && (macd_H1 > macd_HH1) && (macd_M30 > macd_MM30) && (macd_H4 < macd_HH4)) { trend_main = "TREND/UP"; color_main = Lime; } + if ((macd_M15 < macd_MM15) && (macd_H1 < macd_HH1) && (macd_M30 < macd_MM30) && (macd_H4 > macd_HH4)) { trend_main = "TREND/DN"; color_main = Red; } + + //MACD Direction + if ((macd_M1 > macd_MM1)) { color_m1 = Lime; } + if ((macd_M1 < macd_MM1)) { color_m1 = Red; } + + if ((macd_M5 > macd_MM5)) { color_m5 = Lime; } + if ((macd_M5 < macd_MM5)) { color_m5 = Red; } + + if ((macd_M15 > macd_MM15)) { color_m15 = Lime; } + if ((macd_M15 < macd_MM15)) { color_m15 = Red; } + + if ((macd_M30 > macd_MM30)) { color_m30 = Lime; } + if ((macd_M30 < macd_MM30)) { color_m30 = Red; } + + if ((macd_H1 > macd_HH1)) { color_h1 = Lime; } + if ((macd_H1 < macd_HH1)) { color_h1 = Red; } + + if ((macd_H4 > macd_HH4)) { color_h4 = Lime; } + if ((macd_H4 < macd_HH4)) { color_h4 = Red; } + + if (Show_MAJOR_TREND == true) + { + if ((macd_D1 > macd_DD1)) { color_d1 = Lime; } + if ((macd_D1 < macd_DD1)) { color_d1 = Red; } + + if ((macd_W1 > macd_WW1)) { color_w1 = Lime; } + if ((macd_W1 < macd_WW1)) { color_w1 = Red; } + + if ((macd_MN1 > macd_MMN1)) { color_mn = Lime; } + if ((macd_MN1 < macd_MMN1)) { color_mn = Red; } + } + + //Signal Labels + ObjectCreate("Label1", OBJ_LABEL, WindowFind("GMACD2"), 0, 0); + ObjectSetText("Label1","SIGNAL",8, "Arial Bold", Silver); + ObjectSet("Label1", OBJPROP_CORNER, 0); + ObjectSet("Label1", OBJPROP_XDISTANCE, 5); + ObjectSet("Label1", OBJPROP_YDISTANCE, 15); + + //MACD Direction M1-M5 + ObjectCreate("DataM1", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//M1 SIGNAL + ObjectSetText("DataM1","M1",9, "Arial Bold", color_m1); + ObjectSet("DataM1", OBJPROP_CORNER, 0); + ObjectSet("DataM1", OBJPROP_XDISTANCE, 50); + ObjectSet("DataM1", OBJPROP_YDISTANCE, 15); + + ObjectCreate("DataM5", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//M5 SIGNAL + ObjectSetText("DataM5","M5",9, "Arial Bold", color_m5); + ObjectSet("DataM5", OBJPROP_CORNER, 0); + ObjectSet("DataM5", OBJPROP_XDISTANCE, 75); + ObjectSet("DataM5", OBJPROP_YDISTANCE, 15); + + //M1 & M5 TREND Data + ObjectCreate("Trend1", OBJ_LABEL, WindowFind("GMACD2"), 0, 0); + ObjectSetText("Trend1",trend_signal,12, "Arial Bold", color_signal); + ObjectSet("Trend1", OBJPROP_CORNER, 0); + ObjectSet("Trend1", OBJPROP_XDISTANCE, 100); + ObjectSet("Trend1", OBJPROP_YDISTANCE, 15); + + //Main Trend Label + ObjectCreate("Label2", OBJ_LABEL, WindowFind("GMACD2"), 0, 0); + ObjectSetText("Label2","MAIN TREND", 8, "Arial Bold", Silver); + ObjectSet("Label2", OBJPROP_CORNER, 0); + ObjectSet("Label2", OBJPROP_XDISTANCE, 190); + ObjectSet("Label2", OBJPROP_YDISTANCE, 15); + + //MACD Direction M15-H4 + ObjectCreate("DataM15", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//M15 SIGNAL + ObjectSetText("DataM15","M15",9, "Arial Bold", color_m15); + ObjectSet("DataM15", OBJPROP_CORNER, 0); + ObjectSet("DataM15", OBJPROP_XDISTANCE,260); + ObjectSet("DataM15", OBJPROP_YDISTANCE, 15); + + ObjectCreate("DataM30", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//M30 SIGNAL + ObjectSetText("DataM30","M30",9, "Arial Bold", color_m30); + ObjectSet("DataM30", OBJPROP_CORNER, 0); + ObjectSet("DataM30", OBJPROP_XDISTANCE, 290); + ObjectSet("DataM30", OBJPROP_YDISTANCE, 15); + + ObjectCreate("DataH1", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//H1 SIGNAL + ObjectSetText("DataH1","H1",9, "Arial Bold", color_h1); + ObjectSet("DataH1", OBJPROP_CORNER, 0); + ObjectSet("DataH1", OBJPROP_XDISTANCE, 320); + ObjectSet("DataH1", OBJPROP_YDISTANCE, 15); + + ObjectCreate("DataH4", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//H4 SIGNAL + ObjectSetText("DataH4","H4",9, "Arial Bold", color_h4); + ObjectSet("DataH4", OBJPROP_CORNER, 0); + ObjectSet("DataH4", OBJPROP_XDISTANCE, 340); + ObjectSet("DataH4", OBJPROP_YDISTANCE, 15); + + //M15 - H4 TREND Data + ObjectCreate("Trend2", OBJ_LABEL, WindowFind("GMACD2"), 0, 0); + ObjectSetText("Trend2",trend_main,12, "Arial Bold", color_main); + ObjectSet("Trend2", OBJPROP_CORNER, 0); + ObjectSet("Trend2", OBJPROP_XDISTANCE, 365); + ObjectSet("Trend2", OBJPROP_YDISTANCE, 15); + + //Level Data + ObjectCreate("Level1", OBJ_LABEL, WindowFind("GMACD2"), 0, 0); + ObjectSetText("Level1",trend_level,8, "Arial Bold", color_level); + ObjectSet("Level1", OBJPROP_CORNER, 0); + ObjectSet("Level1", OBJPROP_XDISTANCE,455); + ObjectSet("Level1", OBJPROP_YDISTANCE, 15); + + if (Show_MAJOR_TREND == true) + { + ObjectCreate("Label3", OBJ_LABEL, WindowFind("GMACD2"), 0, 0); + ObjectSetText("Label3","MAJOR TREND", 8, "Arial Bold", Silver); + ObjectSet("Label3", OBJPROP_CORNER, 0); + ObjectSet("Label3", OBJPROP_XDISTANCE, 805); + ObjectSet("Label3", OBJPROP_YDISTANCE, 4); + + ObjectCreate("DataD1", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//D1 SIGNAL + ObjectSetText("DataD1","D1",9, "Arial Bold", color_d1); + ObjectSet("DataD1", OBJPROP_CORNER, 0); + ObjectSet("DataD1", OBJPROP_XDISTANCE, 885); + ObjectSet("DataD1", OBJPROP_YDISTANCE, 4); + + ObjectCreate("DataW1", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//W1 SIGNAL + ObjectSetText("DataW1","W1",9, "Arial Bold", color_w1); + ObjectSet("DataW1", OBJPROP_CORNER, 0); + ObjectSet("DataW1", OBJPROP_XDISTANCE, 905); + ObjectSet("DataW1", OBJPROP_YDISTANCE, 4); + + ObjectCreate("DataMN", OBJ_LABEL, WindowFind("GMACD2"), 0, 0);//MN SIGNAL + ObjectSetText("DataMN","MN",9, "Arial Bold", color_mn); + ObjectSet("DataMN", OBJPROP_CORNER, 0); + ObjectSet("DataMN", OBJPROP_XDISTANCE, 930); + ObjectSet("DataMN", OBJPROP_YDISTANCE, 4); + } + +} +//---- + return(0); + +//+------------------------------------------------------------------+ \ No newline at end of file diff --git a/HMA Trend Arrows TT.mq4 b/HMA Trend Arrows TT.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..4c10eacfc6e698c1d15056d18530ccfb022db1c3 GIT binary patch literal 13994 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/HalfTrend-1.02.mq4 b/HalfTrend-1.02.mq4 new file mode 100644 index 0000000..4970693 --- /dev/null +++ b/HalfTrend-1.02.mq4 @@ -0,0 +1,219 @@ +//+----------------------------------------------------------------------+ +//| HalfTrend.mq4 | +//| Copyright 2014, FxProSystems.com | +//| http://fxprosystems.com/ | +//+----------------------------------------------------------------------+ +#property copyright "Copyright © 2015 FXProSystems.com" +#property link "http://fxprosystems.com/" +#property indicator_chart_window +#property indicator_buffers 6 +#property indicator_color1 DodgerBlue // up[] +#property indicator_width1 2 +#property indicator_color2 Red // down[] +#property indicator_width2 2 +#property indicator_color3 DodgerBlue // atrlo[] +#property indicator_width3 1 +#property indicator_color4 Red // atrhi[] +#property indicator_width4 1 +#property indicator_color5 DodgerBlue // arrup[] +#property indicator_width5 1 +#property indicator_color6 Red // arrdwn[] +#property indicator_width6 1 + + +extern int Amplitude = 2; +extern bool ShowBars = true; +extern bool ShowArrows = true; +extern bool alertsOn = true; +extern bool alertsOnCurrent = false; +extern bool alertsMessage = true; +extern bool alertsSound = true; +extern bool alertsEmail = false; + +bool nexttrend; +double minhighprice,maxlowprice; +double up[],down[],atrlo[],atrhi[],trend[]; +double arrup[],arrdwn[]; +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int init() + { + Comment(" Copyright © 2015 | FXProSystems.com"); + IndicatorBuffers(7); // +1 buffer - trend[] + + SetIndexBuffer(0,up); + SetIndexStyle(0,DRAW_LINE); + SetIndexBuffer(1,down); + SetIndexStyle(1,DRAW_LINE); + SetIndexBuffer(2,atrlo); + SetIndexBuffer(3,atrhi); + SetIndexBuffer(6,trend); + SetIndexBuffer(4,arrup); + SetIndexBuffer(5,arrdwn); + SetIndexEmptyValue(0,0.0); + SetIndexEmptyValue(1,0.0); + SetIndexEmptyValue(6,0.0); + + if(ShowBars) + { + SetIndexStyle(2,DRAW_HISTOGRAM, STYLE_SOLID); + SetIndexStyle(3,DRAW_HISTOGRAM, STYLE_SOLID); + } + else + { + SetIndexStyle(2,DRAW_NONE); + SetIndexStyle(3,DRAW_NONE); + } + if(ShowArrows) + { + SetIndexStyle(4,DRAW_ARROW,STYLE_SOLID); SetIndexArrow(4,233); + SetIndexStyle(5,DRAW_ARROW,STYLE_SOLID); SetIndexArrow(5,234); + } + else + { + SetIndexStyle(4,DRAW_NONE); + SetIndexStyle(5,DRAW_NONE); + } + + + nexttrend=0; + minhighprice= High[Bars-1]; + maxlowprice = Low[Bars-1]; + return (0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +class CFix { } ExtFix; +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int start() + { + double atr,lowprice_i,highprice_i,lowma,highma; + int workbar=0; + int counted_bars=IndicatorCounted(); + if(counted_bars<0) return(-1); + if(counted_bars>0) counted_bars--; + int limit = MathMin(Bars-counted_bars,Bars-1); + + for(int i=Bars-1; i>=0; i--) + { + lowprice_i=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,Amplitude,i)); + highprice_i=iHigh(Symbol(),Period(),iHighest(Symbol(),Period(),MODE_HIGH,Amplitude,i)); + lowma=NormalizeDouble(iMA(NULL,0,Amplitude,0,MODE_SMA,PRICE_LOW,i),Digits()); + highma=NormalizeDouble(iMA(NULL,0,Amplitude,0,MODE_SMA,PRICE_HIGH,i),Digits()); + trend[i]=trend[i+1]; + atr=iATR(Symbol(),0,100,i)/2; + + arrup[i] = EMPTY_VALUE; + arrdwn[i] = EMPTY_VALUE; + if(nexttrend==1) + { + maxlowprice=MathMax(lowprice_i,maxlowprice); + + if(highmaminhighprice && Close[i]>High[i+1]) + { + trend[i]=0.0; + nexttrend=1; + maxlowprice=lowprice_i; + } + } + if(trend[i]==0.0) + { + if(trend[i+1]!=0.0) + { + up[i]=down[i+1]; + up[i+1]=up[i]; + arrup[i] = up[i] - 2*atr; + } + else + { + up[i]=MathMax(maxlowprice,up[i+1]); + } + atrhi[i] = up[i] - atr; + atrlo[i] = up[i]; + down[i]=0.0; + } + else + { + if(trend[i+1]!=1.0) + { + down[i]=up[i+1]; + down[i+1]=down[i]; + arrdwn[i] = down[i] + 2*atr; + } + else + { + down[i]=MathMin(minhighprice,down[i+1]); + } + atrhi[i] = down[i] + atr; + atrlo[i] = down[i]; + up[i]=0.0; + } + } + manageAlerts(); + return (0); + } +//+------------------------------------------------------------------+ +//+------------------------------------------------------------------- +//| +//+------------------------------------------------------------------- +// +// +// +// +// + +void manageAlerts() +{ + if (alertsOn) + { + if (alertsOnCurrent) + int whichBar = 0; + else whichBar = 1; + if (arrup[whichBar] != EMPTY_VALUE) doAlert(whichBar,"up"); + if (arrdwn[whichBar] != EMPTY_VALUE) doAlert(whichBar,"down"); + } +} + +// +// +// +// +// + +void doAlert(int forBar, string doWhat) +{ + static string previousAlert="nothing"; + static datetime previousTime; + string message; + + if (previousAlert != doWhat || previousTime != Time[forBar]) { + previousAlert = doWhat; + previousTime = Time[forBar]; + + // + // + // + // + // + + message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," HalfTrend signal ",doWhat); + if (alertsMessage) Alert(message); + if (alertsEmail) SendMail(StringConcatenate(Symbol(),"HalfTrend "),message); + if (alertsSound) PlaySound("alert2.wav"); + } +} \ No newline at end of file diff --git a/HamaSystem.mq4 b/HamaSystem.mq4 new file mode 100644 index 0000000..9f1c832 --- /dev/null +++ b/HamaSystem.mq4 @@ -0,0 +1,93 @@ +#property copyright "Personalized for HAMA PAD Approach - Copyright © 2009" +#property link "http://www.forex-tsd.com" +// modified by keekkenen 2009-02-15 +#property indicator_chart_window +#property indicator_buffers 6 +#property indicator_color1 Red +#property indicator_color2 RoyalBlue +#property indicator_color3 Red +#property indicator_color4 RoyalBlue +#property indicator_color5 RoyalBlue +#property indicator_color6 Red + +int MaPeriod = 20; +double buf0[], buf1[], buf2[], buf3[], buf4[], buf5[]; +string Copyright = ""; +//+------------------------------------------------------------------+ +int init(){ + SetIndexStyle(0,DRAW_HISTOGRAM, 0, 3); + SetIndexBuffer(0, buf0); + SetIndexStyle(1,DRAW_HISTOGRAM, 0, 3); + SetIndexBuffer(1, buf1); + SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 1); + SetIndexBuffer(2, buf2); + SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID, 1); + SetIndexBuffer(3, buf3); + SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 0); + SetIndexBuffer(4, buf4); + SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 0); + SetIndexBuffer(5, buf5); + + setLabel(Copyright,Copyright,RoyalBlue,2,5,10,false,9,"Lucida Handwriting"); + return(0); +} +//+------------------------------------------------------------------+ +int deinit(){ObjectDelete(Copyright);} +//+------------------------------------------------------------------+ +int start() { + int ExtCountedBars = 0; + double maOpen, maClose, maLow, maHigh; + double haOpen, haHigh, haLow, haClose; + if(Bars<=10) return(0); + ExtCountedBars=IndicatorCounted(); + if (ExtCountedBars<0) return(-1); + if (ExtCountedBars>0) ExtCountedBars--; + int pos=Bars-ExtCountedBars-1; + while(pos>=0){ + maOpen=iMA(NULL,0,MaPeriod,0,MODE_EMA,MODE_OPEN,pos); + maClose=iMA(NULL,0,MaPeriod,0,MODE_EMA,MODE_CLOSE,pos); + maLow=iMA(NULL,0,MaPeriod,0,MODE_EMA,MODE_LOW,pos); + maHigh=iMA(NULL,0,MaPeriod,0,MODE_EMA,MODE_HIGH,pos); + + haOpen=(buf0[pos+1]+buf1[pos+1])/2.; + haClose=(maOpen+maHigh+maLow+maClose)/4.; + + buf0[pos]=haOpen; + buf1[pos]=haClose; + + if (buf0[pos] < buf1[pos]) { + buf2[pos] = Low[pos]; + buf3[pos] = High[pos]; + }else{ + buf2[pos] = High[pos]; + buf3[pos] = Low[pos]; + } + pos--; + } + for (int i = Bars-ExtCountedBars-1; i >= 0; i--) { + buf4[i] = iMA(NULL, 0, MaPeriod, 0, MODE_EMA, PRICE_HIGH, i); + buf5[i] = iMA(NULL, 0, MaPeriod, 0, MODE_EMA, PRICE_LOW, i); + } + return(0); +} +//+------------------------------------------------------------------+ +void setLabel(string name, string text, color col, int corner, + int x, int y, bool back = false, int fontsize = 9, + string fontname = "MS Sans Serif") { + if (ObjectFind(name)==-1){ + // ñîçäàíèå îáúåêòà, åñëè íå ñîçäàâàëñÿ èëè áûë óäàëåí + ObjectCreate(name, OBJ_LABEL, 0, 0, 0); + ObjectSetText(name, text, fontsize, fontname, col); + ObjectSet(name, OBJPROP_CORNER, corner); + ObjectSet(name, OBJPROP_BACK,back); + ObjectSet(name, OBJPROP_XDISTANCE, x); + ObjectSet(name, OBJPROP_YDISTANCE, y); + }else{ + ObjectSetText(name, text, fontsize, fontname, col); + ObjectSet(name, OBJPROP_CORNER, corner); + ObjectSet(name, OBJPROP_BACK,back); + ObjectSet(name, OBJPROP_XDISTANCE, x); + ObjectSet(name, OBJPROP_YDISTANCE, y); + } +} + diff --git a/MACD_Histogram.mq4 b/MACD_Histogram.mq4 new file mode 100644 index 0000000..5b920b8 --- /dev/null +++ b/MACD_Histogram.mq4 @@ -0,0 +1,349 @@ +//+------------------------------------------------------------------+ +//| MACD_Histogram.mq4 | +//| Copyright © 2008, MetaQuotes Software Corp. | +//| http://www.frankie-prasetio.blogspot.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2008, MetaQuotes Software Corp." +#property link "http://www.frankie-prasetio.blogspot.com" + +#property indicator_separate_window +#property indicator_buffers 5 +#property indicator_color1 DodgerBlue +#property indicator_color2 Red +#property indicator_color3 Silver +#property indicator_color4 Lime +#property indicator_color5 Red +#property indicator_level1 0 +//---- +#define arrowsDisplacement 0.0001 +//---- input parameters +extern string separator1 = "*** MACD Settings ***"; +extern int FastMAPeriod = 12; +extern int SlowMAPeriod = 26; +extern int SignalMAPeriod = 9; +extern string separator2 = "*** Indicator Settings ***"; +extern bool drawIndicatorTrendLines = true; +extern bool drawPriceTrendLines = true; +extern bool displayAlert = true; +//---- buffers +double MACDLineBuffer[]; +double SignalLineBuffer[]; +double HistogramBuffer[]; +double bullishDivergence[]; +double bearishDivergence[]; +//---- variables +double alpha = 0; +double alpha_1 = 0; +//---- +static datetime lastAlertTime; +static string indicatorName; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() +{ + IndicatorDigits(Digits + 1); + //---- indicators + SetIndexStyle(0, DRAW_LINE); + SetIndexBuffer(0, MACDLineBuffer); + SetIndexDrawBegin(0, SlowMAPeriod); + SetIndexStyle(1, DRAW_LINE); + SetIndexBuffer(1, SignalLineBuffer); + SetIndexDrawBegin(1, SlowMAPeriod + SignalMAPeriod); + SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID,2); + SetIndexBuffer(2, HistogramBuffer); + SetIndexDrawBegin(2, SlowMAPeriod + SignalMAPeriod); + SetIndexStyle(3, DRAW_ARROW); + SetIndexArrow(3, 233); + SetIndexBuffer(3, bullishDivergence); + SetIndexStyle(4, DRAW_ARROW); + SetIndexArrow(4, 234); + SetIndexBuffer(4, bearishDivergence); + //---- name for DataWindow and indicator subwindow label + indicatorName =("MACD(" + FastMAPeriod+"," + SlowMAPeriod + "," + SignalMAPeriod + ")"); + SetIndexLabel(2, "MACD"); + SetIndexLabel(3, "Signal"); + SetIndexLabel(4, "Histogr"); + IndicatorShortName(indicatorName); + //---- + alpha = 2.0 / (SignalMAPeriod + 1.0); + alpha_1 = 1.0 - alpha; + //---- + return(0); +} +//+------------------------------------------------------------------+ +//| Custor indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { + for(int i = ObjectsTotal() - 1; i >= 0; i--) + { + string label = ObjectName(i); + if(StringSubstr(label, 0, 19) != "MACD_DivergenceLine") + continue; + ObjectDelete(label); + } + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int start() + { + int limit; + int counted_bars = IndicatorCounted(); + //---- check for possible errors + if(counted_bars < 0) + return(-1); + //---- last counted bar will be recounted + if(counted_bars > 0) + counted_bars--; + limit = Bars - counted_bars; + CalculateIndicator(counted_bars); +//---- + for(int i = limit; i >= 0; i--) + { + MACDLineBuffer[i] = iMA(NULL, 0, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i) - + iMA(NULL, 0, SlowMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i); + SignalLineBuffer[i] = alpha*MACDLineBuffer[i] + alpha_1*SignalLineBuffer[i+1]; + HistogramBuffer[i] = MACDLineBuffer[i] - SignalLineBuffer[i]; + } +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void CalculateIndicator(int countedBars) + { + for(int i = Bars - countedBars; i >= 0; i--) + { + CalculateMACD(i); + CatchBullishDivergence(i + 2); + CatchBearishDivergence(i + 2); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void CalculateMACD(int i) + { + MACDLineBuffer[i] = iMA(NULL, 0, FastMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i) - + iMA(NULL, 0, SlowMAPeriod, 0, MODE_EMA, PRICE_CLOSE, i); + SignalLineBuffer[i] = alpha*MACDLineBuffer[i] + alpha_1*SignalLineBuffer[i+1]; + HistogramBuffer[i] = MACDLineBuffer[i] - SignalLineBuffer[i]; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void CatchBullishDivergence(int shift) + { + if(IsIndicatorTrough(shift) == false) + return; + int currentTrough = shift; + int lastTrough = GetIndicatorLastTrough(shift); +//---- + if(MACDLineBuffer[currentTrough] > MACDLineBuffer[lastTrough] && + Low[currentTrough] < Low[lastTrough]) + { + bullishDivergence[currentTrough] = MACDLineBuffer[currentTrough] - + arrowsDisplacement; + //---- + if(drawPriceTrendLines == true) + DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], + Low[currentTrough], + Low[lastTrough], Lime, STYLE_SOLID); + //---- + if(drawIndicatorTrendLines == true) + DrawIndicatorTrendLine(Time[currentTrough], + Time[lastTrough], + MACDLineBuffer[currentTrough], + MACDLineBuffer[lastTrough], + Lime, STYLE_SOLID); + //---- + if(displayAlert == true) + DisplayAlert("Classical bullish divergence on: ", + currentTrough); + } +//---- + if(MACDLineBuffer[currentTrough] < MACDLineBuffer[lastTrough] && + Low[currentTrough] > Low[lastTrough]) + { + bullishDivergence[currentTrough] = MACDLineBuffer[currentTrough] - + arrowsDisplacement; + //---- + if(drawPriceTrendLines == true) + DrawPriceTrendLine(Time[currentTrough], Time[lastTrough], + Low[currentTrough], + Low[lastTrough], Lime, STYLE_DOT); + //---- + if(drawIndicatorTrendLines == true) + DrawIndicatorTrendLine(Time[currentTrough], + Time[lastTrough], + MACDLineBuffer[currentTrough], + MACDLineBuffer[lastTrough], + Lime, STYLE_DOT); + //---- + if(displayAlert == true) + DisplayAlert("Reverse bullish divergence on: ", + currentTrough); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void CatchBearishDivergence(int shift) + { + if(IsIndicatorPeak(shift) == false) + return; + int currentPeak = shift; + int lastPeak = GetIndicatorLastPeak(shift); +//---- + if(MACDLineBuffer[currentPeak] < MACDLineBuffer[lastPeak] && + High[currentPeak] > High[lastPeak]) + { + bearishDivergence[currentPeak] = MACDLineBuffer[currentPeak] + + arrowsDisplacement; + + if(drawPriceTrendLines == true) + DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], + High[currentPeak], + High[lastPeak], Red, STYLE_SOLID); + + if(drawIndicatorTrendLines == true) + DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], + MACDLineBuffer[currentPeak], + MACDLineBuffer[lastPeak], Red, STYLE_SOLID); + + if(displayAlert == true) + DisplayAlert("Classical bearish divergence on: ", + currentPeak); + } + if(MACDLineBuffer[currentPeak] > MACDLineBuffer[lastPeak] && + High[currentPeak] < High[lastPeak]) + { + bearishDivergence[currentPeak] = MACDLineBuffer[currentPeak] + + arrowsDisplacement; + //---- + if(drawPriceTrendLines == true) + DrawPriceTrendLine(Time[currentPeak], Time[lastPeak], + High[currentPeak], + High[lastPeak], Red, STYLE_DOT); + //---- + if(drawIndicatorTrendLines == true) + DrawIndicatorTrendLine(Time[currentPeak], Time[lastPeak], + MACDLineBuffer[currentPeak], + MACDLineBuffer[lastPeak], Red, STYLE_DOT); + //---- + if(displayAlert == true) + DisplayAlert("Reverse bearish divergence on: ", + currentPeak); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsIndicatorPeak(int shift) + { + if(MACDLineBuffer[shift] >= MACDLineBuffer[shift+1] && MACDLineBuffer[shift] > MACDLineBuffer[shift+2] && + MACDLineBuffer[shift] > MACDLineBuffer[shift-1]) + return(true); + else + return(false); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool IsIndicatorTrough(int shift) + { + if(MACDLineBuffer[shift] <= MACDLineBuffer[shift+1] && MACDLineBuffer[shift] < MACDLineBuffer[shift+2] && + MACDLineBuffer[shift] < MACDLineBuffer[shift-1]) + return(true); + else + return(false); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int GetIndicatorLastPeak(int shift) + { + for(int i = shift + 5; i < Bars; i++) + { + if(SignalLineBuffer[i] >= SignalLineBuffer[i+1] && SignalLineBuffer[i] >= SignalLineBuffer[i+2] && + SignalLineBuffer[i] >= SignalLineBuffer[i-1] && SignalLineBuffer[i] >= SignalLineBuffer[i-2]) + { + for(int j = i; j < Bars; j++) + { + if(MACDLineBuffer[j] >= MACDLineBuffer[j+1] && MACDLineBuffer[j] > MACDLineBuffer[j+2] && + MACDLineBuffer[j] >= MACDLineBuffer[j-1] && MACDLineBuffer[j] > MACDLineBuffer[j-2]) + return(j); + } + } + } + return(-1); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int GetIndicatorLastTrough(int shift) + { + for(int i = shift + 5; i < Bars; i++) + { + if(SignalLineBuffer[i] <= SignalLineBuffer[i+1] && SignalLineBuffer[i] <= SignalLineBuffer[i+2] && + SignalLineBuffer[i] <= SignalLineBuffer[i-1] && SignalLineBuffer[i] <= SignalLineBuffer[i-2]) + { + for (int j = i; j < Bars; j++) + { + if(MACDLineBuffer[j] <= MACDLineBuffer[j+1] && MACDLineBuffer[j] < MACDLineBuffer[j+2] && + MACDLineBuffer[j] <= MACDLineBuffer[j-1] && MACDLineBuffer[j] < MACDLineBuffer[j-2]) + return(j); + } + } + } + return(-1); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void DisplayAlert(string message, int shift) + { + if(shift <= 2 && Time[shift] != lastAlertTime) + { + lastAlertTime = Time[shift]; + Alert(message, Symbol(), " , ", Period(), " minutes chart"); + } + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void DrawPriceTrendLine(datetime x1, datetime x2, double y1, + double y2, color lineColor, double style) + { + string label = "MACD_DivergenceLine.0# " + DoubleToStr(x1, 0); + ObjectDelete(label); + ObjectCreate(label, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0); + ObjectSet(label, OBJPROP_RAY, 0); + ObjectSet(label, OBJPROP_COLOR, lineColor); + ObjectSet(label, OBJPROP_STYLE, style); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void DrawIndicatorTrendLine(datetime x1, datetime x2, double y1, + double y2, color lineColor, double style) + { + int indicatorWindow = WindowFind(indicatorName); + if(indicatorWindow < 0) + return; + string label = "MACD_DivergenceLine.0$# " + DoubleToStr(x1, 0); + ObjectDelete(label); + ObjectCreate(label, OBJ_TREND, indicatorWindow, x1, y1, x2, y2, + 0, 0); + ObjectSet(label, OBJPROP_RAY, 0); + ObjectSet(label, OBJPROP_COLOR, lineColor); + ObjectSet(label, OBJPROP_STYLE, style); + } +//+------------------------------------------------------------------+ + + + diff --git a/MetaCOT2_CIT_Absolute_Changes.mq4 b/MetaCOT2_CIT_Absolute_Changes.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..e6757ffbebad1042a786b0e98ae581bbd61aad65 GIT binary patch literal 15838 zcmd6uYfqfV8HVQrpDOh~ye3kD%3hy4umoM|!s>&fFHS`no#N-`jd~v%#OMq(2{ts*}iR@Et@>LQ9kLv!Sjb{~AhT zK71wmrk4wn>uH@^n)OsXLZ{%YPhM-* ziGH!A?Wo1S>J56oEDK!J)rs!k#Zd#nfHS)qiIrB;HK^yiuRCCrFkg#aL!gYQ&*_!6nOvdHtazkVTtY_}eP1G{$vvqp$g3b*#@}AxBn0mw%3YsKWho?%1=x zkl(b$S!?aX-h_uE?d+G@cw5`^up}$(3D=FVK5{11Vk5|&Sk-04ZEkLfOXxk?1&8;- zmN@Eh@b)5*@G7tMF~yZ^`y#X7MJZx?7oCY8eWz9LXy#*aY9ahpRD3Ib^<>){;Yob9 zb|Gx=%4pR|go=z$1O=@dO%rqMnO=k!TKz~Ib=>B@?ycHSw&aCYgzr`>3+U@vGY>${ z$73w6sSU<@oW34Q`Y)tuZzaVeNujB$PvaEMgU%XClB>$66r%W(Gos3&guph

G5ma40Hd2{^6CZj|f-7YhN!!|932TxOO17C@t0= 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 t-9rCrcg$G(LR)L+s^BhT)S$1@xQp?o&W#< literal 0 HcmV?d00001 diff --git a/MetaCOT2_CIT_Absolute_Position.mq4 b/MetaCOT2_CIT_Absolute_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..34dcf683f5a48f957fbea6b409041dc810529a31 GIT binary patch literal 14304 zcmd6uYfoFr8OP^^UsdXNI3dz5Q5r7kM%hcCaSS9V1W@cv6(x~HfDjsksqKWa*?y&d z#J2z6JZG3W7aIdr8*tope{_EkHuLUxmtFgK;r89g z?YNfPavedtuk)VHrhD&(uJ3y8v)=FPNy~lIxMO#qyP=zNNABPP3+^Y; zH@#etTwCkRY1X!QgigVy_u|<=a_0R@&p%|l<7T{8)nSR;k0tR`_h-DGTt-qmp6WwM zsV7X3*P`V4(Ea&*Wme(sXSb&jnR`^?#9L{i(Qqif9p_r{(Jha~{7YfH;s465ite^s zm;G&yoe2g*VS`Pahdm4#<$fV_Pg!4dmz(`?!5TAImqjA^*b9(tWuFeDxyynjNTh+hu zRJH{ZOp8*>-1imww?#wW{Y|5Hg@gIBP2HX9`lF}p(EX<0W6z_&k$Mh9P6g~UPk(m4 zYDcT>h-&m8leK?;CFCMHCOnZ5+C37!CP{d{r|VsvfRu z7$0<)?Papt%gjFUd_ud;{w_BgKY5~+7xURGvfZZptEkx!7dK_gm%#;pi_`|^@bEVS z!9=p-Au;b*7|gi0I@V=zJF-bU1ouUcP<_&srLW80yOkI})U$2D#!`cine%$rpP<)h z7=8(R182h<$&K@#eT{r8UL8x4M_SF|Y4n_v=8~nn)oEJzM8E$i&1Ze%5SV3JXVd*E zu0Xf>xvn_8DoVHX+sP$~Ho*7b{W`g%GqAZDOg;z1{s{30v z+TcO=iFi`R+NAYV>uiaV?Go&#;(lMVPW0SxEsyVN-nJ-4S392Swz$!D&vFj@l0YP{ z%)~JwGb-O}Qsy}F-Y0rirG(DWIThY~PK|r!( z6Xd7+db;DYDw9e5%r(tf&*ztEHHwNbvm7cqo^rj4BRF+*cJ=qQm%i}@tnj~O{WkpK ztTky`M<jx24JN3tE@*uRIGMwxOfUyPyMxpTRsx z>|`2EexLi80Bihj)7xxcva!4tPncS{*(F}`vqp@=HNZEV156|yp%#4n-_NbOC>}qFLB+ z)aKw}Blek_6)b#9J=IHkM-GWq-Kp5;^m2M3n;Cd5AX`JPBHW9l5~LGZ$lkq&Lrq?hM7xkdIG;zu{;w@p=Z;YV0Ch^DJcTSI0d_?^ng5 zJ&z|jJ9tj3`;og@t}y{-CVvs3f+HunFa83ro6enlO?EJnXZ+%|%J}-my_1##Gx}0; zx|Y8uUX(p)ag7b10a5v&rNIxzxK1p++|d?9YB%HHVvgNaDXynANC^$2ZkrB6{F{v* zy2!Vy!Rko{c&n~zo@1}`mIZW68nlqp&)duMa##3LL+vYDG=5$W9<}Sf^rtIa&?T#N z(ewZp%N@xpS}st{aOyc7GD;h7+JjDF$2X~a1U_^hTe3c+M-R+u<8qw}->sT}N7UZ< zuh74+u7T;3)im{d8UHkPA8!(Wf|hQH`t_Uxvw7_LDo$nI(->9A8r>|9HR;=!Rq2{_ zRZKI8Iz7+Np`Kf{vnQ`(Ryj~Sr8Bpn6;mjOig&Z_)_IgoGmA9-)6+$|w-npSJ%U!I zW1xyUXI4?=OwuR9^>lY9@8nf0DY{8@5borBF-pHCoUtc$bLMjUvmQW*GHEPM>Ana~ z$Vj@P$?_@l5tDMGY2gp^t`i>aI?(Yrrd7yrrohSA*_#oM@9Hee#Gdl@)O(~%xZt0d z3DiB+(BycgRhgs-Pl?)e*kfnOd_0+c=$zqG$)Y}M6z~SR5By{m<0ti1z-EkVR|KzIz2J3i_rfYMt9q>Ff1nrtEZ6 zu;?Gq_2KTR=9|T&)$-EVYP<*|*5MafLRkl}L2RF#HuO8W#~P7p>S?Xw2^~0Medxf? zl)QxT1c)O^bs#vFpKr>OQT=Yqf56KZ;z8$}zjVKl!b{Jamfnn)Wihi!tu}Li(Q5a6 zKMb7-S&!jlz7MJ`l0OlCp%XYOZ-_G(vLUPF48y99;>~7d z18GGW<`4sUZ(fht1a%Dk3SfrUC~o)=JtnXzmVPGiJHnbSM?ixz4a=?UM?Pf zTU60+WgZw3E9$kRK5j97rZ78naa-cVDDk0mXp0m@-*_iqIdT~bOmiZ%C3qjRH1j?5 ze_A?Lbd7Y%oh))7HOrTfxaF)Cx9mMV@R-xXr+8R3 z{kXBvc-VNt}FFH^!6vcZTj~=>N=$>!m3`?VHN8P_I`?# z?0GqaI(fOVD0~+5cew!$OZt`n)YW5M-PiS!uH|2K|3LUY*V$^U>-v$N-q-y@Kkk9< zijlF3sXa;Y4IU!Yh2M#5;hG9D<)d*iO&Emr-k#I7~jad{>1wAHrq5#M4pcIEgk zVf<>(@)6%+HFB@h+O-00sO3=ZfoNgt**cB+UAjd!}KpyQ|gkt{e{sckPJDf0QY_{`a6ZOU?$Vx|-KQPDqJ(YjX=sIp zi+Pvw+h9*8vDg)kJW6XmvO>HOQJShZd^=E#(Y7CPkvxztyY^Imw!g_9`&zC~*m}?= zwBhDT%{Y5cHjOS?T+C}y`hw@-_uI%V*nV8kEOZ*IQ(ZDzi%_aoW%%O{ zLdHlJqAr`O!oG;!luuRb9p6<>d0O^>p+lUGiP~GF*1or~{&I?aY9&MrzDvco5@F*` zIxD1JfcSGJ8Sg54;hOW4ZX=^V#tM%>jgnS&UgiqH=flUMs_Um!+gaYb}`V~zWm^)LH?N*{jLZKO!3d%+7HFBtfg&-!pX}Z`@$~2ZcL!XtD1Xyr7VErCabr?e zj^3r#7oyU-c-YA~X_77H@W$7ohSyae260;dka~q_S1968u32xkRmE>{_}Vo1c6Q(D z|9^meMAP!HFMVD8zL~rI^pg&K7ERB&qicFu>=BuURCP9RGX18hs!i$Jmx35}ZHDUf zpOx0JcwqX2ofL7h|J~yMeBze`^?h*Yu>Jw{f%VAKzFkjP?07GBR2i3kn?#kpH({*# hLbKM;84GZ$TqENR-$>Nc67VkLSH^)3TwEt`?Z2k4+l>GK literal 0 HcmV?d00001 diff --git a/MetaCOT2_CIT_Index.mq4 b/MetaCOT2_CIT_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..c8636491a6ad20f8ec9a6b5f21a54347232b1bb9 GIT binary patch literal 14926 zcmdU$eNP)l9>?bo|8>&6hb@&_qO=J~8}%v4l{k>15{P2Ar>azl0HItVaM&rO>Aj_U ziFfz?%-6%ruGhwp+=-Lru2FT4eOyV*mw2)Sl@KN5?+NJt@$n73WwqE;Zr^P;~mq}4M*WPoQ0FHANIn}q6az_ z!kzGW_(<2^i@t%L9q4>8(YoH3++K~W;^**iBIUo<)|>wC!;<*!g%x?++Qgms z+(6Xe6UUKmFjk_qt{r>qzSdTeYGk>mmAksD!b{P4qQ6`EWlNl$h2QlA?_QR-cXf55 z`{TH3C>ZEuM=Oa4m8=|z@ZHlLFiMy&B`1E_(mH&BJqM$8#sw_{NolfXCv({oOen2u ztqLEG@&8Ob9EHDW^|okm^jg#1sjh#Hob8Kiq=$@>MA{`#O3Kt%k^kx(YhT#5#5HzM z$=g4?5_cP-W;xPUiB5Ecbq__aHHpl3biFNH!_hi)YOU_*ms71E{y|ID4f_ToO`wZ$ zX%X8i*C{98A^YIK7*q1It2x@UR;;MYGpIJsGXd*V`ZwF<$Cp->Z}t zF0=bM$_eYX|6Oi3agvC6XSDmVe0MSYRotvfifi)a%g{o+MQbPL@Q61jf{A7?11b6D zp=5I?+CCP$C*I-C8D&$p zyrg`;uD^Y)NFOXb<(dA-r>gKk&+|@8$X3vmzYm40+_xgGh~Ek3_}{kGh6mrrl1YjXdU>$5ISo(Si#?K;-AX&qm`u9al;#kil${?!Buso*O~j9LgfO6W)8 ztP+HrT?SFxCEZ-J@8VBaR1ag-h4mc890C3JesDUbK8#EcP?ws%4mO+S94T{S&g7J zr9Mt0H1+k})W1JOi?uGGitOCXFweLZ>K zi<+mD@@wwe6o;$&G-a3U&N4L2y~4L=@xB+bPO^7`HTmyij59~ljk_MAcNv)+ONi{R zwPF&j3BGAgFwuC1Y8y*&mDu8HyeaS5y>L}LQd5@nCa9)+PIX(Q3h0|?@x*w~3%-%% zb|wEOik_8pxvuNyqPEi2vi|MsZc+D3(T}q=k5gZTdBGwcwsZYJ&*(7lsvBeeIlG>o zD#DyZE1;Igt}@(ptsok%Ag9dyoW`&qh`awpj{!K@T7GE`{fOJ_v9 zAnKNTr(aXi3>6uFjaFs3{uq9eX96?FQY!v#yeD5YBWWGSs%&dpRM2PT=$dPh+46V^ zvnPmj_LktC5p`GPxSiLeB`l1tzQjNIn)v4RgOKHRHCPAI0nutx9q}va#XaMm?h`!o zpKA5lYoe0=ZPA&b^gqO13Bel4UX5Rh~^>C;22R zT^IK&BMHopa@U*aWoXqLqHAokxz^hEnx)uxlL>4YWSxU3&w+Lm&w$X^uXyo^@+tlG zf-sg)_LcAE!+Ym3wX7`4{LjQ6?Y^hnj@>4!EZ4vlz1h4dIulkh+=1?HjOM)K-QP!o z*aqRoNG|5|O^m^%?%Vd<8u_0mL@CRZxwz!p&?du470IS}ay{i3F|9V575*URTqe

Rg)EPd5uTq1i={5Iw4_YWA zqdSx|PsOX#dCFYFt8Lvt97+o(g5!F6O_7Ig^_lz~-k*x*{<%Epe39Do$V*pGCdO^#J?jg|bS9wE@AC%~`T`>y#RP zIXlmIkr^{PB4Rtl73m#0^&&NQ8&XJ-&k%1Z*HLYjog{YB>{-j$(1cL>M>8Tk7p2K} z;0hmeq)Wf%9n)~6%8Ba4(`?7HruR&P0iAi4;cARn0Kd?gp8@r(mS_GKJl8wiL-~+9 zFH<;fqeP#1`9RqLraj~=o;yl$T}q~oX&?=ib1~#$*!)ZEosSifqxGKbsT(c4K22jC zevGBpu}!k(o^+XDw%c+~9lEEmYr)6=2=i-O0Q)0v_zF>_HkxFWYOUv#u>B_ZT2GX!y~M}di90O$14zi&H0tPa;E3|a$;E5 zxM`V%cX+y3mZkg+do~T`sdAQC*)vk55}nA}bj|6_lzPtgdB#QhLECgWbdEmL8u#wWQ|eNt%?Oz$&gGhH&2?`5c9-YXCH1A(kWqLG zn%GMQ&L{I=C~boLbS52dtGeMVpGhya!y9VZBRwga*E84I`+ADhGauCQ{CZ#CNs?y8 zO?{?I&>Ajd*^irH(PWmxzY}EeDFkqlb=)z zG~)x@@>Z%(pwsztH^z!=_xV(t_fP#sEN3EHnzdo+SyRovF=M6+w+~LX*>u8dO;3tT z?GXr>r8wn0m~}TRcivBIEj9M0;LnuVMw(t*uQ!J^7?<&vb{i_SZD`Z|DXQAeJLxgNQV89B(2$IO>eo@ExfH8F~nKpLm3rj#ZafA+0$NcugdTC@WyS5 z?ewed|67G~Nn3e3=YCuJzMgLnFmKwARrI?2ysztYs&5M!x7j4g@*SyhYbu{Umwl&G zrGd@{&Kh`}4{Sg9Nu8#y;^CHJ&rsDZ|096PzI{#(AD$-=Es0I!Y_2`mI}jB>;+(j- su6);tu6t+7TE{|rYnq%TxZ_fz;-x1*zU{mux|{ShX<$N^@g%AJ2cS_nKmY&$ literal 0 HcmV?d00001 diff --git a/MetaCOT2_CIT_Movement_Index.mq4 b/MetaCOT2_CIT_Movement_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..0212483ab03ea2d0d5a9a579080b6fa20b87deb7 GIT binary patch literal 18066 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_CIT_Netto_Position.mq4 b/MetaCOT2_CIT_Netto_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..98012524616da45e5b3c7356dfefbae83106e0f3 GIT binary patch literal 14274 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 GYySbWggx8< literal 0 HcmV?d00001 diff --git a/MetaCOT2_COT_Absolute_Changes.mq4 b/MetaCOT2_COT_Absolute_Changes.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..3444637b9b186727d5852bdcd0251d14059381c9 GIT binary patch literal 16108 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_COT_Absolute_Position.mq4 b/MetaCOT2_COT_Absolute_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..d44f64cee73abc900b6e57e754c7cf4ac794c5ec GIT binary patch literal 14510 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 b-L}@Kc;izQ-Lgc!oBTC-U;>x+iCX(VBOdx) literal 0 HcmV?d00001 diff --git a/MetaCOT2_COT_Index.mq4 b/MetaCOT2_COT_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..0d99dfb1a21225d4820becc914accd43cf8cdeba GIT binary patch literal 15150 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_COT_Netto_Position.mq4 b/MetaCOT2_COT_Netto_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..f6ef6f5070eef9fd5802d0f47c93e3a2bbd2d5c4 GIT binary patch literal 14432 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_D-COT_Absolute_Changes.mq4 b/MetaCOT2_D-COT_Absolute_Changes.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..b49ddc5002de80ef806b8292625f4caa32c9846f GIT binary patch literal 15952 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_D-COT_Absolute_Position.mq4 b/MetaCOT2_D-COT_Absolute_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..5ec2d58726f57b9d157457d69eb9735382304031 GIT binary patch literal 14610 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_D-COT_Movement_Index.mq4 b/MetaCOT2_D-COT_Movement_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..2aa20e10e87c7a19282216c1e0cbc233da81dcd2 GIT binary patch literal 18312 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_D-COT_Netto_Changes.mq4 b/MetaCOT2_D-COT_Netto_Changes.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..9a9ddc75bc6c20c19f97a0e0142f02ae55be7f63 GIT binary patch literal 16046 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 Kyv20_*ZvQ+2JU$P literal 0 HcmV?d00001 diff --git a/MetaCOT2_D-COT_Williams_Commercial_Index.mq4 b/MetaCOT2_D-COT_Williams_Commercial_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..d0888b40bf86c75c73543beedfb10d8a8600ac02 GIT binary patch literal 15146 zcmdU$>26fX702sCe~OfMxEN{1h`|_U5KICLrZF=XUJ&geK^V1+ZA=GmaW{AjlUK?k zCi(yB^l{Z)y4|)J$?|*KFo8fx6aS4v=;m_eu!scf9Jrrj=mcmvT zg!Rx4D`8c0Z|l6F^KYRSc69XgZa4Jxq#gEkwX5-mVIw}@(bI*n7dG|mw=ko3{|rCq z+3y#?rwM;nJ_yHJw->g~3;s}F=t zKl~+f{3vi3?K|O)t~RvluHJ2lGdIIWjf7);U2ll9W&T_y{kbZt4u$(c#CH%m2`yF5 zPldA1{Cg;k+3=(2n_MnPt|MN~Xx4MBIT-Tkt$21QIrIKSi*Ucfi8X1W$+{=L?G3f!eRwz$ z^G~JmhX2bjFSM{EDAH`w}9d4smD4t0MJM-2o6nQUq#9;1+!!x7GH-2o$q`A&S|3H}3HV9w5P z99PGJ2VOHL{H^QXXev8`38rPK72(?&{m(_ie)xw*ZwLqTZp*qm()IgDSucFn?_T7Q zbEKIAiBpb!5$P{ZR$bL<>!KPxC}i#5o{PFQVe>TNRtQgIgmw>vuSpV~Z|ZtOYYm3u zkf}*^Q%{aG0{;gtNjA*u4<&&t>fFNjn^(`rHFKk{`CzrLV`r=!>-cts2bzWapkXU? zg|m$Vdm>tstv5l!W4zO0wpS=FoMrYwNq^vfVjF&u&m77O5Scz{B4h3MP_03naJAUGZjDxZM!M*)u{|S5)t5wn4acW(fFEJlsyCW;Xow zOzWrF;+jsg`p5e9 z+|TE;zHtN03azsoeiaA0Cvl}KjhJr=)HR&_+(r%ZD`Bx z2U;zkxgfgm;|{g{+cetXLHU8WQpFppyNb#yqU41zm@h#m<0Na@5dMbmQ;l1VW9K!i zE1$3|%)6TZT+c1GccjsE+=`f2S{9pN?u#Pwp~N4!+>EVrs2lyys@7Z4%0Fv1*gqGX zpM@(J9}KZ=p0O0Mp3~@g;ogj^V@pIOGcLn6tn--IkJ_2z%{B8*Kia~15OYPeeLqGv zbmNY^!zk=VL#19SD$opHuYJ(rDwo~XEaw>w9mw#QxJ0f3Z=iHL#u>1l(lI&KhV9i7 zm!3z7K9zJjI!veL6nD^_c}X2TTbA@Xs#P4*t2K&p>ohILHWziyML1a8TzDl2Xdhmg zYHLeR*JF)f*4aGsspc#U=T~VpipnsHA=E0@>o|hbs?M(dz7nt99>I!iqUt>izcj0C zpHfYAu&;5RN7Jg$<$9Vh<=5}V&li1x`X(!o+ z(>nThF8afL$;PTQ;!N&|%;OP*K5E1$Tphmg)L|m=1hwqp3TdxZ4^@6oZiS1YksLV3 z*P$BTQF}1Ap1oYOFCBcWFcx75$x}J{)?o6J)vt@Ry$g7(qoTY3GX6IYb2h# zncfF_M=gXsU8`B<qxvKTQZ-B*7U_~uPZ0P-*7aT_&bAYU8*u%^C?uH=f~Zp_p2i2X2jFu{G?i+xa$$q zVHWZf2`V^pQp4dX@VEKg@z+GGfqdeps8z<-*Wrz95}3)0Qk#&&EDt?=*@u?bSd?y& z*HAeoznZe8$zpd7vm=P~AWTzl4Y4~f#m%(3l+ZBx5Bd6|ukma)z8@0b&IfBpGQdxD zRlDy+owxYkt!R)}6_e*dIsSBFy#s6fycj%sFjQ?_VU8|Y&jyQhxR!-Ij?`^Qf2z4n zj$OL;Jl)2d_Mns4@n!0Qf)8EvwyY27(aW_SPqp6y-+LNCZ;}q=XZ><#RiJghOrPvY z;>BcFsf&J@_~Tl-BI*~09GD))t}oHbkg8FLtkKQtSd+eunU5U;Jho{DQOEWj`kIYD z1H!7FV#SAwr*r~lwPFsXr+7CVuAD^KJg3MbKYJ5M_llx8dh1%5kAW(x$7x}7tW}9{ zJG#3z>`12y%(KDo1hEOiwIN@O(l5~m=dy2_Gc&Y5>t%VA$zyR&w?P{X$1{?yXtGSo ze8jk{Xj1t77<1{FUko}P$FvF=PL(*BI@D9*@pYY5nb=d_9z~B-h*JC(Gl9CP-bUKZ zDkM#KO4MejD0N89$CKlG2bgS!Eb6010q;=v&QDe`eo|REZsWLG*4KY!x?sBdMDVJ0 zOI}%}%Efvqj}^VyC7}MH4P9pUngj%0!8N4eGqW^=W_EIVBmEc!B*i;mLUs>HAu zER_t@yX@R!JIEmSi&mL<-xr(qeV?g{P21`~97qO-f@9hAviuIcnCGGz%9n)k>IpY2 zFQ=~rC2hSK&G~X3lG|7je$s06Op91MdyZl_nWutkbmTYHd8z+AE#HJcfc|PG#&hta zu4oH$`Z6y>iOaT(slm^C{ApcyMsE>+*bH$&a)(cyh|TQ^7u@d|#2H1pYX2(lXyqQE zK9ejpuRYPQYLz<GCQS&jAU%@0)OTsmirKg648f%uc;kY=&W7yQhTrw5%tu9DNS4j`!x>xXw9KUa2n$ zp^14%&S3KwpFJHjDf9B%(!_SO4fcG~EXLshu#xg=qwJs~Svt&SE9j_Vw+{1iFh2qG zC9Tiy%$)3&K39q$dEd`*uTlq|&05(U4~;IP%2x8OJ6;$c;hoccS?j(mC#Nd;?rTFl zlU(r@Mds_#Dfg7d5A&1sl-fGxbr2<OC2rq-7B?#O=;_betMLHwER z9a=VQ5z*fF#m`hNKx;azPJh&zZQX6%Z{2Ag`;7 ze^1vrT?tnGstK!9!LU18rerhfmsj8qTepPIto}Z1fx`p+YNtn6k92ig*AH~9SfKkm z!uOfZc56Y`_x1F)?(fENcXU^dxphqKNsh1kB(FHX5!d{h+B4^)anZBj^R1Tp39Mw_ zdF;h1H(v=nZMBtX*F@d(&{kfJeQUnlsnV5J`(-%dYph0AchtC+(?+Jo{{O`(V~1^D z{%xyaJ>z5hWW;&a13J3~t{ofdCeYuZCShMTUpHw9qxdc=jk@UC%_}B7x3%$%)-kx~ z+UAj<8V`(bql=6Fq&5A@*6w8Ea%wG?{gTOgPVo5Z;8@-kpE;*BxFVX+i8OE5l)a^{ zYB^Us9im${wl)fidttf>yE^f)WEbN-S{|8GH`c!f>1s7R`Hr*(F1k-N$O)4iid7_w z;t-Mkne-290lRHQ5A*rd!-c+VqJ}!X&t+BjcsjrcYN_p$UFLE#d0XY~(KCy^`H~q@(PpO6c0t@ zrpER!Zpv}nc0W#&5fY~=qRwQW!@fCsI@B@j-!%*k`TvrnaVNKBx_VpDAC$EK%`aPK z%71d2-9z#Fb!6#2BCThZJPFphei^N0D0S;I{P7!}S<(k-%KGZCPop>IQ{Bo(_qB7L zRz0QnsPi#Nqs!FVmuuGH&auxehseSg-uPf5aoWXagUuIm`jL6dOq&t3~V^vAjuZ?po|?2+lU-n}Wo zG%nUM#ht^u2 z(5zo)Ao zWnEo1G(AbGT0f?hsm9F)N9(Nb37e!x`K4wL1kc=0SsYBVo0K}6k8jN-_9dgwFf$#g zT5UP+9F$<3#a^0qD3`WD8*e9X<*BJpK9sCG*ON&isBsnf+DvroGVT0<4|`{;(d+WH zbbXJLJyZNJ{}15%DCq6J{NRV|ja4MJr{ejd_nUkN)piQZtLI(t>i-upg6N9{T4u7X zNR02N4zS$?_JIDl1Fl$Nt0|fuQ$GyHN2@JF^H4; zhukYnxU%LXwm31s0nEqfVWt`gbhwJh^17)}Tw*#H@=6*SJ zSWhAK()0e_j<5g{JImE^`PWfY-kW2_nlChK^$wcDt#gfxmzn_nHq+vGSMjUjK&LLP H<6Qe6RMK6V literal 0 HcmV?d00001 diff --git a/MetaCOT2_L-COT_Largest_Changes.mq4 b/MetaCOT2_L-COT_Largest_Changes.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..015dc3cf17aa8f03bfa8eacdb898c216058591e3 GIT binary patch literal 15428 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 bNxE(1+s#X&yGdV@2IkrsPbsyl78m~ycm-ol literal 0 HcmV?d00001 diff --git a/MetaCOT2_L-COT_Largest_Position.mq4 b/MetaCOT2_L-COT_Largest_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..67f825de878904b55aaa35e1b386124f7915a59c GIT binary patch literal 13842 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_L-COT_Movement_Index.mq4 b/MetaCOT2_L-COT_Movement_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..265a920f996b2f1dce9d5f1f8013f8ee8ae87075 GIT binary patch literal 16980 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_L-COT_Netto_Changes.mq4 b/MetaCOT2_L-COT_Netto_Changes.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..436fac8a2f4144898febc2caf78e66ecb725b627 GIT binary patch literal 15448 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 ZZ6n`iUJ~6^`l>WA)6RIj)UHxo{6F>4Vg~>K literal 0 HcmV?d00001 diff --git a/MetaCOT2_L-COT_Netto_Largest_Position.mq4 b/MetaCOT2_L-COT_Netto_Largest_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..dc8418c215366b1f7a2d6a475d2d2b14c7153d3b GIT binary patch literal 13832 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 Z880;f{B5Qs;9bS9iUVD@xK7~O{{e}4nP30_ literal 0 HcmV?d00001 diff --git a/MetaCOT2_L-COT_Williams_Commercial_Index.mq4 b/MetaCOT2_L-COT_Williams_Commercial_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..7870e7f03228ad93090216704817b7dee2b54ca3 GIT binary patch literal 14544 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_SaveIndicatorValuesInFile.mq4 b/MetaCOT2_SaveIndicatorValuesInFile.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..9753b4ce7eff8d18ecae2e25931f92219fffb1d1 GIT binary patch literal 12868 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 Sr>{-}z445vl-gB`i~k28c+lqn literal 0 HcmV?d00001 diff --git a/MetaCOT2_TFF_Absolute_Position.mq4 b/MetaCOT2_TFF_Absolute_Position.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..32ab6d0fd0c3dd4dd5f5c9dbb6fc1c9300acff7b GIT binary patch literal 14598 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 kYb_RR literal 0 HcmV?d00001 diff --git a/MetaCOT2_TFF_Index.mq4 b/MetaCOT2_TFF_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..6dc26e88c024d51c42985495c384496913a59683 GIT binary patch literal 15180 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 literal 0 HcmV?d00001 diff --git a/MetaCOT2_TFF_Movement_Index.mq4 b/MetaCOT2_TFF_Movement_Index.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..501b89419f9e2ea977403a1f36299e0a97edc7c7 GIT binary patch literal 18268 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 msBJa0RV5z?3o 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 W0{B}`OTfE|Ulj+sZgHK!wf_M_hF^vN literal 0 HcmV?d00001 diff --git a/Momentum.mq4 b/Momentum.mq4 new file mode 100644 index 0000000..1fc14ae --- /dev/null +++ b/Momentum.mq4 @@ -0,0 +1,78 @@ +//+------------------------------------------------------------------+ +//| Momentum.mq4 | +//| Copyright 2005-2014, MetaQuotes Software Corp. | +//| http://www.mql4.com | +//+------------------------------------------------------------------+ +#property copyright "2005-2014, MetaQuotes Software Corp." +#property link "http://www.mql4.com" +#property description "Momentum" +#property strict + +#property indicator_separate_window +#property indicator_buffers 1 +#property indicator_color1 DodgerBlue +//--- input parameter +input int InpMomPeriod=14; // Momentum Period +//--- buffers +double ExtMomBuffer[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int OnInit(void) + { + string short_name; +//--- indicator line + SetIndexStyle(0,DRAW_LINE); + SetIndexBuffer(0,ExtMomBuffer); +//--- name for DataWindow and indicator subwindow label + short_name="Mom("+IntegerToString(InpMomPeriod)+")"; + IndicatorShortName(short_name); + SetIndexLabel(0,short_name); +//--- check for input parameter + if(InpMomPeriod<=0) + { + Print("Wrong input parameter Momentum Period=",InpMomPeriod); + return(INIT_FAILED); + } +//--- + SetIndexDrawBegin(0,InpMomPeriod); +//--- initialization done + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Momentum | +//+------------------------------------------------------------------+ +int OnCalculate(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[]) + { + int i,limit; +//--- check for bars count and input parameter + if(rates_total<=InpMomPeriod || InpMomPeriod<=0) + return(0); +//--- counting from 0 to rates_total + ArraySetAsSeries(ExtMomBuffer,false); + ArraySetAsSeries(close,false); +//--- initial zero + if(prev_calculated<=0) + { + for(i=0; i + +//--- indicator settings +#property indicator_separate_window +#property indicator_buffers 1 +#property indicator_color1 Silver +#property indicator_width1 2 +//--- indicator parameters +input int InpFastEMA=12; // Fast EMA Period +input int InpSlowEMA=26; // Slow EMA Period +input int InpSignalSMA=9; // Signal SMA Period +//--- indicator buffers +double ExtOsmaBuffer[]; +double ExtMacdBuffer[]; +double ExtSignalBuffer[]; +//--- right input parameters flag +bool ExtParameters=false; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int OnInit(void) + { +//--- 2 additional buffers are used for counting. + IndicatorBuffers(3); +//--- drawing settings + SetIndexStyle(0,DRAW_HISTOGRAM); + SetIndexDrawBegin(0,InpSignalSMA); + IndicatorDigits(Digits+2); +//--- 3 indicator buffers mapping + SetIndexBuffer(0,ExtOsmaBuffer); + SetIndexBuffer(1,ExtMacdBuffer); + SetIndexBuffer(2,ExtSignalBuffer); +//--- name for DataWindow and indicator subwindow label + IndicatorShortName("OsMA("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")"); +//--- check for input parameters + if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA) + { + Print("Wrong input parameters"); + ExtParameters=false; + return(INIT_FAILED); + } + else + ExtParameters=true; +//--- initialization done + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Moving Average of Oscillator | +//+------------------------------------------------------------------+ +int OnCalculate (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[]) + { + int i,limit; +//--- + if(rates_total<=InpSignalSMA || !ExtParameters) + return(0); +//--- last counted bar will be recounted + limit=rates_total-prev_calculated; + if(prev_calculated>0) + limit++; +//--- macd counted in the 1-st buffer + for(i=0; ilow[i]) + last_low=low[i]; + if(last_highhigh[i-1] && low[i]>low[i-1]) + break; + if(high[i]ExtSARBuffer[i-1]) + { + SaveLastReverse(i,false,step,last_low,high[i],ep,sar); + step=ExtSarStep; + dir_long=true; + ep=high[i]; + last_high=high[i]; + ExtSARBuffer[i++]=last_low; + continue; + } + //--- + sar=ExtSARBuffer[i-1]+step*(ep-ExtSARBuffer[i-1]); + //--- LONG? + if(dir_long) + { + if(eplow[i-1]) + sar=low[i-1]; + if(sar>low[i-2]) + sar=low[i-2]; + if(sar>low[i]) + { + SaveLastReverse(i,true,step,low[i],last_high,ep,sar); + step=ExtSarStep; dir_long=false; ep=low[i]; + last_low=low[i]; + ExtSARBuffer[i++]=last_high; + continue; + } + if(eplow[i]) + { + if((step+ExtSarStep)<=ExtSarMaximum) + step+=ExtSarStep; + } + if(low[i]low[i]) + ep=last_low=low[i]; + } + ExtSARBuffer[i++]=sar; + } +//---- OnCalculate done. Return new prev_calculated. + return(rates_total); + } +//+------------------------------------------------------------------+ +//| save last values to continue further calculations | +//+------------------------------------------------------------------+ +void SaveLastReverse(int reverse,bool dir,double step,double last_low,double last_high,double ep,double sar) + { + ExtLastReverse=reverse; + if(ExtLastReverse<2) + ExtLastReverse=2; + ExtDirectionLong=dir; + ExtLastStep=step; + ExtLastLow=last_low; + ExtLastHigh=last_high; + ExtLastEP=ep; + ExtLastSAR=sar; + } +//+------------------------------------------------------------------+ diff --git a/Pivot Points - Daily (Shifted).mq4 b/Pivot Points - Daily (Shifted).mq4 new file mode 100644 index 0000000..97d2c89 --- /dev/null +++ b/Pivot Points - Daily (Shifted).mq4 @@ -0,0 +1,288 @@ +//-------------------------------------------------------------------- +// Pivot Points - Daily (Shifted).mq4 +// Copyright © 2009, SwingTree Ltd +// +// This indicator plots horizontal lines at daily pivot levels R3, R2, +// R1, Pivot, S1, S2 & S3, using a day that is advanced (or retarded) +// from the server time (called Pivot Day). +// +// The only input is the integer "ShiftHrs", which gives the number of +// hours to advance the pivot day. A negative value delays the day for +// pivot calculation. For example, if your server is on New York time +// (GMT-5) and you want pivot points in London time (GMT), then +// ShiftHrs is set to +5 (the default in the code). +// +// Saturday and Sunday trading is not ignored (after all it was real +// trading). If the pivot day shift results in data appearing on +// Saturday, it was really Friday where it occured, so the indicator +// treats it as part of Friday. If the pivot day shift results in data +// appearing on Sunday, it was really Monday where it occured, so the +// indicator treats it as Monday. +// +// It uses an indicator buffer for each line, so pivot levels of +// previous days remain visible. (This has a negative consequence: +// it is not possible to use the same technique to draw intermediate +// levels (S0.5, S1.5, etc.) because of the limit of 8 buffers.) +// +// Labels are shown for the most recent day's levels. +// +// This indicator can be applied to any chart period, although daily +// pivots on charts with long periods are meaningless. +// +// 2009.07.02 +// There was an error in the calculation of R3 & S3, +// which is now corrected. +// +//-------------------------------------------------------------------- + +#property copyright "Copyright © 2009, SwingTree Ltd" + +#define R3_NAME "Daily R3" +#define R2_NAME "Daily R2" +#define R1_NAME "Daily R1" +#define PIVOT_NAME "Daily PP" +#define S1_NAME "Daily S1" +#define S2_NAME "Daily S2" +#define S3_NAME "Daily S3" + +#define FONT "Arial" + +#define R3_COL Red +#define R2_COL Red +#define R1_COL Red +#define PIVOT_COL DimGray +#define S1_COL LimeGreen +#define S2_COL LimeGreen +#define S3_COL LimeGreen + +#property indicator_chart_window +#property indicator_buffers 7 +#property indicator_color1 R3_COL +#property indicator_color2 R2_COL +#property indicator_color3 R1_COL +#property indicator_color4 PIVOT_COL +#property indicator_color5 S1_COL +#property indicator_color6 S2_COL +#property indicator_color7 S3_COL + +// Input(s) +extern int ShiftHrs = 5; // Pivot day shift + // positive value moves pivot day earlier + +// Buffers for levels +double Res3[], Res2[], Res1[], Pivot[], Sup1[], Sup2[], Sup3[]; + +double PDayHigh, PDayLow; +string ThisSymbol; +datetime BarTime, PivotDayStartTime; +int VisibleBars, DayStartBar, LeftMostBar, RightMostBar; + + +//-------------------------------------------------------------------- +// Initialization +//-------------------------------------------------------------------- +int init() +{ + // Attach indicator arrays to buffers + SetIndexBuffer( 0, Res3); + SetIndexBuffer( 1, Res2); + SetIndexBuffer( 2, Res1); + SetIndexBuffer( 3, Pivot); + SetIndexBuffer( 4, Sup1); + SetIndexBuffer( 5, Sup2); + SetIndexBuffer( 6, Sup3); + + // Set styles + SetIndexStyle( 0, DRAW_LINE, STYLE_DOT, 1); + SetIndexStyle( 1, DRAW_LINE, STYLE_DOT, 1); + SetIndexStyle( 2, DRAW_LINE, STYLE_DOT, 1); + SetIndexStyle( 3, DRAW_LINE, STYLE_DOT, 1); + SetIndexStyle( 4, DRAW_LINE, STYLE_DOT, 1); + SetIndexStyle( 5, DRAW_LINE, STYLE_DOT, 1); + SetIndexStyle( 6, DRAW_LINE, STYLE_DOT, 1); + + // Set empty values + SetIndexEmptyValue( 0, EMPTY_VALUE ); + SetIndexEmptyValue( 1, EMPTY_VALUE ); + SetIndexEmptyValue( 2, EMPTY_VALUE ); + SetIndexEmptyValue( 3, EMPTY_VALUE ); + SetIndexEmptyValue( 4, EMPTY_VALUE ); + SetIndexEmptyValue( 5, EMPTY_VALUE ); + SetIndexEmptyValue( 6, EMPTY_VALUE ); + + // Set labels + SetIndexLabel( 0, R3_NAME ); + SetIndexLabel( 1, R2_NAME ); + SetIndexLabel( 2, R1_NAME ); + SetIndexLabel( 3, PIVOT_NAME ); + SetIndexLabel( 4, S1_NAME ); + SetIndexLabel( 5, S2_NAME ); + SetIndexLabel( 6, S3_NAME ); + + // Put text on the chart + ObjectCreate( R3_NAME, OBJ_TEXT, 0, 0, 0 ); + ObjectCreate( R2_NAME, OBJ_TEXT, 0, 0, 0 ); + ObjectCreate( R1_NAME, OBJ_TEXT, 0, 0, 0 ); + ObjectCreate( PIVOT_NAME, OBJ_TEXT, 0, 0, 0 ); + ObjectCreate( S1_NAME, OBJ_TEXT, 0, 0, 0 ); + ObjectCreate( S2_NAME, OBJ_TEXT, 0, 0, 0 ); + ObjectCreate( S3_NAME, OBJ_TEXT, 0, 0, 0 ); + + // Set the text characteristics + ObjectSetText( R3_NAME, R3_NAME, 8, FONT, R3_COL ); + ObjectSetText( R2_NAME, R2_NAME, 8, FONT, R2_COL ); + ObjectSetText( R1_NAME, R1_NAME, 8, FONT, R1_COL ); + ObjectSetText( PIVOT_NAME, PIVOT_NAME, 8, FONT, PIVOT_COL ); + ObjectSetText( S1_NAME, S1_NAME, 8, FONT, S1_COL ); + ObjectSetText( S2_NAME, S2_NAME, 8, FONT, S2_COL ); + ObjectSetText( S3_NAME, S3_NAME, 8, FONT, S3_COL ); + + // Catch bad input + if( MathAbs( ShiftHrs ) > 23 ) + { + Alert( "ShiftHrs is too large. Reset to 0 hrs. "); + ShiftHrs = 0; + } + + ThisSymbol = Symbol(); + PivotDayStartTime = Time[Bars-1]; // the first bar + + return(0); +} + +//-------------------------------------------------------------------- +//| De-initialization | +//-------------------------------------------------------------------- +int deinit() +{ + // Remove texts + ObjectDelete( R3_NAME ); + ObjectDelete( R2_NAME ); + ObjectDelete( R1_NAME ); + ObjectDelete( PIVOT_NAME ); + ObjectDelete( S1_NAME ); + ObjectDelete( S2_NAME ); + ObjectDelete( S3_NAME ); + + return(0); +} + +//-------------------------------------------------------------------- +//| Main iteration | +//-------------------------------------------------------------------- +int start() +{ + int i, Count; + double Range; + + i = Bars - IndicatorCounted() - 1; + + while(i >= 0) + { + // If the pivot day changes... + if( PivotDay( Time[i+1], ShiftHrs ) != PivotDay( Time[i], ShiftHrs ) ) + { + // Determine High & Low for the previous Pivot Day + Count = iBarShift( NULL, 0, PivotDayStartTime ) - i; // number of bars in the day + PDayHigh = High[ iHighest( NULL, 0, MODE_HIGH, Count, i+1 ) ]; // Pivot Day high + PDayLow = Low[ iLowest( NULL, 0, MODE_LOW, Count, i+1 ) ]; // Pivot Day low + + // Pivot calculations + Pivot[i] = ( PDayHigh + PDayLow + Close[i+1] ) / 3; // Pivot point + Range = PDayHigh - PDayLow; + Res1[i] = 2 * Pivot[i] - PDayLow; // R1 + Res2[i] = Pivot[i] + Range; // R2 + Res3[i] = Res1[i] + Range; // R3 + Sup1[i] = 2 * Pivot[i] - PDayHigh; // S1 + Sup2[i] = Pivot[i] - Range; // S2 + Sup3[i] = Sup1[i] - Range; // S3 + + // Don't draw the transition between levels + Res3[i+1] = EMPTY_VALUE; + Res2[i+1] = EMPTY_VALUE; + Res1[i+1] = EMPTY_VALUE; + Pivot[i+1] = EMPTY_VALUE; + Sup1[i+1] = EMPTY_VALUE; + Sup2[i+1] = EMPTY_VALUE; + Sup3[i+1] = EMPTY_VALUE; + + // Remember when the Day changed over + PivotDayStartTime = Time[i]; + } + else // no change to pivot levels + { + Res3[i] = Res3[i+1]; + Res2[i] = Res2[i+1]; + Res1[i] = Res1[i+1]; + Pivot[i] = Pivot[i+1]; + Sup1[i] = Sup1[i+1]; + Sup2[i] = Sup2[i+1]; + Sup3[i] = Sup3[i+1]; + } + + // Move the labels to sensible places + // If this is the last bar and (it's a new bar or time scale has changed)... + if( i == 0 && ( BarTime != Time[i] || VisibleBars != WindowBarsPerChart() ) ) + { + DayStartBar = iBarShift( ThisSymbol, Period(), PivotDayStartTime ); + LeftMostBar = WindowFirstVisibleBar()-7; + RightMostBar = 15; + if( DayStartBar < RightMostBar ) // label too close to the right + { + ObjectMove( R3_NAME, 0, Time[RightMostBar], Res3[i] ); + ObjectMove( R2_NAME, 0, Time[RightMostBar], Res2[i] ); + ObjectMove( R1_NAME, 0, Time[RightMostBar], Res1[i] ); + ObjectMove( PIVOT_NAME, 0, Time[RightMostBar], Pivot[i] ); + ObjectMove( S1_NAME, 0, Time[RightMostBar], Sup1[i] ); + ObjectMove( S2_NAME, 0, Time[RightMostBar], Sup2[i] ); + ObjectMove( S3_NAME, 0, Time[RightMostBar], Sup3[i] ); + } + else if ( DayStartBar > LeftMostBar ) // label too close to the left + { + ObjectMove( R3_NAME, 0, Time[LeftMostBar], Res3[i] ); + ObjectMove( R2_NAME, 0, Time[LeftMostBar], Res2[i] ); + ObjectMove( R1_NAME, 0, Time[LeftMostBar], Res1[i] ); + ObjectMove( PIVOT_NAME, 0, Time[LeftMostBar], Pivot[i] ); + ObjectMove( S1_NAME, 0, Time[LeftMostBar], Sup1[i] ); + ObjectMove( S2_NAME, 0, Time[LeftMostBar], Sup2[i] ); + ObjectMove( S3_NAME, 0, Time[LeftMostBar], Sup3[i] ); + } + else // move it with the bars + { + ObjectMove( R3_NAME, 0, PivotDayStartTime, Res3[i] ); + ObjectMove( R2_NAME, 0, PivotDayStartTime, Res2[i] ); + ObjectMove( R1_NAME, 0, PivotDayStartTime, Res1[i] ); + ObjectMove( PIVOT_NAME, 0, PivotDayStartTime, Pivot[i] ); + ObjectMove( S1_NAME, 0, PivotDayStartTime, Sup1[i] ); + ObjectMove( S2_NAME, 0, PivotDayStartTime, Sup2[i] ); + ObjectMove( S3_NAME, 0, PivotDayStartTime, Sup3[i] ); + } + } + + VisibleBars = WindowBarsPerChart(); + BarTime = Time[i]; + i--; + } + + return(0); +} + + +//-------------------------------------------------------------------- +// int PivotDay( datetime BarTime, datetime ShiftHrs ) +// Returns the day of the week for pivot point calculations. +// datetime BarTime: time stamp of the bar of interest +// datetime Shift: the pivot time - server time shift +// i.e. if the time for pivot calculation is ahead +// of server time, the shift is positive. +//-------------------------------------------------------------------- +int PivotDay( datetime BarTime, datetime ShiftHrs ) +{ + int PDay = TimeDayOfWeek( BarTime + ShiftHrs * 3600 ); + + if( PDay == 0 ) PDay = 1; // Count Sunday as Monday + if( PDay == 6 ) PDay = 5; // Count Saturday as Friday + + return( PDay ); +} + diff --git a/RSI.mq4 b/RSI.mq4 new file mode 100644 index 0000000..79cd6da --- /dev/null +++ b/RSI.mq4 @@ -0,0 +1,133 @@ +//+------------------------------------------------------------------+ +//| RSI.mq4 | +//| Copyright 2005-2014, MetaQuotes Software Corp. | +//| http://www.mql4.com | +//+------------------------------------------------------------------+ +#property copyright "2005-2014, MetaQuotes Software Corp." +#property link "http://www.mql4.com" +#property description "Relative Strength Index" +#property strict + +#property indicator_separate_window +#property indicator_minimum 0 +#property indicator_maximum 100 +#property indicator_buffers 1 +#property indicator_color1 DodgerBlue +#property indicator_level1 30.0 +#property indicator_level2 70.0 +#property indicator_levelcolor clrSilver +#property indicator_levelstyle STYLE_DOT +//--- input parameters +input int InpRSIPeriod=14; // RSI Period +//--- buffers +double ExtRSIBuffer[]; +double ExtPosBuffer[]; +double ExtNegBuffer[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int OnInit(void) + { + string short_name; +//--- 2 additional buffers are used for counting. + IndicatorBuffers(3); + SetIndexBuffer(1,ExtPosBuffer); + SetIndexBuffer(2,ExtNegBuffer); +//--- indicator line + SetIndexStyle(0,DRAW_LINE); + SetIndexBuffer(0,ExtRSIBuffer); +//--- name for DataWindow and indicator subwindow label + short_name="RSI("+string(InpRSIPeriod)+")"; + IndicatorShortName(short_name); + SetIndexLabel(0,short_name); +//--- check for input + if(InpRSIPeriod<2) + { + Print("Incorrect value for input variable InpRSIPeriod = ",InpRSIPeriod); + return(INIT_FAILED); + } +//--- + SetIndexDrawBegin(0,InpRSIPeriod); +//--- initialization done + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Relative Strength Index | +//+------------------------------------------------------------------+ +int OnCalculate(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[]) + { + int i,pos; + double diff; +//--- + if(Bars<=InpRSIPeriod || InpRSIPeriod<2) + return(0); +//--- counting from 0 to rates_total + ArraySetAsSeries(ExtRSIBuffer,false); + ArraySetAsSeries(ExtPosBuffer,false); + ArraySetAsSeries(ExtNegBuffer,false); + ArraySetAsSeries(close,false); +//--- preliminary calculations + pos=prev_calculated-1; + if(pos<=InpRSIPeriod) + { + //--- first RSIPeriod values of the indicator are not calculated + ExtRSIBuffer[0]=0.0; + ExtPosBuffer[0]=0.0; + ExtNegBuffer[0]=0.0; + double sump=0.0; + double sumn=0.0; + for(i=1; i<=InpRSIPeriod; i++) + { + ExtRSIBuffer[i]=0.0; + ExtPosBuffer[i]=0.0; + ExtNegBuffer[i]=0.0; + diff=close[i]-close[i-1]; + if(diff>0) + sump+=diff; + else + sumn-=diff; + } + //--- calculate first visible value + ExtPosBuffer[InpRSIPeriod]=sump/InpRSIPeriod; + ExtNegBuffer[InpRSIPeriod]=sumn/InpRSIPeriod; + if(ExtNegBuffer[InpRSIPeriod]!=0.0) + ExtRSIBuffer[InpRSIPeriod]=100.0-(100.0/(1.0+ExtPosBuffer[InpRSIPeriod]/ExtNegBuffer[InpRSIPeriod])); + else + { + if(ExtPosBuffer[InpRSIPeriod]!=0.0) + ExtRSIBuffer[InpRSIPeriod]=100.0; + else + ExtRSIBuffer[InpRSIPeriod]=50.0; + } + //--- prepare the position value for main calculation + pos=InpRSIPeriod+1; + } +//--- the main loop of calculations + for(i=pos; i0.0?diff:0.0))/InpRSIPeriod; + ExtNegBuffer[i]=(ExtNegBuffer[i-1]*(InpRSIPeriod-1)+(diff<0.0?-diff:0.0))/InpRSIPeriod; + if(ExtNegBuffer[i]!=0.0) + ExtRSIBuffer[i]=100.0-100.0/(1+ExtPosBuffer[i]/ExtNegBuffer[i]); + else + { + if(ExtPosBuffer[i]!=0.0) + ExtRSIBuffer[i]=100.0; + else + ExtRSIBuffer[i]=50.0; + } + } +//--- + return(rates_total); + } +//+------------------------------------------------------------------+ diff --git a/Stochastic X.mq4 b/Stochastic X.mq4 new file mode 100644 index 0000000..beee1dd --- /dev/null +++ b/Stochastic X.mq4 @@ -0,0 +1,187 @@ +//+------------------------------------------------------------------+ +//| Color Stochastic.mq4 | +//| mladen | +//| | +//+------------------------------------------------------------------+ +#property copyright "mladen" +#property link "" +#property description "Mod by Teamcashflow," +#property description "Draws signals based on the cross of the stochastic above 80(blue) below 20(red) default" +#property description" K Period and D Period / Main Line & signal line." +#property description "User can set the level the signal is drawn on the inputs tab." + + +//---- +#property indicator_separate_window +#property indicator_buffers 6 +//---- +#property indicator_minimum 0 +#property indicator_maximum 100 +#property indicator_color1 Yellow +#property indicator_style1 STYLE_DOT +#property indicator_color2 White +#property indicator_color3 DodgerBlue +#property indicator_color4 Red +#property indicator_width3 2 +#property indicator_width4 2 +#property indicator_level1 80 +#property indicator_level2 20 +//---- input parameters +//nice setings for trend = 35,10,1 +extern string note1="Stochastic settings"; +extern int KPeriod =5; +extern int KPeriod2 = 5; +extern int Slowing =3; +extern int DPeriod =3; +extern int DPeriod2 = 3; +extern string note4="0=sma, 1=ema, 2=smma, 3=lwma"; +extern int MAMethod =0; +extern string note5="0=high/low, 1=close/close"; +extern int PriceField= 1; +extern string note6="overbought level"; +extern int overBought=80; +extern string note7="oversold level"; +extern int overSold =20; +//--- Inputs for stochastic cross level +input color Buy_Dot_Color = clrDodgerBlue; +input color Sell_Dot_Color = clrRed; +double input Cross_From_Below_Level = 10; +double input Cross_From_Above_Level = 90; + +//---- buffers +double KFull[]; +double DFull[]; +double Upper[]; +double Lower[]; +double Buy_Point[]; +double Sell_Point[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { + SetIndexBuffer(0,DFull); + SetIndexBuffer(1,KFull); + SetIndexBuffer(2,Upper); + SetIndexBuffer(3,Lower); + SetIndexBuffer(4,Buy_Point); + SetIndexBuffer(5,Sell_Point); + SetIndexStyle(4,DRAW_ARROW,EMPTY,3,Buy_Dot_Color); + SetIndexStyle(5,DRAW_ARROW,EMPTY,3,Sell_Dot_Color); + SetIndexArrow(4,159); + SetIndexArrow(5,159); + SetIndexLabel(1,"Fast"); + SetIndexLabel(2,NULL); + SetIndexLabel(3,NULL); +//---- + DPeriod=MathMax(DPeriod,1); + if (DPeriod==1) + { + SetIndexStyle(0,DRAW_NONE); + SetIndexLabel(0,NULL); + } + else + { + SetIndexStyle(0,DRAW_LINE); + SetIndexLabel(0,"Slow"); + } + string shortName="Stochastic X ("+KPeriod+","+Slowing+","+DPeriod+","+maDescription(MAMethod)+","+priceDescription(PriceField); + if (overBought < overSold) overBought=overSold; + if (overBought < 100) shortName =shortName+","+overBought; + if (overSold > 0) shortName =shortName+","+overSold; + IndicatorShortName(shortName+")"); + return(0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int deinit() + { + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int start() + { + int limit; + int i; +//---- + int counted_bars = IndicatorCounted(); + if(counted_bars < 0) return(-1); + if(counted_bars > 0) counted_bars--; + limit = Bars - counted_bars; + double Rsi_rule = iRSI(Symbol(),0,14,0,i); + + if(counted_bars==0) limit-=1+MathMax(2,MathMax(KPeriod,DPeriod)); + + for(i=limit; i>=0; i--) + { + KFull[i]=iStochastic(NULL,0,KPeriod,DPeriod,Slowing,MAMethod,PriceField,MODE_MAIN,i); + DFull[i]=iStochastic(NULL,0,KPeriod2,DPeriod2,Slowing,MAMethod,PriceField,MODE_SIGNAL,i); +//---- + if (KFull[i] > overBought) { Upper[i]=KFull[i]; Upper[i+1]=KFull[i+1]; } + else + { + Upper[i]=EMPTY_VALUE; + if (Upper[i+2]==EMPTY_VALUE) + Upper[i+1] =EMPTY_VALUE; + } + if (KFull[i] < overSold) { Lower[i]=KFull[i]; Lower[i+1]=KFull[i+1]; } + else + { + Lower[i]=EMPTY_VALUE; + if (Lower[i+2]==EMPTY_VALUE) + Lower[i+1] =EMPTY_VALUE; + } + + //--- Stochastic Crossing Up Below 10 Signal + + if( KFull[i] < Cross_From_Below_Level && KFull[i] >DFull[i] ) + + { + Buy_Point[i] = KFull[i]; + + } + //--- Stochastic Crossing Down Above 80 Signal + + if ( KFull[i] > Cross_From_Above_Level && KFull[i] < DFull[i]) + { + Sell_Point[i] =KFull[i]; + } + + } +//---- + return(0); + } +//+------------------------------------------------------------------+ +string priceDescription(int mode) + { + string answer; + switch(mode) + { + case 0: answer="Low/High" ;break; + case 1: answer="Close/Close";break; + default: answer="Invalid price field requested"; + Alert(answer); + } + return(answer); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +string maDescription(int mode) + { + string answer; + switch(mode) + { + case MODE_SMA: answer="SMA" ;break; + case MODE_EMA: answer="EMA" ;break; + case MODE_SMMA: answer="SMMA";break; + case MODE_LWMA: answer="LWMA";break; + default: answer="Invalid MA mode requested"; + Alert(answer); + } + return(answer); + } +//+------------------------------------------------------------------+ \ No newline at end of file diff --git a/TARGET BANDS.mq4 b/TARGET BANDS.mq4 new file mode 100644 index 0000000..94adaac --- /dev/null +++ b/TARGET BANDS.mq4 @@ -0,0 +1,335 @@ +//+------------------------------------------------------------------+ +//| TMA+CG.mq4 | +//| mladen | +//| arrowse coded acording to idea presented by rajiv | +//+------------------------------------------------------------------+ +#property copyright "rajivxxx" +#property link "rajivxxx@gmail.com" + +#property indicator_chart_window +#property indicator_buffers 5 +#property indicator_color1 White +#property indicator_color2 OrangeRed +#property indicator_color3 OrangeRed +#property indicator_color4 White +#property indicator_color5 White +#property indicator_style1 STYLE_SOLID +#property indicator_width1 1 +#property indicator_width2 6 +#property indicator_width3 6 +#property indicator_width4 8 +#property indicator_width5 8 +// +// +// +// +// + +extern string TimeFrame = "current time frame"; +extern int HalfLength = 55; +extern int Price = PRICE_WEIGHTED; +extern double BandsDeviations = 2.5; +extern bool Interpolate = true; +extern bool alertsOn = false; +extern bool alertsOnCurrent = false; +extern bool alertsOnHighLow = false; +extern bool alertsMessage = false; +extern bool alertsSound = false; +extern bool alertsEmail = false; + +// +// +// +// +// + +double tmBuffer[]; +double upBuffer[]; +double dnBuffer[]; +double wuBuffer[]; +double wdBuffer[]; +double upArrow[]; +double dnArrow[]; + +// +// +// +// +// + +string IndicatorFileName; +bool calculatingTma = false; +bool returningBars = false; +int timeFrame; + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +// +// +// +// + +int init() +{ + timeFrame = stringToTimeFrame(TimeFrame); + HalfLength = MathMax(HalfLength,1); + IndicatorBuffers(7); + SetIndexBuffer(0,tmBuffer); SetIndexDrawBegin(0,HalfLength); + SetIndexBuffer(1,upBuffer); SetIndexDrawBegin(1,HalfLength); + SetIndexBuffer(2,dnBuffer); SetIndexDrawBegin(2,HalfLength); + SetIndexBuffer(3,dnArrow); SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,82); + SetIndexBuffer(4,upArrow); SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,82); + SetIndexBuffer(5,wuBuffer); + SetIndexBuffer(6,wdBuffer); + + if (TimeFrame=="calculateTma") { calculatingTma=true; return(0); } + if (TimeFrame=="returnBars") { returningBars=true; return(0); } + + + IndicatorFileName = WindowExpertName(); + return(0); +} +int deinit() { return(0); } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +// +// +// +// +// + +int start() +{ + int counted_bars=IndicatorCounted(); + int i,limit; + + if(counted_bars<0) return(-1); + if(counted_bars>0) counted_bars--; + limit=MathMin(Bars-1,Bars-counted_bars+HalfLength); + + if (returningBars) { tmBuffer[0] = limit; return(0); } + if (calculatingTma) { calculateTma(limit); return(0); } + if (timeFrame > Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,IndicatorFileName,"returnBars",0,0)*timeFrame/Period())); + + // + // + // + // + // + + for(i = limit; i >= 0; i--) + { + int shift1 = iBarShift(NULL,timeFrame,Time[i]); + datetime time1 = iTime (NULL,timeFrame,shift1); + + // + // + // + // + // + + tmBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,0,shift1); + upBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,1,shift1); + dnBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,2,shift1); + + upArrow[i] = EMPTY_VALUE; + dnArrow[i] = EMPTY_VALUE; + if (High[i+1]>upBuffer[i+1] && Close[i+1]>Open[i+1] && Close[i]Open[i]) dnArrow[i] = Low[i]; + + if (timeFrame <= Period() || shift1==iBarShift(NULL,timeFrame,Time[i-1])) continue; + if (!Interpolate) continue; + + // + // + // + // + // + + for(int n = 1; i+n < Bars && Time[i+n] >= time1; n++) continue; + double factor = 1.0 / n; + for(int k = 1; k < n; k++) + { + tmBuffer[i+k] = k*factor*tmBuffer[i+n] + (1.0-k*factor)*tmBuffer[i]; + upBuffer[i+k] = k*factor*upBuffer[i+n] + (1.0-k*factor)*upBuffer[i]; + dnBuffer[i+k] = k*factor*dnBuffer[i+n] + (1.0-k*factor)*dnBuffer[i]; + } + } + + // + // + // + // + // + + if (alertsOn) + { + if (alertsOnCurrent) + int forBar = 0; + else forBar = 1; + if (alertsOnHighLow) + { + if (High[forBar] > upBuffer[forBar] && High[forBar+1] < upBuffer[forBar+1]) doAlert("high penetrated upper bar"); + if (Low[forBar] < dnBuffer[forBar] && Low[forBar+1] > dnBuffer[forBar+1]) doAlert("low penetrated lower bar"); + } + else + { + if (Close[forBar] > upBuffer[forBar] && Close[forBar+1] < upBuffer[forBar+1]) doAlert("close penetrated upper bar"); + if (Close[forBar] < dnBuffer[forBar] && Close[forBar+1] > dnBuffer[forBar+1]) doAlert("close penetrated lower bar"); + } + } + + return(0); +} + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +// +// +// +// +// + +void calculateTma(int limit) +{ + int i,j,k; + double FullLength = 2.0*HalfLength+1.0; + + // + // + // + // + // + + for (i=limit; i>=0; i--) + { + double sum = (HalfLength+1)*iMA(NULL,0,1,0,MODE_SMA,Price,i); + double sumw = (HalfLength+1); + for(j=1, k=HalfLength; j<=HalfLength; j++, k--) + { + sum += k*iMA(NULL,0,1,0,MODE_SMA,Price,i+j); + sumw += k; + + if (j<=i) + { + sum += k*iMA(NULL,0,1,0,MODE_SMA,Price,i-j); + sumw += k; + } + } + tmBuffer[i] = sum/sumw; + + // + // + // + // + // + + double diff = iMA(NULL,0,1,0,MODE_SMA,Price,i)-tmBuffer[i]; + if (i> (Bars-HalfLength-1)) continue; + if (i==(Bars-HalfLength-1)) + { + upBuffer[i] = tmBuffer[i]; + dnBuffer[i] = tmBuffer[i]; + if (diff>=0) + { + wuBuffer[i] = MathPow(diff,2); + wdBuffer[i] = 0; + } + else + { + wdBuffer[i] = MathPow(diff,2); + wuBuffer[i] = 0; + } + continue; + } + + // + // + // + // + // + + if(diff>=0) + { + wuBuffer[i] = (wuBuffer[i+1]*(FullLength-1)+MathPow(diff,2))/FullLength; + wdBuffer[i] = wdBuffer[i+1]*(FullLength-1)/FullLength; + } + else + { + wdBuffer[i] = (wdBuffer[i+1]*(FullLength-1)+MathPow(diff,2))/FullLength; + wuBuffer[i] = wuBuffer[i+1]*(FullLength-1)/FullLength; + } + upBuffer[i] = tmBuffer[i] + BandsDeviations*MathSqrt(wuBuffer[i]); + dnBuffer[i] = tmBuffer[i] - BandsDeviations*MathSqrt(wdBuffer[i]); + } +} + + + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +// +// +// +// +// + +void doAlert(string doWhat) +{ + static string previousAlert=""; + static datetime previousTime; + string message; + + // + // + // + // + // + + if (previousAlert!=doWhat || previousTime!=Time[0]) + { + previousAlert = doWhat; + previousTime = Time[0]; + + message= StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," THA : ",doWhat); + if (alertsMessage) Alert(message); + if (alertsEmail) SendMail(StringConcatenate(Symbol(),"TMA "),message); + if (alertsSound) PlaySound("alert2.wav"); + } +} + +// +// +// +// +// + +int stringToTimeFrame(string tfs) +{ + for(int l = StringLen(tfs)-1; l >= 0; l--) + { + int char2 = StringGetChar(tfs,l); + if((char2 > 96 && char2 < 123) || (char2 > 223 && char2 < 256)) + tfs = StringSetChar(tfs, 1, char2 - 32); + else + if(char2 > -33 && char2 < 0) + tfs = StringSetChar(tfs, 1, char2 + 224); + } + int tf=0; + if (tfs=="M1" || tfs=="1") tf=PERIOD_M1; + if (tfs=="M5" || tfs=="5") tf=PERIOD_M5; + if (tfs=="M15"|| tfs=="15") tf=PERIOD_M15; + if (tfs=="M30"|| tfs=="30") tf=PERIOD_M30; + if (tfs=="H1" || tfs=="60") tf=PERIOD_H1; + if (tfs=="H4" || tfs=="240") tf=PERIOD_H4; + if (tfs=="D1" || tfs=="1440") tf=PERIOD_D1; + if (tfs=="W1" || tfs=="10080") tf=PERIOD_W1; + if (tfs=="MN" || tfs=="43200") tf=PERIOD_MN1; + if (tf==0 || tf0) counted_bars--; + limit=MathMin(Bars-1,Bars-counted_bars+HalfLength); + if (returnBars) { buffer1[0] = limit+1; return(0); } + + // + // + // + // + // + + if (calculateValue || timeFrame==Period()) + { + for (i=limit; i>=0; i--) + { + double sum = (HalfLength+1)*iMA(NULL,0,1,0,MODE_SMA,Price,i); + double sumw = (HalfLength+1); + + for(j=1, k=HalfLength; j<=HalfLength; j++, k--) + { + sum += k*iMA(NULL,0,1,0,MODE_SMA,Price,i+j); + sumw += k; + //now take a look in the future and change the past :) + /*if (j<=i) //here is the redraw + { + sum += k*iMA(NULL,0,1,0,MODE_SMA,Price,i-j); + sumw += k; + }*/ + } + + // + // + // + // + // + + double range = iATR(NULL,0,ATRPeriod,i+10)*ATRMultiplier; + buffer1[i] = sum/sumw; + buffer2[i] = buffer1[i]+range; + buffer3[i] = buffer1[i]-range; + + // + // + // + // + // + + trend[i] = 0; + if (alertsOnHighLow) + { + if (High[i] > buffer2[i]) trend[i] = 1; + if (Low[i] < buffer3[i]) trend[i] = -1; + } + else + { + if (Close[i] > buffer2[i]) trend[i] = 1; + if (Close[i] < buffer3[i]) trend[i] = -1; + } + } + if (!calculateValue) manageAlerts(); + return(0); + } + + // + // + // + // + // + + limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period())); + for(i=limit; i>=0; i--) + { + int y = iBarShift(NULL,timeFrame,Time[i]); + buffer1[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,0,y); + buffer2[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,1,y); + buffer3[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,2,y); + trend[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,3,y); + + // + // + // + // + // + + if (timeFrame <= Period() || y==iBarShift(NULL,timeFrame,Time[i-1])) continue; + if (!Interpolate) continue; + + // + // + // + // + // + + datetime time = iTime(NULL,timeFrame,y); + for(int n = 1; i+n < Bars && Time[i+n] >= time; n++) continue; + for(k = 1; k < n; k++) + { + buffer1[i+k] = buffer1[i] +(buffer1[i+n]-buffer1[i])*k/n; + buffer2[i+k] = buffer2[i] +(buffer2[i+n]-buffer2[i])*k/n; + buffer3[i+k] = buffer3[i] +(buffer3[i+n]-buffer3[i])*k/n; + } + } + + // + // + // + // + // + + manageAlerts(); + return(0); +} + +//+------------------------------------------------------------------- +//| +//+------------------------------------------------------------------- +// +// +// +// +// + +void manageAlerts() +{ + if (alertsOn) + { + if (alertsOnCurrent) + int whichBar = 0; + else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar)); + if (trend[whichBar] != trend[whichBar+1]) + { + if (trend[whichBar] == 1) doAlert(whichBar,"up"); + if (trend[whichBar] ==-1) doAlert(whichBar,"down"); + } + } +} + +// +// +// +// +// + +void doAlert(int forBar, string doWhat) +{ + static string previousAlert="nothing"; + static datetime previousTime; + string message; + + if (previousAlert != doWhat || previousTime != Time[forBar]) { + previousAlert = doWhat; + previousTime = Time[forBar]; + + // + // + // + // + // + + message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," "+timeFrameToString(timeFrame)+" TMA bands price penetrated ",doWhat," band"); + if (alertsMessage) Alert(message); + if (alertsEmail) SendMail(StringConcatenate(Symbol(),"TMA bands "),message); + if (alertsSound) PlaySound("alert2.wav"); + } +} + +//+------------------------------------------------------------------- +//| +//+------------------------------------------------------------------- +// +// +// +// +// + +string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"}; +int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200}; + +// +// +// +// +// + +int stringToTimeFrame(string tfs) +{ + tfs = StringUpperCase(tfs); + for (int i=ArraySize(iTfTable)-1; i>=0; i--) + if (tfs==sTfTable[i] || tfs==""+iTfTable[i]) return(MathMax(iTfTable[i],Period())); + return(Period()); +} +string timeFrameToString(int tf) +{ + for (int i=ArraySize(iTfTable)-1; i>=0; i--) + if (tf==iTfTable[i]) return(sTfTable[i]); + return(""); +} + +// +// +// +// +// + +string StringUpperCase(string str) +{ + string s = str; + + for (int length=StringLen(str)-1; length>=0; length--) + { + int char = StringGetChar(s, length); + if((char > 96 && char < 123) || (char > 223 && char < 256)) + s = StringSetChar(s, length, char - 32); + else if(char > -33 && char < 0) + s = StringSetChar(s, length, char + 224); + } + return(s); +} \ No newline at end of file diff --git a/TREND_alexcud_v_2MEn.mq4 b/TREND_alexcud_v_2MEn.mq4 new file mode 100644 index 0000000..64e54c4 --- /dev/null +++ b/TREND_alexcud_v_2MEn.mq4 @@ -0,0 +1,436 @@ +//+------------------------------------------------------------------+ +//| TREND_alexcud v_2MEn.mq4 | +//| Copyright © 2007, Aleksander Kudimov | +//| alexcud@rambler.ru ki | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2007, Aleksander Kudimov" +#property link "alexcud@rambler.ru" + +#property indicator_separate_window + +#property indicator_minimum 0 +#property indicator_maximum 1 + +#property indicator_buffers 2 +#property indicator_color1 Lime +#property indicator_color2 Red + +//---- buffers +double UPBuffer[]; +double DOWNBuffer[]; +extern int TF1 = 15; +extern int TF2 = 60; +extern int TF3 = 240; +extern int maTrendPeriodv_1 = 5; +extern int maTrendPeriodv_2 = 8; +extern int maTrendPeriodv_3 = 13; +extern int maTrendPeriodv_4 = 21; +extern int maTrendPeriodv_5 = 34; +extern string note__TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF"; + + + +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +double MaH11v, MaH41v, MaD11v, MaH1pr1v, MaH4pr1v, MaD1pr1v; +double MaH12v, MaH42v, MaD12v, MaH1pr2v, MaH4pr2v, MaD1pr2v; +double MaH13v, MaH43v, MaD13v, MaH1pr3v, MaH4pr3v, MaD1pr3v; +double MaH14v, MaH44v, MaD14v, MaH1pr4v, MaH4pr4v, MaD1pr4v; +double MaH15v, MaH45v, MaD15v, MaH1pr5v, MaH4pr5v, MaD1pr5v; + + + string H11v, H41v, D11v; + string H12v, H42v, D12v; + string H13v, H43v, D13v; + string H14v, H44v, D14v; + string H15v, H45v, D15v; + color co11v , co41v , co61v; + color co12v , co42v , co62v; + color co13v , co43v , co63v; + color co14v , co44v , co64v; + color co15v , co45v , co65v; + +double u1x5v, u1x8v, u1x13v, u1x21v, u1x34v; +double u2x5v, u2x8v, u2x13v, u2x21v, u2x34v; +double u3x5v, u3x8v, u3x13v, u3x21v, u3x34v; +double u1acv, u2acv, u3acv; + +double d1x5v, d1x8v, d1x13v, d1x21v, d1x34v; +double d2x5v, d2x8v, d2x13v, d2x21v, d2x34v; +double d3x5v, d3x8v, d3x13v, d3x21v, d3x34v; +double d1acv, d2acv, d3acv; + + string short_name="TREND_alex"; +int init() + { + +//---- name for indicator window + + string short_name="TREND_alex"; + IndicatorShortName(short_name); + + SetIndexBuffer(0,UPBuffer); + SetIndexBuffer(1,DOWNBuffer); + + + +//---- + return(0); + } + +//+------------------------------------------------------------------+ +//| Custom indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int start() + { + ObjectCreate("MAv", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("MAv", "Moving Averages",9, "Verdana", Lime ); + ObjectSet("MAv", OBJPROP_XDISTANCE, 75); + ObjectSet("MAv", OBJPROP_YDISTANCE, 0); + + ObjectCreate("label_object1v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("label_object1v", OBJPROP_XDISTANCE, 5); + ObjectSet("label_object1v", OBJPROP_YDISTANCE, 17); + + ObjectCreate("label_object2v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("label_object2v", OBJPROP_XDISTANCE, 5); + ObjectSet("label_object2v", OBJPROP_YDISTANCE, 37); + + ObjectCreate("label_object3v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("label_object3v", OBJPROP_XDISTANCE, 5); + ObjectSet("label_object3v", OBJPROP_YDISTANCE, 57); + // ---------------------------------------------------------------------------- + ObjectCreate("H11v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H11v", OBJPROP_XDISTANCE, 40); + ObjectSet("H11v", OBJPROP_YDISTANCE, 15); + + ObjectCreate("H12v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H12v", OBJPROP_XDISTANCE, 70); + ObjectSet("H12v", OBJPROP_YDISTANCE, 15); + + ObjectCreate("H13v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H13v", OBJPROP_XDISTANCE, 100); + ObjectSet("H13v", OBJPROP_YDISTANCE, 15); + + ObjectCreate("H14v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H14v", OBJPROP_XDISTANCE, 130); + ObjectSet("H14v", OBJPROP_YDISTANCE, 15); + + ObjectCreate("H15v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H15v", OBJPROP_XDISTANCE, 160); + ObjectSet("H15v", OBJPROP_YDISTANCE, 15); + //--------------------------------------------------------------------------- + ObjectCreate("H41v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H41v", OBJPROP_XDISTANCE, 40); + ObjectSet("H41v", OBJPROP_YDISTANCE, 35); + + ObjectCreate("H42v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H42v", OBJPROP_XDISTANCE, 70); + ObjectSet("H42v", OBJPROP_YDISTANCE, 35); + + ObjectCreate("H43v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H43v", OBJPROP_XDISTANCE, 100); + ObjectSet("H43v", OBJPROP_YDISTANCE, 35); + + ObjectCreate("H44v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H44v", OBJPROP_XDISTANCE, 130); + ObjectSet("H44v", OBJPROP_YDISTANCE, 35); + + ObjectCreate("H45v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("H45v", OBJPROP_XDISTANCE, 160); + ObjectSet("H45v", OBJPROP_YDISTANCE, 35); + //--------------------------------------------------------------------------- + ObjectCreate("D11v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("D11v", OBJPROP_XDISTANCE, 40); + ObjectSet("D11v", OBJPROP_YDISTANCE, 55); + + ObjectCreate("D12v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("D12v", OBJPROP_XDISTANCE, 70); + ObjectSet("D12v", OBJPROP_YDISTANCE, 55); + + ObjectCreate("D13v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("D13v", OBJPROP_XDISTANCE, 100); + ObjectSet("D13v", OBJPROP_YDISTANCE, 55); + + ObjectCreate("D14v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("D14v", OBJPROP_XDISTANCE, 130); + ObjectSet("D14v", OBJPROP_YDISTANCE, 55); + + ObjectCreate("D15v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSet("D15v", OBJPROP_XDISTANCE, 160); + ObjectSet("D15v", OBJPROP_YDISTANCE, 55); + + MaH11v=iMA(NULL,TF1,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,0); MaH1pr1v=iMA(NULL,TF1,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,1); + MaH12v=iMA(NULL,TF1,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,0); MaH1pr2v=iMA(NULL,TF1,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,1); + MaH13v=iMA(NULL,TF1,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,0); MaH1pr3v=iMA(NULL,TF1,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,1); + MaH14v=iMA(NULL,TF1,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,0); MaH1pr4v=iMA(NULL,TF1,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,1); + MaH15v=iMA(NULL,TF1,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,0); MaH1pr5v=iMA(NULL,TF1,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,1); + + MaH41v=iMA(NULL,TF2,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,0); MaH4pr1v=iMA(NULL,TF2,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,1); + MaH42v=iMA(NULL,TF2,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,0); MaH4pr2v=iMA(NULL,TF2,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,1); + MaH43v=iMA(NULL,TF2,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,0); MaH4pr3v=iMA(NULL,TF2,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,1); + MaH44v=iMA(NULL,TF2,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,0); MaH4pr4v=iMA(NULL,TF2,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,1); + MaH45v=iMA(NULL,TF2,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,0); MaH4pr5v=iMA(NULL,TF2,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,1); + + MaD11v=iMA(NULL,TF3,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,0); MaD1pr1v=iMA(NULL,TF3,maTrendPeriodv_1,0,MODE_SMA,PRICE_CLOSE,1); + MaD12v=iMA(NULL,TF3,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,0); MaD1pr2v=iMA(NULL,TF3,maTrendPeriodv_2,0,MODE_SMA,PRICE_CLOSE,1); + MaD13v=iMA(NULL,TF3,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,0); MaD1pr3v=iMA(NULL,TF3,maTrendPeriodv_3,0,MODE_SMA,PRICE_CLOSE,1); + MaD14v=iMA(NULL,TF3,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,0); MaD1pr4v=iMA(NULL,TF3,maTrendPeriodv_4,0,MODE_SMA,PRICE_CLOSE,1); + MaD15v=iMA(NULL,TF3,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,0); MaD1pr5v=iMA(NULL,TF3,maTrendPeriodv_5,0,MODE_SMA,PRICE_CLOSE,1); + + // MaH4=iMA(NULL,PERIOD_M30,34,0,MODE_SMA,PRICE_CLOSE,0); + if (MaH11v < MaH1pr1v){H11v = " V "; co11v = Red; u1x5v = 0; d1x5v = 1;} + if (MaH11v > MaH1pr1v){H11v = " /\\ "; co11v = Blue; u1x5v = 1; d1x5v = 0;} + if (MaH11v == MaH1pr1v){H11v = " 0 "; co11v = Green; u1x5v = 0; d1x5v = 0;} + if (MaH41v < MaH4pr1v){H41v = " V "; co41v = Red; u2x5v = 0; d2x5v = 1;} + if (MaH41v > MaH4pr1v){H41v = " /\\ "; co41v = Blue; u2x5v = 1; d2x5v = 0;} + if (MaH41v == MaH4pr1v){H41v = " 0 "; co41v = Green; u2x5v = 0; d2x5v = 0;} + if (MaD11v < MaD1pr1v){D11v = " V "; co61v = Red; u3x5v = 0; d3x5v = 1;} + if (MaD11v > MaD1pr1v){D11v = " /\\ "; co61v = Blue; u3x5v = 1; d3x5v = 0;} + if (MaD11v == MaD1pr1v){D11v = " 0 "; co61v = Green; u3x5v = 0; d3x5v = 0;} + + if (MaH12v < MaH1pr2v){H12v = " V "; co12v = Red; u1x8v = 0; d1x8v = 1;} + if (MaH12v > MaH1pr2v){H12v = " /\\ "; co12v = Blue; u1x8v = 1; d1x8v = 0;} + if (MaH12v == MaH1pr2v){H12v = " 0 "; co12v = Green; u1x8v = 0; d1x8v = 0;} + if (MaH42v < MaH4pr2v){H42v = " V "; co42v = Red; u2x8v = 0; d2x8v = 1;} + if (MaH42v > MaH4pr2v){H42v = " /\\ "; co42v = Blue; u2x8v = 1; d2x8v = 0;} + if (MaH42v == MaH4pr2v){H42v = " 0 "; co42v = Green; u2x8v = 0; d2x8v = 0;} + if (MaD12v < MaD1pr2v){D12v = " V "; co62v = Red; u3x8v = 0; d3x8v = 1;} + if (MaD12v > MaD1pr2v){D12v = " /\\ "; co62v = Blue; u3x8v = 1; d3x8v = 0;} + if (MaD12v == MaD1pr2v){D12v = " 0 "; co62v = Green; u3x8v = 0; d3x8v = 0;} + + if (MaH13v < MaH1pr3v){H13v = " V "; co13v = Red; u1x13v = 0; d1x13v = 1;} + if (MaH13v > MaH1pr3v){H13v = " /\\ "; co13v = Blue; u1x13v = 1; d1x13v = 0;} + if (MaH13v ==MaH1pr3v){H13v = " 0 "; co13v = Green; u1x13v = 0; d1x13v = 0;} + if (MaH43v < MaH4pr3v){H43v = " V "; co43v = Red; u2x13v = 0; d2x13v = 1;} + if (MaH43v > MaH4pr3v){H43v = " /\\ "; co43v = Blue; u2x13v = 1; d2x13v = 0;} + if (MaH43v ==MaH4pr3v){H43v = " 0 "; co43v = Green; u2x13v = 0; d2x13v = 0;} + if (MaD13v < MaD1pr3v){D13v = " V "; co63v = Red; u3x13v = 0; d3x13v = 1;} + if (MaD13v > MaD1pr3v){D13v = " /\\ "; co63v = Blue; u3x13v = 1; d3x13v = 0;} + if (MaD13v ==MaD1pr3v){D13v = " 0 "; co63v = Green; u3x13v = 0; d3x13v = 0;} + + if (MaH14v < MaH1pr4v){H14v = " V "; co14v = Red; u1x21v = 0; d1x21v = 1;} + if (MaH14v > MaH1pr4v){H14v = " /\\ "; co14v = Blue; u1x21v = 1; d1x21v = 0;} + if (MaH14v == MaH1pr4v){H14v = " 0 "; co14v = Green; u1x21v = 0; d1x21v = 0;} + if (MaH44v < MaH4pr4v){H44v = " V "; co44v = Red; u2x21v = 0; d2x21v = 1;} + if (MaH44v > MaH4pr4v){H44v = " /\\ "; co44v = Blue; u2x21v = 1; d2x21v = 0;} + if (MaH44v == MaH4pr4v){H44v = " 0 "; co44v = Green; u2x21v = 0; d2x21v = 0;} + if (MaD14v < MaD1pr4v){D14v = " V "; co64v = Red; u3x21v = 0; d3x21v = 1;} + if (MaD14v > MaD1pr4v){D14v = " /\\ "; co64v = Blue; u3x21v = 1; d3x21v = 0;} + if (MaD14v == MaD1pr4v){D14v = " 0 "; co64v = Green; u3x21v = 0; d3x21v = 0;} + + if (MaH15v < MaH1pr5v){H15v = " V "; co15v = Red; u1x34v = 0; d1x34v = 1;} + if (MaH15v > MaH1pr5v){H15v = " /\\ "; co15v = Blue; u1x34v = 1; d1x34v = 0;} + if (MaH15v == MaH1pr5v){H15v = " 0 "; co15v = Green; u1x34v = 0; d1x34v = 0;} + if (MaH45v < MaH4pr5v){H45v = " V "; co45v = Red; u2x34v = 0; d2x34v = 1;} + if (MaH45v > MaH4pr5v){H45v = " /\\ "; co45v = Blue; u2x34v = 1; d2x34v = 0;} + if (MaH45v == MaH4pr5v){H45v = " 0 "; co45v = Green; u2x34v = 0; d2x34v = 0;} + if (MaD15v < MaD1pr5v){D15v = " V "; co65v = Red; u3x34v = 0; d3x34v = 1;} + if (MaD15v > MaD1pr5v){D15v = " /\\ "; co65v = Blue; u3x34v = 1; d3x34v = 0;} + if (MaD15v == MaD1pr5v){D15v = " 0 "; co65v = Green; u3x34v = 0; d3x34v = 0;} + + // Comment(";JGF:"); + // "\n", "H4 - ", H41 , + // "\n", "D1 - ", D11 ); + + ObjectSetText("label_object1v", "M"+TF1+": ",9, "Verdana", Lime ); + ObjectSetText("label_object2v", "M"+TF2+": ",9, "Verdana", Lime ); + ObjectSetText("label_object3v", "M"+TF3+": ",9, "Verdana", Lime ); + + + +// ObjectSetText("label_object1v", "TF1 - ",11, "Verdana", Lime ); +// ObjectSetText("label_object2v", "TF2 - ",11, "Verdana", Lime ); +// ObjectSetText("label_object3v", "TF3 - ",11, "Verdana", Lime ); + + ObjectSetText("H11v", H11v ,11, "Verdana", co11v ); + ObjectSetText("H12v", H12v ,11, "Verdana", co12v ); + ObjectSetText("H13v", H13v ,11, "Verdana", co13v ); + ObjectSetText("H14v", H14v ,11, "Verdana", co14v ); + ObjectSetText("H15v", H15v ,11, "Verdana", co15v ); + + ObjectSetText("H41v", H41v ,11, "Verdana", co41v ); + ObjectSetText("H42v", H42v ,11, "Verdana", co42v ); + ObjectSetText("H43v", H43v ,11, "Verdana", co43v ); + ObjectSetText("H44v", H44v ,11, "Verdana", co44v ); + ObjectSetText("H45v", H45v ,11, "Verdana", co45v ); + + ObjectSetText("D11v", D11v ,11, "Verdana", co61v ); + ObjectSetText("D12v", D12v ,11, "Verdana", co62v ); + ObjectSetText("D13v", D13v ,11, "Verdana", co63v ); + ObjectSetText("D14v", D14v ,11, "Verdana", co64v ); + ObjectSetText("D15v", D15v ,11, "Verdana", co65v ); + +//---------------------------------------------------------------------------- +// AC Bil Vil +ObjectCreate("ACv", OBJ_LABEL, WindowFind(short_name), 0, 0); +ObjectSetText("ACv", "AC",9, "Verdana", Lime ); +ObjectSet("ACv", OBJPROP_XDISTANCE, 200); +ObjectSet("ACv", OBJPROP_YDISTANCE, 0); + +double acv = iAC(NULL, TF1, 0); +double ac1v = iAC(NULL, TF1, 1); +double ac2v = iAC(NULL, TF1, 2); +double ac3v = iAC(NULL, TF1, 3); +//double ac4 = iAO(NULL, 0, 4); +string ach11v; +color acco11v; + +if ((ac1v>ac2v && ac2v>ac3v && acv<0 && acv>ac1v) || (acv>ac1v && ac1v>ac2v && acv>0)) +{ach11v = "/\\ " ; acco11v = Blue; u1acv = 3; d1acv = 0;} +if ((ac1v0 && acvac1v) || (acv>ac1v && ac1v0))|| +(((ac1v>ac2v || ac2v>ac3v) && acv>0 && acvac2v && acv<0))) +{ach11v = "0 " ; acco11v = Green; u1acv = 0; d1acv = 0;} + +ObjectCreate("AC11v", OBJ_LABEL, WindowFind(short_name), 0, 0); +ObjectSetText("AC11v", ach11v,11, "Verdana", acco11v ); +ObjectSet("AC11v", OBJPROP_XDISTANCE, 200); +ObjectSet("AC11v", OBJPROP_YDISTANCE, 15); + +double ac03v = iAC(NULL, TF3, 0); +double ac13v = iAC(NULL, TF3, 1); +double ac23v = iAC(NULL, TF3, 2); +double ac33v = iAC(NULL, TF3, 3); +//double ac4 = iAO(NULL, 0, 4); +string ach13v; +color acco13v; + +if ((ac13v>ac23v && ac23v>ac33v && ac03v<0 && ac03v>ac13v) || (ac03v>ac13v && ac13v>ac23v && ac03v>0)) +{ach13v = "/\\ " ; acco13v = Blue; u3acv = 3; d3acv = 0;} +if ((ac13v0 && ac03vac13v) || (ac03v>ac13v && ac13v0))|| +(((ac13v>ac23v || ac23v>ac33v) && ac03v>0 && ac03vac23v && ac03v<0))) +{ach13v = "0 " ; acco13v = Green; u3acv = 0; d3acv = 0;} +ObjectCreate("AC13v", OBJ_LABEL, WindowFind(short_name), 0, 0); +ObjectSetText("AC13v", ach13v,11, "Verdana", acco13v ); +ObjectSet("AC13v", OBJPROP_XDISTANCE, 200); +ObjectSet("AC13v", OBJPROP_YDISTANCE, 55); + +double ac02v = iAC(NULL, TF2, 0); +double ac12v = iAC(NULL, TF2, 1); +double ac22v = iAC(NULL, TF2, 2); +double ac32v = iAC(NULL, TF2, 3); +//double ac4 = iAO(NULL, 0, 4); +string ach12v; +color acco12v; + +if ((ac12v>ac22v && ac22v>ac32v && ac02v<0 && ac02v>ac12v) || (ac02v>ac12v && ac12v>ac22v && ac02v>0)) +{ach12v = "/\\ " ; acco12v = Blue; u2acv = 3; d2acv = 0;} +if ((ac12v0 && ac02vac12v) || (ac02v>ac12v && ac12v0))|| +(((ac12v>ac22v || ac22v>ac32v) && ac02v>0 && ac02vac22v && ac02v<0))) +{ach12v = "0 " ; acco12v = Green; u2acv = 0; d2acv = 0;} +ObjectCreate("AC12v", OBJ_LABEL, WindowFind(short_name), 0, 0); +ObjectSetText("AC12v", ach12v,11, "Verdana", acco12v ); +ObjectSet("AC12v", OBJPROP_XDISTANCE, 200); +ObjectSet("AC12v", OBJPROP_YDISTANCE, 35); + + + +ObjectCreate("rezv", OBJ_LABEL, WindowFind(short_name), 0, 0); +ObjectSetText("rezv", "RESULTS",9, "Verdana", Lime ); +ObjectSet("rezv", OBJPROP_XDISTANCE, 240); +ObjectSet("rezv", OBJPROP_YDISTANCE, 0); + + + double uitog1v = (u1x5v + u1x8v + u1x13v + u1x21v + u1x34v + u1acv) * 12.5; + double uitog2v = (u2x5v + u2x8v + u2x13v + u2x21v + u2x34v + u2acv) * 12.5; + double uitog3v = (u3x5v + u3x8v + u3x13v + u3x21v + u3x34v + u3acv) * 12.5; + + double ditog1v = (d1x5v + d1x8v + d1x13v + d1x21v + d1x34v + d1acv) * 12.5; + double ditog2v = (d2x5v + d2x8v + d2x13v + d2x21v + d2x34v + d2acv) * 12.5; + double ditog3v = (d3x5v + d3x8v + d3x13v + d3x21v + d3x34v + d3acv) * 12.5; + + string hr1v, hr2v, hr3v, hr4v, hr5v,hr6v; + string dhr1v, dhr2v, dhr3v, dhr4v, dhr5v, dhr6v; + if (uitog1v> ditog1v) {hr1v = "Arial Black"; dhr1v = "Arial";} + if (uitog1v< ditog1v) {hr1v = "Arial"; dhr1v = "Arial Black";} + if (uitog1v == ditog1v) {hr1v = "Arial"; dhr1v = "Arial";} + + if (uitog2v> ditog2v) {hr2v = "Arial Black"; dhr2v = "Arial";} + if (uitog2v< ditog2v) {hr2v = "Arial"; dhr2v = "Arial Black";} + if (uitog2v == ditog2v) {hr2v = "Arial"; dhr2v = "Arial";} + + if (uitog3v> ditog3v) {hr3v = "Arial Black"; dhr3v = "Arial";} + if (uitog3v< ditog3v) {hr3v = "Arial"; dhr3v = "Arial Black";} + if (uitog3v == ditog3v) {hr3v = "Arial"; dhr3v = "Arial";} + + ObjectCreate("uitog1v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("uitog1v", StringConcatenate("/\\ ", uitog1v, "%"),12, hr1v, DodgerBlue ); + ObjectSet("uitog1v", OBJPROP_XDISTANCE, 235); + ObjectSet("uitog1v", OBJPROP_YDISTANCE, 15); + + ObjectCreate("uitog2v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("uitog2v", StringConcatenate("/\\ ",uitog2v, "%"),12, hr2v, DodgerBlue ); + ObjectSet("uitog2v", OBJPROP_XDISTANCE, 235); + ObjectSet("uitog2v", OBJPROP_YDISTANCE, 35); + + ObjectCreate("uitog3v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("uitog3v", StringConcatenate("/\\ ",uitog3v, "%"),12, hr3v, DodgerBlue ); + ObjectSet("uitog3v", OBJPROP_XDISTANCE, 235); + ObjectSet("uitog3v", OBJPROP_YDISTANCE, 55); + + ObjectCreate("ditog1v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("ditog1v", StringConcatenate("\\/ ", ditog1v, "%"),12, dhr1v, Red ); + ObjectSet("ditog1v", OBJPROP_XDISTANCE, 310); + ObjectSet("ditog1v", OBJPROP_YDISTANCE, 15); + + ObjectCreate("ditog2v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("ditog2v", StringConcatenate("\\/ ",ditog2v, "%"),12, dhr2v, Red ); + ObjectSet("ditog2v", OBJPROP_XDISTANCE, 310); + ObjectSet("ditog2v", OBJPROP_YDISTANCE, 35); + + ObjectCreate("ditog3v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("ditog3v", StringConcatenate("\\/ ",ditog3v, "%"),12, dhr3v, Red ); + ObjectSet("ditog3v", OBJPROP_XDISTANCE, 310); + ObjectSet("ditog3v", OBJPROP_YDISTANCE, 55); + + + string txtv; + if (uitog1v > 50 && uitog2v > 50 && uitog3v > 50) + + {txtv = "Not bad moment to open position BUY";} + else + {txtv = "Not recommended to open position. WAIT.";} + + if (ditog1v > 50 && ditog2v > 50 && ditog3v > 50) + {txtv = "Not bad moment to open position SELL";} + + if (uitog1v >= 75 && uitog2v >= 75 && uitog3v >= 75) + {txtv = "GOOD moment to open position BUY";} + if (ditog1v >= 75 && ditog2v >= 75 && ditog3v >= 75) + {txtv = "GOOD moment to open position SELL";} + + + ObjectCreate("txtv", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("txtv", txtv,14, "Verdana", Lime ); + ObjectSet("txtv", OBJPROP_XDISTANCE, 410); + ObjectSet("txtv", OBJPROP_YDISTANCE, 35); + + ObjectCreate("txt2v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("txt2v","multitimeframe indicator \TREND_ALEXCUD v2",7, "Verdana", DarkSlateGray ); + ObjectSet("txt2v", OBJPROP_XDISTANCE, 11); + ObjectSet("txt2v", OBJPROP_YDISTANCE, 80); + ObjectCreate("txt3v", OBJ_LABEL, WindowFind(short_name), 0, 0); + ObjectSetText("txt3v","Copyright © 2007 ALEXCUD v_2",7, "Verdana", DarkSlateGray ); + ObjectSet("txt3v", OBJPROP_XDISTANCE, 410); + ObjectSet("txt3v", OBJPROP_YDISTANCE, 80); + + return(0); + } +//+------------------------------------------------------------------+ \ No newline at end of file diff --git a/TRO_HOLO.mq4 b/TRO_HOLO.mq4 new file mode 100644 index 0000000..31f7d49 --- /dev/null +++ b/TRO_HOLO.mq4 @@ -0,0 +1,530 @@ +//+------------------------------------------------------------------+ +//| TRO_HOLO | +//| | +//| Copyright © 2009, Avery T. Horton, Jr. aka TheRumpledOne | +//| | +//| PO BOX 43575, TUCSON, AZ 85733 | +//| | +//| GIFTS AND DONATIONS ACCEPTED | +//| ALO my indicators should be considered donationware. That is | +//| you are free to use them for your personal use, and are | +//| under no obligation to pay for them. However, if you do find | +//| this or any of my other indicators help you with your trading | +//| then any Gift or Donation as a show of appreciation is | +//| gratefuLOy accepted. | +//| | +//| Gifts or Donations also keep me motivated in producing more | +//| great free indicators. :-) | +//| | +//| PayPal - THERUMPLEDONE@GMAIL.COM | +//+------------------------------------------------------------------+ +//| Use http://therumpledone.mbtrading.com/fx/ as your forex broker | +//| ...teLO them therumpledone sent you! | +//+------------------------------------------------------------------+ + + +#property copyright "Copyright © 2009, Avery T. Horton, Jr. aka TRO" +#property link "http://www.therumpledone.com/" + +#property indicator_chart_window + + + +extern int myChartX = 10 ; +extern int myChartY = 300 ; + +extern int myCorner = 1 ; +extern string myFont = "Courier New" ; +extern int myFontSize = 12 ; + +extern bool Show_Gauge = false ; +extern bool Show_Lines = true ; +extern bool Show_Labels = true ; +extern bool ShowBackground = True; + +extern int ShiftLabel = 5 ; +extern int LineStyle = 0 ; +extern int Line_Width = 1 ; + +extern int myPeriod = 0 ; + +extern int myBars = 34 ; +extern int myShift = 1 ; +extern double myThreshold = 10 ; + +extern color colorHigh = Red ; +extern color colorLow = Blue ; + +extern color UpColor = Lime; +extern color DownColor = Red; +extern color Line_Color_Open = Orange ; + +extern color BackgroundColor = C'30,33,36'; + +//+------------------------------------------------------------------+ + +double Hi, Li, C; + +double prev_high, prev_low, prev_close, D, p, value ; +int h ; +string lbl[15], lbl2[15], name; +int n, j, i ; + +color pColor = Blue, VolColor = Magenta ; + +string symbol, tChartPeriod, ShortName, TAG ; +int digits, period, win ; +double point, open, high, low, close, mid, range, pClose, pOpen, pHigh, pLow, pMid, pRange, cRange, PipDiff ; + + +int FiLOAmt = 11 , x001, x002, x003, x004, x005, x006, x007 ; + +int plotbars = 0 ; + + +double HO, LH, HL, LO, OH, OL, CH, CL; + +int limit,nHO, nLO, nHL, nLH; + + +double D1_Open, W1_Open, HO1, LH1, HL1, LO1, OH1, OL1, CH1, CL1; + +int BarShift, nHO1, nLO1, nHL1, nLH1; + +datetime DateTime ; + +//+------------------------------------------------------------------+ + +int init() + { + if(myPeriod == 0) { period = Period() ; } else { period = myPeriod ; } + tChartPeriod = TimeFrameToString(period) ; + symbol = Symbol() ; + digits = Digits ; + point = Point ; + TAG = "HoLo" ; + ShortName = TAG+symbol+period ; + win = 0 ; + + if(digits == 5 || digits == 3) { digits = digits - 1 ; point = point * 10 ; } + + +if( myCorner == 0 || myCorner == 2 ) +{ + x001 = 0 ; + x002 = 0 ; + x003 = 90 ; + x004 = 150; + x005 = 100 ; + x006 = 90 ; + x007 = 90 ; + FiLOAmt = 20 ; +} +else +{ + x001 = 0 ; + x002 = 130 ; // + x003 = 50 ; // + x004 = 0 ; // + x005 = 10 ; + x006 = 10 ; + x007 = 10 ; + FiLOAmt = 20 ; +} + + + deinit(); + + return(0); + } + + +//+------------------------------------------------------------------+ + +void ObDeleteObjectsByPrefix(string Prefix) + { + int L = StringLen(Prefix); + int i = 0; + while(i < ObjectsTotal()) + { + string ObjName = ObjectName(i); + if(StringSubstr(ObjName, 0, L) != Prefix) + { + i++; + continue; + } + ObjectDelete(ObjName); + } + } + +//+------------------------------------------------------------------+ +int deinit() + { + + ObDeleteObjectsByPrefix(TAG); + TRO() ; + + return(0); + } + +//+------------------------------------------------------------------+ +int start() +{ + + + + if(myBars == 0) { limit = WindowBarsPerChart() ; } else { limit = myBars ; } + +n = 10; +j = 0 ; + +if(Show_Gauge) +{ +lbl[j] = ShortName+j; +lbl2[j] = fFILL(tChartPeriod + " HIGHs LOWs +/-", 19) ; +DoShowHead(j, SteelBlue); +} + +close = iClose( symbol, 0, 0) ; + + + nHO = Highest(symbol,period,MODE_OPEN,limit,myShift); + nLO = Lowest(symbol,period,MODE_OPEN,limit,myShift); + + HO = iHigh(symbol,period,nHO); + LO = iLow(symbol,period,nLO); + + OH = iOpen(symbol,period,nHO); + CH = iClose(symbol,period,nHO); + OL = iOpen(symbol,period,nLO); + CL = iClose(symbol,period,nLO); + + + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "High(" + nHO + ")" ; +PipDiff = ( OH - close ) / point ; +DoColor( close, OH ) ; +if(Show_Gauge) { DoShow(j, colorHigh,OH ); } +if(Show_Lines) { drawLine(OH,TAG+"High(" , colorHigh, 2, Time[nHO], tChartPeriod+"["+nHO+"] Open High "+DoubleToStr(OH,digits) ) ; } + + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "Low(" + nLO + ") " ; +PipDiff = ( close - OL ) / point ; +DoColor( close, OL ) ; +if(Show_Gauge) { DoShow(j, colorLow, OL); } +if(Show_Lines) { drawLine(OL,TAG+"Low(" , colorLow, 2, Time[nLO], tChartPeriod+"["+nLO+"] Open Low "+DoubleToStr(OL,digits) ) ; } + + + + + + nHO1 = Highest(symbol,period,MODE_OPEN,limit,nHO+1); + nLO1 = Lowest(symbol,period,MODE_OPEN,limit,nLO+1); + + HO1 = iHigh(symbol,period,nHO1); + LO1 = iLow(symbol,period,nLO1); + + OH1 = iOpen(symbol,period,nHO1); + CH1 = iClose(symbol,period,nHO1); + OL1 = iOpen(symbol,period,nLO1); + CL1 = iClose(symbol,period,nLO1); + + + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "High(" + nHO1 + ")" ; +PipDiff = ( OH1 - close ) / point ; +DoColor( close, OH1 ) ; +if(Show_Gauge) { DoShow(j, colorHigh,OH1 ); } +if(Show_Lines && OH1 != OH) { drawLine(OH1,TAG+"High1(" , colorHigh, 2, Time[nHO1], tChartPeriod+"["+nHO1+"] Open High "+DoubleToStr(OH1,digits) ) ; } + + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "Low(" + nLO1 + ") " ; +PipDiff = ( close - OL1 ) / point ; +DoColor( close, OL1 ) ; +if(Show_Gauge) { DoShow(j, colorLow, OL1); } +if(Show_Lines && OL1 != OL) { drawLine(OL1,TAG+"Low1(" , colorLow, 2, Time[nLO1], tChartPeriod+"["+nLO1+"] Open Low "+DoubleToStr(OL1,digits) ) ; } + + +DateTime = iTime(symbol,PERIOD_D1,0) ; +D1_Open = iOpen(symbol,PERIOD_D1,0); + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "D1 Open" ; +PipDiff = ( close - D1_Open ) / point ; +DoColor( close, D1_Open ) ; +if(Show_Gauge) { DoShow(j, Line_Color_Open, D1_Open); } +if(Show_Lines) { drawLine(D1_Open,TAG+"D1 OPEN" , Line_Color_Open, 2, DateTime , "D1 Open "+DoubleToStr(D1_Open,digits) ) ; } + + + +DateTime = iTime(symbol,PERIOD_W1,0) ; +BarShift = iBarShift(symbol,PERIOD_W1,Time[0],true); +W1_Open = iOpen(symbol,PERIOD_W1,BarShift); + + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "W1 Open" ; +PipDiff = ( close - W1_Open ) / point ; +DoColor( close, W1_Open ) ; +if(Show_Gauge) { DoShow(j, Line_Color_Open, W1_Open); } +if(Show_Lines && W1_Open != D1_Open ) { drawLine(W1_Open,TAG+"W1 OPEN" , Line_Color_Open, 2, DateTime , "W1 Open "+DoubleToStr(W1_Open,digits) ) ; } + +/* + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "CH(" + nHO + ")" ; +PipDiff = ( CH - close ) / point ; +DoColor( close, CH ) ; +if(Show_Gauge) { DoShow(j, colorHigh,CH ); } +if(Show_Lines) { drawLine(CH,TAG+"CHigh(" + nHO, nHO, colorHigh, 2,tChartPeriod+"["+nHO+"] Close High "+DoubleToStr(CH,digits) ) ; } + + + +j = j + 1 ; +lbl[j] = ShortName+j; +lbl2[j] = "CL(" + nLO + ") " ; +PipDiff = ( close - CL ) / point ; +DoColor( close, CL ) ; +if(Show_Gauge) { DoShow(j, colorLow, CL); } +if(Show_Lines) { drawLine(CL,TAG+"CLow(" + nLO, nLO, colorLow, 2,tChartPeriod+"["+nLO+"] Close Low "+DoubleToStr(CL,digits) ) ; } + +*/ + + +j = j + 1 ; +name = ShortName+j; + if (ShowBackground) + { + if (ObjectFind(name) == -1) + ObjectCreate(name,OBJ_RECTANGLE,0,0,0); + ObjectSet(name,OBJPROP_TIME1,Time[nHO]) ; //iTime(NULL,DataPeriod,DataBar)); + ObjectSet(name,OBJPROP_TIME2,Time[nLO]) ; //iTime(NULL, 0,0)); + ObjectSet(name,OBJPROP_PRICE1,OH); + ObjectSet(name,OBJPROP_PRICE2,OL); + ObjectSet(name,OBJPROP_COLOR,BackgroundColor); + } + + + return(0); + } +//+------------------------------------------------------------------+ + +void DoShowHead( int u, color dsColor ) +{ +string rlabelH = lbl[u] + "Head" ; +ObjectCreate(rlabelH,23,0,Time[0],PRICE_CLOSE); +ObjectSet(rlabelH, OBJPROP_CORNER, myCorner ); +ObjectSet(rlabelH,OBJPROP_XDISTANCE, x001+myChartX); +ObjectSet(rlabelH,OBJPROP_YDISTANCE,n+myChartY); +ObjectSetText(rlabelH,lbl2[u],myFontSize,myFont,dsColor); + +n = n+20; + + +} +//+------------------------------------------------------------------+ + +void DoShow( int u, color dsColor, double dsPrice ) +{ +ObjectCreate(lbl[u],23,0,Time[0],PRICE_CLOSE); +ObjectSet(lbl[u], OBJPROP_CORNER, myCorner ); +ObjectSet(lbl[u],OBJPROP_XDISTANCE,x002+myChartX); +ObjectSet(lbl[u],OBJPROP_YDISTANCE,n+myChartY); +ObjectSetText(lbl[u],lbl2[u],myFontSize,myFont,dsColor); + +string Obj001 = lbl[u] + "price" ; +string sVal = fFILL(DoubleToStr(dsPrice,digits), 7) ; +ObjectCreate(Obj001,23,0,Time[0],PRICE_CLOSE); +ObjectSet(Obj001, OBJPROP_CORNER, myCorner ); +ObjectSet(Obj001,OBJPROP_XDISTANCE, x003+myChartX); +ObjectSet(Obj001,OBJPROP_YDISTANCE,n+myChartY); +ObjectSetText(Obj001,sVal,myFontSize,myFont,dsColor); + + +string Obj002 = lbl[u] + "avg" ; +string sDif = rtadjust( DoubleToStr(PipDiff,0) ) ; +ObjectCreate(Obj002,23,0,Time[0],PRICE_CLOSE); +ObjectSet(Obj002, OBJPROP_CORNER, myCorner ); +ObjectSet(Obj002,OBJPROP_XDISTANCE, x004+myChartX); +ObjectSet(Obj002,OBJPROP_YDISTANCE,n+myChartY); +ObjectSetText(Obj002,sDif,myFontSize,myFont,pColor); + +n = n+20; + + } + + + +//+------------------------------------------------------------------+ + +void DoColor( double c1, double c2 ) +{ + +if(c1 > c2 ) { pColor = Lime ; } else { +if(c1 < c2 ) { pColor = Red ; } else { pColor = Yellow ; } } + +} + +//+------------------------------------------------------------------+ +void drawLine(double lvl,string name, color Col,int type, datetime StartTime, string text) +{ + + + + if(ObjectFind(name) != 0) + { + ObjectCreate(name, OBJ_TREND, 0, StartTime, lvl,Time[0],lvl); + + + ObjectSet(name, OBJPROP_STYLE, LineStyle); + + ObjectSet(name, OBJPROP_COLOR, Col); + ObjectSet(name,OBJPROP_WIDTH,1); + ObjectSet(name,OBJPROP_RAY,false); + + } + else + { + ObjectDelete(name); + ObjectCreate(name, OBJ_TREND, 0, StartTime, lvl,Time[0],lvl); + + ObjectSet(name, OBJPROP_STYLE, LineStyle); + + ObjectSet(name, OBJPROP_COLOR, Col); + ObjectSet(name,OBJPROP_WIDTH,1); + ObjectSet(name,OBJPROP_RAY,false); + + } + + if(Show_Labels) + { + string Obj0002 = name+"linelbl" ; + + datetime LabelTime = Time[0]+Period()*60*ShiftLabel ; + + ObjectDelete(Obj0002); + + if(ObjectFind(Obj0002) != 0) + { + ObjectCreate(Obj0002, OBJ_TEXT, 0, LabelTime, lvl); + ObjectSetText(Obj0002,text , 8, "Arial", Col); + } + else + { + ObjectMove(Obj0002, 0, LabelTime, lvl); + } // if + + } // if + +} +//+------------------------------------------------------------------+ +string TimeFrameToString(int tf) +{ + string tfs; + switch(tf) { + case PERIOD_M1: tfs="M1" ; break; + case PERIOD_M5: tfs="M5" ; break; + case PERIOD_M15: tfs="M15" ; break; + case PERIOD_M30: tfs="M30" ; break; + case PERIOD_H1: tfs="H1" ; break; + case PERIOD_H4: tfs="H4" ; break; + case PERIOD_D1: tfs="D1" ; break; + case PERIOD_W1: tfs="W1" ; break; + case PERIOD_MN1: tfs="MN"; + } + return(tfs); +} + +//+------------------------------------------------------------------+ + +string fFILL(string fiLOed, int f ) +{ + string FILOED ; + + FILOED = StringSubstr(fiLOed + " ",0,f) ; + +return(FILOED); +} + + + +//+------------------------------------------------------------------+ +string rtadjust( string rString ) +{ + + int sl = StringLen(rString) ; + + while(true) + { + + if( sl == 5) { break ; } + if( sl == 4) { rString = " " + rString ; break ; } + if( sl == 3) { rString = " " + rString ; break ; } + if( sl == 2) { rString = " " + rString ; break ; } + if( sl == 1) { rString = " " + rString ; break ; } + + break ; + } + +return(rString) ; +} + +//+------------------------------------------------------------------+ + +void TRO() +{ + + string tObjName03 = "TROTAG" ; + ObjectCreate(tObjName03, OBJ_LABEL, 0, 0, 0);//HiLow LABEL + ObjectSetText(tObjName03, CharToStr(78) , 12 , "Wingdings", DimGray ); + ObjectSet(tObjName03, OBJPROP_CORNER, 3); + ObjectSet(tObjName03, OBJPROP_XDISTANCE, 5 ); + ObjectSet(tObjName03, OBJPROP_YDISTANCE, 5 ); +} + + +//+------------------------------------------------------------------+ + +/* + + high = MathMax(iOpen(symbol,period,nHO),iClose(symbol,period,nHO)); + low = MathMax(iOpen(symbol,period,nLO),iClose(symbol,period,nLO)); + + +//+------------------------------------------------------------------+ +void drawLabel(string name,double lvl,color Color) +{ + if(ObjectFind(name) != 0) + { + ObjectCreate(name, OBJ_TEXT, 0, Time[10], lvl); + ObjectSetText(name, name, 14, "Arial", EMPTY); + ObjectSet(name, OBJPROP_COLOR, Color); + } + else + { + ObjectMove(name, 0, Time[10], lvl); + } +} + + +Comment( + +"MathAbs((close - high) / point " , DoubleToStr(MathAbs((close - high) / point),Digits) , "\n" , +"MathAbs((close - low) / point " , DoubleToStr(MathAbs((close - low) / point),Digits) , "\n" , + +"myThreshold " , DoubleToStr(myThreshold,Digits) , "\n" , +"TestVol " , TestVol , "\n" , +"") ; + +*/ \ No newline at end of file diff --git a/TRO_TRAININGWHEELS.mq4 b/TRO_TRAININGWHEELS.mq4 new file mode 100644 index 0000000..5f79d9f --- /dev/null +++ b/TRO_TRAININGWHEELS.mq4 @@ -0,0 +1,234 @@ +//+------------------------------------------------------------------+ +//| TRO_TRAININGWHEELS | +//| | +//| Copyright © 2008, Avery T. Horton, Jr. aka TheRumpledOne | +//| | +//| PO BOX 43575, TUCSON, AZ 85733 | +//| | +//| GIFTS AND DONATIONS ACCEPTED | +//| | +//| therumpledone@gmail.com | +//+------------------------------------------------------------------+ + + +#property copyright "Copyright © 2008, Avery T. Horton, Jr. aka TRO" +#property link "http://www.therumpledone.com/" + +//---- indicator settings +#property indicator_chart_window +#property indicator_buffers 0 +#property indicator_minimum 0 +#property indicator_maximum 1 + +//---- indicator parameters +extern bool TURN_OFF = false ; + +extern int win = 0; +extern int corner = 3; +extern int price_x_offset = 0 ; +extern int price_y_offset = 30 ; + +extern string myFont = "Arial Bold" ; +extern int myFontSize = 16; + + +extern string noteTimeNY = " 14:00 server time = 05:00 mst" ; +extern string noteTimeTY = " 23:00 server time = 14:00 mst" ; +extern string noteTimeAU = " 01:00 server time = 16:00 mst" ; +extern string noteTimeLD = " 09:00 server time = 00:00 mst" ; + + +extern string myHHMM = "00:00"; // 05:00 am pst = 14:00 server time +extern string myMessage = "NY" ; + + +extern string Buy_Message = "ONLY TRADE LONG " ; +extern string Wait_Message = "*** WAIT *** " ; +extern string Sell_Message = "ONLY TRADE SHORT" ; +extern string Rdy_Message = "*** GET READY *** " ; + +extern color Buy_color = Lime; +extern color Wait_color = Yellow; +extern color Sell_color = Red; +extern color Rdy_color = Orange; + +string tMessage , oldmsg = "" ; + +string symbol, tChartPeriod, tShortName ; +int digits, period ; + +datetime Trigger ; + +int OldBars = -1 ; + +color tColor = Yellow ; + +color ClOpColor; + +double H1_open, H1_close, open, close, diff, spread, DailyOpen ; + +string tObjName03 = "TROTW" ; + +//+------------------------------------------------------------------+ +int init() + { + period = Period() ; +// tChartPeriod = TimeFrameToString(period) ; + symbol = Symbol() ; + digits = Digits ; + + tShortName = "tw"+ symbol + tChartPeriod ; + deinit() ; + + return(0); + } +//+------------------------------------------------------------------+ + +int deinit() +{ + + ObjectDelete("TRAIN30"); + ObjectDelete("TRAIN29"); + ObjectDelete("TRAIN29B"); + ObjectDelete("TRAIN31"); + ObjectDelete("TRAIN32"); + ObjectDelete("TRAIN34"); + ObjectDelete(tObjName03); + TRO() ; + + return(0); +} + +//+------------------------------------------------------------------+ +int start() +{ + if( TURN_OFF ) { deinit(); return(0) ; } + + DoDailyOpen() ; + + open = iOpen(symbol,0,0); + close = iClose(symbol,0,0); + + H1_open = iOpen(symbol,PERIOD_H1,0); + + +while(true) +{ + +if( close > open && close > DailyOpen && close > H1_open ) { tMessage = Buy_Message ; ClOpColor = Buy_color ; break ; } + +if( close > DailyOpen && close > H1_open ) { tMessage = Rdy_Message ; ClOpColor = Buy_color ; break ; } + +if( close < open && close < DailyOpen && close < H1_open ) { tMessage = Sell_Message ; ClOpColor = Sell_color ; break ; } + +if( close < DailyOpen && close < H1_open ) { tMessage = Rdy_Message ; ClOpColor = Sell_color ; break ; } + + +tMessage = Wait_Message ; ClOpColor = Wait_color ; + +break; + +} // while + +tMessage = fFill(tMessage,20) ; + +oldmsg = tMessage ; + + + +//+------------------------------------------------------------------+ + + ObjectCreate("TRAIN31", OBJ_LABEL, win, 0, 0);//HiLow LABEL + ObjectSetText("TRAIN31",tMessage, myFontSize , myFont, ClOpColor ); + ObjectSet("TRAIN31", OBJPROP_CORNER, corner); + ObjectSet("TRAIN31", OBJPROP_XDISTANCE, price_x_offset); + ObjectSet("TRAIN31", OBJPROP_YDISTANCE, price_y_offset); + + + string note2 = "Default Font Color"; + color twFontColor = DimGray; + string note3 = "Font Size"; + int twFontSize = 8; + string note4 = "Font Type"; + string twFontType = "Verdana"; // Tahoma Courier + string RAN953 = "*** TRO TRAINING WHEELS ***" ; + + + ObjectCreate(tObjName03, OBJ_LABEL, 0, 0, 0);//HiLow LABEL + ObjectSetText(tObjName03, RAN953 , twFontSize , twFontType, twFontColor ); + ObjectSet(tObjName03, OBJPROP_CORNER, 3); + ObjectSet(tObjName03, OBJPROP_XDISTANCE, 15 ); + ObjectSet(tObjName03, OBJPROP_YDISTANCE, 10 ); +//+------------------------------------------------------------------+ + + WindowRedraw(); + + return(0); +} + +//+------------------------------------------------------------------+ + +void DoDailyOpen() +{ + +int yy = TimeYear(Time[0]); +int mm = TimeMonth(Time[0]); +int dd = TimeDay(Time[0]); + +string yymmddms = yy+"."+mm+"."+dd+" " + myHHMM ; + +datetime var1 = StrToTime(yymmddms); + +datetime day=24*60*60; +datetime r= var1 ; + +int cd=iBarShift(NULL,0,r,FALSE); +datetime r2=r-day; + +if(TimeDayOfWeek(r2)==0) r2=r2-day-day; +int cd2=iBarShift(NULL,0,r2,FALSE); + +if( var1 > Time[0] ) { r = r2 ;cd = cd2 ;} // if date/time is greater than current date/time go back 1 day + +DailyOpen = iOpen(symbol,0,cd); + + +} +//+------------------------------------------------------------------+ + +string fFill(string filled, int f ) +{ + string FILLED ; + + FILLED = StringSubstr(filled + " ",0,f) ; + +return(FILLED); +} + +//+------------------------------------------------------------------+ +void TRO() +{ + + string TRO_OBJ = "TROTAG" ; + ObjectCreate(TRO_OBJ, OBJ_LABEL, 0, 0, 0);//HiLow LABEL + ObjectSetText(TRO_OBJ, CharToStr(78) , 12 , "Wingdings", DimGray ); + ObjectSet(TRO_OBJ, OBJPROP_CORNER, 3); + ObjectSet(TRO_OBJ, OBJPROP_XDISTANCE, 5 ); + ObjectSet(TRO_OBJ, OBJPROP_YDISTANCE, 5 ); +} +//+------------------------------------------------------------------+ + + +/* + + +Comment( + + +"DailyOpen " , DoubleToStr(DailyOpen,Digits) , "\n" , + + +"") ; + + +*/ \ No newline at end of file diff --git a/Ultimate Arrows.mq4 b/Ultimate Arrows.mq4 new file mode 100644 index 0000000..3ba8619 --- /dev/null +++ b/Ultimate Arrows.mq4 @@ -0,0 +1,150 @@ +//+------------------------------------------------------------------+ +//| zigzag-pointer.mq4 | +//| zigzag modified by Dr. Gaines | +//| dr_richard_gaines@yahoo.com | +//| http://www.metaquotes.net | +//+------------------------------------------------------------------+ +#property copyright "dr_richard_gaines" +#property link "http://www.metaquotes.net/" + +#property indicator_chart_window +#property indicator_buffers 2 +#property indicator_color1 Lime +#property indicator_width1 5 +#property indicator_color2 Lime +#property indicator_width2 5 +//---- indicator parameters +extern int ExtDepth=115;//105;//21; +extern int ExtDeviation=130;//120;//24; +extern int ExtBackstep=80;//70;//14; +//---- indicator buffers +double ZigZagUp[]; +double ZigZagDown[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { + IndicatorBuffers(2); +//---- drawing settings + SetIndexStyle(0,DRAW_ARROW); + SetIndexArrow(0, 233); + SetIndexStyle(1,DRAW_ARROW); + SetIndexArrow(1, 234); +//---- indicator buffers mapping + SetIndexBuffer(0,ZigZagUp); + SetIndexBuffer(1,ZigZagDown); + SetIndexEmptyValue(0,0.0); + SetIndexEmptyValue(1,0.0); +//---- indicator short name + IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")"); +//---- initialization done + return(0); + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int start() + { + int shift, back,lasthighpos,lastlowpos; + double val,res; + double curlow,curhigh,lasthigh,lastlow; + + for(shift=Bars-ExtDepth; shift>=0; shift--) + { + val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)]; + if(val==lastlow) val=0.0; + else + { + lastlow=val; + if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0; + else + { + for(back=1; back<=ExtBackstep; back++) + { + res=ZigZagUp[shift+back]; + if((res!=0)&&(res>val)) { ZigZagUp[shift+back]=0.0; } + } + } + } + ZigZagUp[shift]=val; + //--- high + val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)]; + if(val==lasthigh) val=0.0; + else + { + lasthigh=val; + if((val-High[shift])>(ExtDeviation*Point)) val=0.0; + else + { + for(back=1; back<=ExtBackstep; back++) + { + res=ZigZagDown[shift+back]; + if((res!=0)&&(res=0; shift--) + { + curlow=ZigZagUp[shift]; + curhigh=ZigZagDown[shift]; + if((curlow==0)&&(curhigh==0)) continue; + //--- + if(curhigh!=0) + { + if(lasthigh>0) + { + if(lasthigh0) + { + if(lastlow>curlow) + { + ZigZagUp[lastlowpos]=0; + } + else ZigZagUp[shift]=0; + } + //--- + if((curlow=0; shift--) + { + if(shift>=Bars-ExtDepth) ZigZagUp[shift]=0.0; + else + { + res=ZigZagDown[shift]; + if(res!=0.0) ZigZagDown[shift]=res; + } + } + } + + //end// \ No newline at end of file diff --git a/VENOM A.mq4 b/VENOM A.mq4 new file mode 100644 index 0000000..33596d5 --- /dev/null +++ b/VENOM A.mq4 @@ -0,0 +1,426 @@ +#property copyright "Copyright © 2007 Third Wave FX" +#property link "http://www.thirdwavefx.com" + +#property indicator_chart_window + +extern string indi_name = "Third Wave FX VENOM - Window 2"; +int G_period_84 = 50; +int G_period_88 = 100; + +// E37F0136AA3FFAF149B351F6A4C948E9 +int init() { + return (0); +} + +// 52D46093050F38C27267BCE42543EF60 +int deinit() { + ObjectsDeleteAll(0, OBJ_LABEL); + ObjectDelete("Website"); + ObjectDelete("Expiry"); + ObjectDelete("Lock"); + ObjectDelete("BG1"); + ObjectDelete("BG2"); + ObjectDelete("BG3"); + ObjectDelete("BG4"); + ObjectDelete("BG5"); + ObjectDelete("BG6"); + ObjectDelete("BG7"); + ObjectDelete("BG8"); + ObjectDelete("BG9"); + ObjectDelete("BG10"); + ObjectDelete("BG11"); + ObjectDelete("BG12"); + ObjectDelete("BG13"); + ObjectDelete("BG14"); + ObjectDelete("BG15"); + ObjectDelete("BG16"); + ObjectDelete("BG17"); + ObjectDelete("BG18"); + ObjectDelete("Venom_Pair"); + ObjectDelete("Venom_Price"); + ObjectDelete("Venom_Spread"); + ObjectDelete("Buy_Signal"); + ObjectDelete("Buy_Signal1"); + ObjectDelete("Sell_Signal"); + ObjectDelete("Sell_Signal1"); + ObjectDelete("Buy_Price"); + ObjectDelete("Buy_Time"); + ObjectDelete("Sell_Price"); + ObjectDelete("Sell_Time"); + ObjectDelete("1_SR"); + ObjectDelete("2_SR"); + ObjectDelete("3_SR"); + ObjectDelete("4_SR"); + ObjectDelete("Top"); + ObjectDelete("Middle"); + ObjectDelete("Bottom"); + ObjectDelete("Data"); + return (0); +} + +// EA2B2676C28C0DB26D39331A336C6B92 +int start() { + double minute_0; + double hour_8; + double day_16; + double month_24; + double year_32; + string Ls_40; + string Ls_48; + string Ls_56; + string Ls_64; + string dbl2str_72; + double bid_80; + double digits_88; + double spread_96; + string dbl2str_104; + string dbl2str_112; + int minute_120; + int hour_124; + int day_128; + string var_name_132; + string var_name_140; + int global_var_148; + int global_var_152; + double digits_156; + double bid_164; + string var_name_172; + string var_name_180; + string var_name_188; + string var_name_196; + string dbl2str_204; + string Ls_212; + string Ls_220; + int global_var_228; + double global_var_232; + double global_var_240; + double global_var_248; + string var_name_256; + string var_name_264; + string var_name_272; + string var_name_280; + string dbl2str_288; + string Ls_296; + string Ls_304; + int global_var_312; + double global_var_316; + double global_var_324; + double global_var_332; + datetime time_340; + int Li_344; + double ima_348; + double ima_356; + double ima_364; + double ima_372; + double ima_380; + double ima_388; + double Ld_396; + double Ld_404; + double Ld_412; + double Ld_420; + double Ld_428; + double Ld_436; + double Ld_444; + double Ld_452; + double Ld_460; + double Ld_468; + int datetime_476; + int datetime_480; + double ima_484; + double ima_492; + int datetime_500; + int datetime_504; + double ima_508; + double ima_516; + int datetime_524; + int datetime_528; + ObjectCreate("Name", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Name", "THIRDWAVEFX", 12, "Verdana", Red); + ObjectSet("Name", OBJPROP_CORNER, 1); + ObjectSet("Name", OBJPROP_XDISTANCE, 120); + ObjectSet("Name", OBJPROP_YDISTANCE, 31); + ObjectCreate("Name1", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Name1", "VENOM", 20, "Arial Black", White); + ObjectSet("Name1", OBJPROP_CORNER, 1); + ObjectSet("Name1", OBJPROP_XDISTANCE, 4); + ObjectSet("Name1", OBJPROP_YDISTANCE, 19); + ObjectCreate("Website", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Website", "www.thirdwavefx.com", 12, "Verdana", Red); + ObjectSet("Website", OBJPROP_CORNER, 1); + ObjectSet("Website", OBJPROP_XDISTANCE, 4); + ObjectSet("Website", OBJPROP_YDISTANCE, 5); + ObjectCreate("Expiry", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Expiry", "Coded By ShahJB", 10, "Arial Narrow", Silver); + ObjectSet("Expiry", OBJPROP_CORNER, 1); + ObjectSet("Expiry", OBJPROP_XDISTANCE, 4); + ObjectSet("Expiry", OBJPROP_YDISTANCE, 53); + ObjectCreate("Lock", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Lock", "sharishen@gmail.com", 10, "Arial Narrow", Silver); + ObjectSet("Lock", OBJPROP_CORNER, 1); + ObjectSet("Lock", OBJPROP_XDISTANCE, 4); + ObjectSet("Lock", OBJPROP_YDISTANCE, 70); + RefreshRates(); + int second_532 = TimeSeconds(TimeCurrent()); + int minute_536 = TimeMinute(TimeCurrent()); + int hour_540 = TimeHour(TimeCurrent()); + int day_544 = TimeDay(TimeCurrent()); + int month_548 = TimeMonth(TimeCurrent()); + int year_552 = TimeYear(TimeCurrent()); + if (year_552 < 2030) { + ObjectCreate("BG1", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG1", "nnnnn", 50, "Wingdings", Black); + ObjectSet("BG1", OBJPROP_CORNER, 0); + ObjectSet("BG1", OBJPROP_XDISTANCE, 0); + ObjectSet("BG1", OBJPROP_YDISTANCE, 0); + ObjectCreate("BG2", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG2", "nnnn", 50, "Wingdings", Black); + ObjectSet("BG2", OBJPROP_CORNER, 0); + ObjectSet("BG2", OBJPROP_XDISTANCE, 15); + ObjectSet("BG2", OBJPROP_YDISTANCE, 0); + ObjectCreate("BG3", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG3", "nnnnn", 50, "Wingdings", Black); + ObjectSet("BG3", OBJPROP_CORNER, 0); + ObjectSet("BG3", OBJPROP_XDISTANCE, 0); + ObjectSet("BG3", OBJPROP_YDISTANCE, 35); + ObjectCreate("BG4", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG4", "nnnn", 50, "Wingdings", Black); + ObjectSet("BG4", OBJPROP_CORNER, 0); + ObjectSet("BG4", OBJPROP_XDISTANCE, 15); + ObjectSet("BG4", OBJPROP_YDISTANCE, 35); + ObjectCreate("BG5", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG5", "nnnnn", 50, "Wingdings", Black); + ObjectSet("BG5", OBJPROP_CORNER, 0); + ObjectSet("BG5", OBJPROP_XDISTANCE, 0); + ObjectSet("BG5", OBJPROP_YDISTANCE, 70); + ObjectCreate("BG6", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG6", "nnnn", 50, "Wingdings", Black); + ObjectSet("BG6", OBJPROP_CORNER, 0); + ObjectSet("BG6", OBJPROP_XDISTANCE, 15); + ObjectSet("BG6", OBJPROP_YDISTANCE, 70); + ObjectCreate("BG7", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG7", "nnnnn", 50, "Wingdings", Black); + ObjectSet("BG7", OBJPROP_CORNER, 0); + ObjectSet("BG7", OBJPROP_XDISTANCE, 0); + ObjectSet("BG7", OBJPROP_YDISTANCE, 105); + ObjectCreate("BG8", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG8", "nnnn", 50, "Wingdings", Black); + ObjectSet("BG8", OBJPROP_CORNER, 0); + ObjectSet("BG8", OBJPROP_XDISTANCE, 15); + ObjectSet("BG8", OBJPROP_YDISTANCE, 105); + ObjectCreate("BG9", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG9", "nnnnn", 50, "Wingdings", Black); + ObjectSet("BG9", OBJPROP_CORNER, 0); + ObjectSet("BG9", OBJPROP_XDISTANCE, 0); + ObjectSet("BG9", OBJPROP_YDISTANCE, 128); + ObjectCreate("BG10", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("BG10", "nnnn", 50, "Wingdings", Black); + ObjectSet("BG10", OBJPROP_CORNER, 0); + ObjectSet("BG10", OBJPROP_XDISTANCE, 15); + ObjectSet("BG10", OBJPROP_YDISTANCE, 128); + minute_0 = minute_536; + hour_8 = hour_540; + day_16 = day_544; + month_24 = month_548; + year_32 = year_552; + if (minute_0 < 10.0) Ls_40 = "0" + DoubleToStr(minute_0, 0); + else Ls_40 = DoubleToStr(minute_0, 0); + if (hour_8 < 10.0) Ls_48 = "0" + DoubleToStr(hour_8, 0); + else Ls_48 = DoubleToStr(hour_8, 0); + if (day_16 < 10.0) Ls_56 = "0" + DoubleToStr(day_16, 0); + else Ls_56 = DoubleToStr(day_16, 0); + if (month_24 < 10.0) Ls_64 = "0" + DoubleToStr(month_24, 0); + else Ls_64 = DoubleToStr(month_24, 0); + dbl2str_72 = DoubleToStr(year_32, 0); + ObjectCreate("Venom_Date", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Venom_Date", "DATE : " + Ls_56 + "/" + Ls_64 + "/" + dbl2str_72 + " TIME : " + Ls_48 + ":" + Ls_40, 10, "Arial Black", White); + ObjectSet("Venom_Date", OBJPROP_CORNER, 0); + ObjectSet("Venom_Date", OBJPROP_XDISTANCE, 8); + ObjectSet("Venom_Date", OBJPROP_YDISTANCE, 15); + ObjectCreate("Venom_Pair", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Venom_Pair", Symbol(), 30, "Arial Black", Red); + ObjectSet("Venom_Pair", OBJPROP_CORNER, 0); + ObjectSet("Venom_Pair", OBJPROP_XDISTANCE, 10); + ObjectSet("Venom_Pair", OBJPROP_YDISTANCE, 25); + ObjectCreate("Venom_Pair1", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Venom_Pair1", Symbol(), 30, "Arial Black", Gold); + ObjectSet("Venom_Pair1", OBJPROP_CORNER, 0); + ObjectSet("Venom_Pair1", OBJPROP_XDISTANCE, 8); + ObjectSet("Venom_Pair1", OBJPROP_YDISTANCE, 23); + RefreshRates(); + bid_80 = MarketInfo(Symbol(), MODE_BID); + digits_88 = MarketInfo(Symbol(), MODE_DIGITS); + spread_96 = MarketInfo(Symbol(), MODE_SPREAD); + dbl2str_104 = DoubleToStr(bid_80, digits_88); + dbl2str_112 = DoubleToStr(spread_96, 0); + ObjectCreate("Venom_Price", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Venom_Price", "PRICE : " + dbl2str_104 + " SPREAD : " + dbl2str_112, 10, "Arial Black", White); + ObjectSet("Venom_Price", OBJPROP_CORNER, 0); + ObjectSet("Venom_Price", OBJPROP_XDISTANCE, 8); + ObjectSet("Venom_Price", OBJPROP_YDISTANCE, 72); + RefreshRates(); + minute_120 = TimeMinute(TimeCurrent()); + hour_124 = TimeHour(TimeCurrent()); + day_128 = TimeDay(TimeCurrent()); + ObjectCreate("Buy_Signal", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Buy_Signal", "BUY SIGNAL", 12, "Arial Black", Silver); + ObjectSet("Buy_Signal", OBJPROP_CORNER, 0); + ObjectSet("Buy_Signal", OBJPROP_XDISTANCE, 9); + ObjectSet("Buy_Signal", OBJPROP_YDISTANCE, 97); + ObjectCreate("Buy_Signal1", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Buy_Signal1", "BUY SIGNAL", 12, "Arial Black", Lime); + ObjectSet("Buy_Signal1", OBJPROP_CORNER, 0); + ObjectSet("Buy_Signal1", OBJPROP_XDISTANCE, 8); + ObjectSet("Buy_Signal1", OBJPROP_YDISTANCE, 96); + ObjectCreate("Sell_Signal", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Sell_Signal", "SELL SIGNAL", 12, "Arial Black", Silver); + ObjectSet("Sell_Signal", OBJPROP_CORNER, 0); + ObjectSet("Sell_Signal", OBJPROP_XDISTANCE, 9); + ObjectSet("Sell_Signal", OBJPROP_YDISTANCE, 137); + ObjectCreate("Sell_Signal1", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Sell_Signal1", "SELL SIGNAL", 12, "Arial Black", Red); + ObjectSet("Sell_Signal1", OBJPROP_CORNER, 0); + ObjectSet("Sell_Signal1", OBJPROP_XDISTANCE, 8); + ObjectSet("Sell_Signal1", OBJPROP_YDISTANCE, 136); + var_name_132 = "venom_signal_buy" + Symbol(); + var_name_140 = "venom_signal_sell" + Symbol(); + global_var_148 = GlobalVariableGet(var_name_132); + global_var_152 = GlobalVariableGet(var_name_140); + RefreshRates(); + digits_156 = MarketInfo(Symbol(), MODE_DIGITS); + bid_164 = Bid; + var_name_172 = "venom_b_day" + Symbol(); + var_name_180 = "venom_b_price" + Symbol(); + var_name_188 = "venom_b_hour" + Symbol(); + var_name_196 = "venom_b_minute" + Symbol(); + global_var_228 = GlobalVariableGet(var_name_172); + global_var_232 = GlobalVariableGet(var_name_180); + global_var_240 = GlobalVariableGet(var_name_188); + global_var_248 = GlobalVariableGet(var_name_196); + if (global_var_232 == 0.0 && global_var_228 != day_128 && global_var_148 == 6) { + GlobalVariableSet(var_name_180, bid_164); + GlobalVariableSet(var_name_188, hour_124); + GlobalVariableSet(var_name_196, minute_120); + GlobalVariableSet(var_name_172, day_128); + } + if (global_var_228 != day_128 && global_var_232 != 0.0) { + GlobalVariableSet(var_name_180, 0); + GlobalVariableSet(var_name_132, 0); + } + if (global_var_232 != 0.0) { + dbl2str_204 = DoubleToStr(global_var_232, digits_156); + if (global_var_240 < 10.0) Ls_212 = "0" + DoubleToStr(global_var_240, 0); + else Ls_212 = DoubleToStr(global_var_240, 0); + if (global_var_248 < 10.0) Ls_220 = "0" + DoubleToStr(global_var_248, 0); + else Ls_220 = DoubleToStr(global_var_248, 0); + ObjectCreate("Buy_Price", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Buy_Price", "PRICE : " + dbl2str_204, 8, "Arial Black", Lime); + ObjectSet("Buy_Price", OBJPROP_CORNER, 0); + ObjectSet("Buy_Price", OBJPROP_XDISTANCE, 8); + ObjectSet("Buy_Price", OBJPROP_YDISTANCE, 118); + ObjectCreate("Buy_Time", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Buy_Time", "TIME : " + Ls_212 + ":" + Ls_220, 8, "Arial Black", Lime); + ObjectSet("Buy_Time", OBJPROP_CORNER, 0); + ObjectSet("Buy_Time", OBJPROP_XDISTANCE, 102); + ObjectSet("Buy_Time", OBJPROP_YDISTANCE, 118); + } else { + ObjectDelete("Buy_Price"); + ObjectDelete("Buy_Time"); + } + var_name_256 = "venom_j_day" + Symbol(); + var_name_264 = "venom_j_price" + Symbol(); + var_name_272 = "venom_j_hour" + Symbol(); + var_name_280 = "venom_j_minute" + Symbol(); + global_var_312 = GlobalVariableGet(var_name_256); + global_var_316 = GlobalVariableGet(var_name_264); + global_var_324 = GlobalVariableGet(var_name_272); + global_var_332 = GlobalVariableGet(var_name_280); + if (global_var_316 == 0.0 && global_var_312 != day_128 && global_var_152 == -6) { + GlobalVariableSet(var_name_264, bid_164); + GlobalVariableSet(var_name_272, hour_124); + GlobalVariableSet(var_name_280, minute_120); + GlobalVariableSet(var_name_256, day_128); + } + if (global_var_312 != day_128 && global_var_316 != 0.0) { + GlobalVariableSet(var_name_264, 0); + GlobalVariableSet(var_name_140, 0); + } + if (global_var_316 != 0.0) { + dbl2str_288 = DoubleToStr(global_var_316, digits_156); + if (global_var_324 < 10.0) Ls_296 = "0" + DoubleToStr(global_var_324, 0); + else Ls_296 = DoubleToStr(global_var_324, 0); + if (global_var_332 < 10.0) Ls_304 = "0" + DoubleToStr(global_var_332, 0); + else Ls_304 = DoubleToStr(global_var_332, 0); + ObjectCreate("Sell_Price", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Sell_Price", "PRICE : " + dbl2str_288, 8, "Arial Black", Red); + ObjectSet("Sell_Price", OBJPROP_CORNER, 0); + ObjectSet("Sell_Price", OBJPROP_XDISTANCE, 8); + ObjectSet("Sell_Price", OBJPROP_YDISTANCE, 158); + ObjectCreate("Sell_Time", OBJ_LABEL, 0, 0, 0, 0, 0); + ObjectSetText("Sell_Time", "TIME : " + Ls_296 + ":" + Ls_304, 8, "Arial Black", Red); + ObjectSet("Sell_Time", OBJPROP_CORNER, 0); + ObjectSet("Sell_Time", OBJPROP_XDISTANCE, 102); + ObjectSet("Sell_Time", OBJPROP_YDISTANCE, 158); + } else { + ObjectDelete("Sell_Price"); + ObjectDelete("Sell_Time"); + } + time_340 = Time[0]; + if (Period() == PERIOD_M1) Li_344 = 60; + if (Period() == PERIOD_M5) Li_344 = 300; + if (Period() == PERIOD_M15) Li_344 = 900; + if (Period() == PERIOD_M30) Li_344 = 1800; + if (Period() == PERIOD_H1) Li_344 = 3600; + if (Period() == PERIOD_H4) Li_344 = 14400; + if (Period() == PERIOD_D1) Li_344 = 86400; + if (Period() == PERIOD_W1) Li_344 = 604800; + if (Period() == PERIOD_MN1) Li_344 = 2592000; + ima_348 = iMA(NULL, PERIOD_M15, G_period_84, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_356 = iMA(NULL, PERIOD_M15, G_period_88, 0, MODE_SMA, PRICE_CLOSE, 0); + ima_364 = iMA(NULL, PERIOD_M30, G_period_84, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_372 = iMA(NULL, PERIOD_M30, G_period_88, 0, MODE_SMA, PRICE_CLOSE, 0); + ima_380 = iMA(NULL, PERIOD_H1, G_period_84, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_388 = iMA(NULL, PERIOD_H1, G_period_88, 0, MODE_SMA, PRICE_CLOSE, 0); + Ld_396 = MathMax(ima_348, ima_356); + Ld_404 = MathMax(ima_364, ima_372); + Ld_412 = MathMax(ima_380, ima_388); + Ld_420 = MathMax(Ld_396, Ld_404); + Ld_428 = MathMax(Ld_412, Ld_420); + Ld_436 = MathMin(ima_348, ima_356); + Ld_444 = MathMin(ima_364, ima_372); + Ld_452 = MathMin(ima_380, ima_388); + Ld_460 = MathMin(Ld_436, Ld_444); + Ld_468 = MathMin(Ld_452, Ld_460); + datetime_476 = time_340 + 1 * Li_344; + datetime_480 = time_340 + 3 * Li_344; + ima_484 = iMA(NULL, PERIOD_H4, G_period_84, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_492 = iMA(NULL, PERIOD_H4, G_period_88, 0, MODE_SMA, PRICE_CLOSE, 0); + datetime_500 = time_340 + Li_344 * 4; + datetime_504 = time_340 + 6 * Li_344; + ima_508 = iMA(NULL, PERIOD_D1, G_period_84, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_516 = iMA(NULL, PERIOD_D1, G_period_88, 0, MODE_SMA, PRICE_CLOSE, 0); + datetime_524 = time_340 + 7 * Li_344; + datetime_528 = time_340 + 9 * Li_344; + ObjectCreate("2_SR", OBJ_RECTANGLE, 0, 0, 0, 0, 0); + ObjectSet("2_SR", OBJPROP_TIME1, datetime_476); + ObjectSet("2_SR", OBJPROP_PRICE1, ima_380); + ObjectSet("2_SR", OBJPROP_TIME2, datetime_480); + ObjectSet("2_SR", OBJPROP_PRICE2, ima_388); + ObjectSet("2_SR", OBJPROP_COLOR, DarkBlue); + ObjectSet("2_SR", OBJPROP_BACK, TRUE); + ObjectCreate("3_SR", OBJ_RECTANGLE, 0, 0, 0, 0, 0); + ObjectSet("3_SR", OBJPROP_TIME1, datetime_500); + ObjectSet("3_SR", OBJPROP_PRICE1, ima_484); + ObjectSet("3_SR", OBJPROP_TIME2, datetime_504); + ObjectSet("3_SR", OBJPROP_PRICE2, ima_492); + ObjectSet("3_SR", OBJPROP_COLOR, Blue); + ObjectSet("3_SR", OBJPROP_BACK, TRUE); + ObjectCreate("4_SR", OBJ_RECTANGLE, 0, 0, 0, 0, 0); + ObjectSet("4_SR", OBJPROP_TIME1, datetime_524); + ObjectSet("4_SR", OBJPROP_PRICE1, ima_508); + ObjectSet("4_SR", OBJPROP_TIME2, datetime_528); + ObjectSet("4_SR", OBJPROP_PRICE2, ima_516); + ObjectSet("4_SR", OBJPROP_COLOR, DeepSkyBlue); + ObjectSet("4_SR", OBJPROP_BACK, TRUE); + } + return (0); +} \ No newline at end of file diff --git a/VENOM B.mq4 b/VENOM B.mq4 new file mode 100644 index 0000000..d5b96a1 --- /dev/null +++ b/VENOM B.mq4 @@ -0,0 +1,1972 @@ +#property copyright "Copyright © 2007 Third Wave FX" +#property link "http://www.thirdwavefx.com" + +#property indicator_separate_window + +extern string indi_name = "Third Wave FX VENOM - Window 1"; +extern bool Venom_Alert = TRUE; +double Gd_88 = 25.0; +int G_period_96 = 50; +int G_period_100 = 100; +double G_pips_104 = 5.0; +double G_pips_112 = 5.0; + +// E37F0136AA3FFAF149B351F6A4C948E9 +int init() { + IndicatorShortName("Third Wave FX VENOM (" + Symbol() + ")"); + string var_name_0 = "start_saat" + Symbol(); + int second_8 = TimeSeconds(TimeCurrent()); + GlobalVariableSet(var_name_0, second_8); + return (0); +} + +// 52D46093050F38C27267BCE42543EF60 +int deinit() { + string var_name_0 = "start_saat" + Symbol(); + ObjectsDeleteAll(0, OBJ_LABEL); + ObjectDelete("Cover"); + ObjectDelete("Cover1"); + ObjectDelete("Vectorial_Bias"); + ObjectDelete("Sup_Res_1"); + ObjectDelete("Sup_Res_2"); + ObjectDelete("Venom_1_Text_BG"); + GlobalVariableDel(var_name_0); + ObjectDelete("Venom_1_Text"); + ObjectDelete("Venom_1_Sig"); + ObjectDelete("Venom_1_Eyesig"); + ObjectDelete("Venom_1_Eyeprice"); + ObjectDelete("Venom_1_Eyehi"); + ObjectDelete("Venom_1_Eyelo"); + ObjectDelete("Venom_2_Text"); + ObjectDelete("Venom_2_Sig"); + ObjectDelete("Venom_2_Eyesig"); + ObjectDelete("Venom_2_Eyeprice"); + ObjectDelete("Venom_2_Eyehi"); + ObjectDelete("Venom_2_Eyelo"); + ObjectDelete("Venom_3_Text"); + ObjectDelete("Venom_3_Sig"); + ObjectDelete("Venom_3_Eyesig"); + ObjectDelete("Venom_3_Eyeprice"); + ObjectDelete("Venom_3_Eyehi"); + ObjectDelete("Venom_3_Eyelo"); + ObjectDelete("Venom_4_Text"); + ObjectDelete("Venom_4_Sig"); + ObjectDelete("Venom_4_Eyesig"); + ObjectDelete("Venom_4_Eyeprice"); + ObjectDelete("Venom_4_Eyehi"); + ObjectDelete("Venom_4_Eyelo"); + ObjectDelete("Venom_5_Text"); + ObjectDelete("Venom_5_Sig"); + ObjectDelete("Venom_5_Eyesig"); + ObjectDelete("Venom_5_Eyeprice"); + ObjectDelete("Venom_5_Eyehi"); + ObjectDelete("Venom_5_Eyelo"); + ObjectDelete("Venom_6_Text"); + ObjectDelete("Venom_6_Sig"); + ObjectDelete("Venom_6_Eyesig"); + ObjectDelete("Venom_6_Eyeprice"); + ObjectDelete("Venom_6_Eyehi"); + ObjectDelete("Venom_6_Eyelo"); + return (0); +} + +// EA2B2676C28C0DB26D39331A336C6B92 +int start() { + double ima_0; + double ima_8; + double istochastic_16; + double istochastic_24; + double ima_32; + double ima_40; + double istochastic_48; + double istochastic_56; + double ima_64; + double ima_72; + double istochastic_80; + double istochastic_88; + double ima_96; + double ima_104; + double istochastic_112; + double istochastic_120; + double ima_128; + double ima_136; + double istochastic_144; + double istochastic_152; + double ima_160; + double ima_168; + double istochastic_176; + double istochastic_184; + color color_192; + color color_196; + color color_200; + color color_204; + color color_208; + color color_212; + string text_216; + string text_224; + string text_232; + string text_240; + string text_248; + string text_256; + double Ld_264; + double Ld_272; + double point_280; + double Ld_288; + double Ld_296; + int Li_304; + int Li_308; + int Li_312; + int Li_316; + int Li_320; + int Li_324; + double Ld_328; + double Ld_336; + double Ld_344; + double Ld_352; + double Ld_360; + double Ld_368; + double Ld_376; + double Ld_384; + double Ld_392; + double Ld_400; + double Ld_408; + double Ld_416; + double Ld_424; + double Ld_432; + double Ld_440; + double Ld_448; + double Ld_456; + double Ld_464; + double Ld_472; + double Ld_480; + double Ld_488; + double Ld_496; + double Ld_504; + double Ld_512; + string Ls_520; + int y_528; + double Ld_532; + string dbl2str_540; + string dbl2str_548; + string dbl2str_556; + bool Li_564; + int y_568; + double Ld_572; + string dbl2str_580; + string dbl2str_588; + string dbl2str_596; + bool Li_604; + int y_608; + double Ld_612; + string dbl2str_620; + string dbl2str_628; + string dbl2str_636; + bool Li_644; + int y_648; + double Ld_652; + string dbl2str_660; + string dbl2str_668; + string dbl2str_676; + bool Li_684; + int y_688; + double Ld_692; + string dbl2str_700; + string dbl2str_708; + string dbl2str_716; + bool Li_724; + int y_728; + double Ld_732; + string dbl2str_740; + string dbl2str_748; + string dbl2str_756; + bool Li_764; + string var_name_768; + int Li_unused_776; + string var_name_780; + string var_name_788; + bool bool_796; + double digits_800; + double ima_808; + double ibands_816; + double ibands_824; + double ibands_832; + double ibands_840; + double ima_848; + double ibands_856; + double ibands_864; + double ibands_872; + double ibands_880; + double ima_888; + double ibands_896; + double ibands_904; + double ibands_912; + double ibands_920; + double ima_928; + double ibands_936; + double ibands_944; + double ibands_952; + double ibands_960; + double ima_968; + double ibands_976; + double ibands_984; + double ibands_992; + double ibands_1000; + double ima_1008; + double ibands_1016; + double ibands_1024; + double ibands_1032; + double ibands_1040; + color color_1048; + color color_1052; + color color_1056; + color color_1060; + color color_1064; + color color_1068; + string text_1072; + string text_1080; + string text_1088; + string text_1096; + string text_1104; + string text_1112; + ObjectCreate("Cover", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Cover", "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn", 15, "Wingdings", Black); + ObjectSet("Cover", OBJPROP_CORNER, 0); + ObjectSet("Cover", OBJPROP_XDISTANCE, 0); + ObjectSet("Cover", OBJPROP_YDISTANCE, 0); + ObjectCreate("Cover1", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Cover1", "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn", 15, "Wingdings", Black); + ObjectSet("Cover1", OBJPROP_CORNER, 0); + ObjectSet("Cover1", OBJPROP_XDISTANCE, 4); + ObjectSet("Cover1", OBJPROP_YDISTANCE, 0); + RefreshRates(); + int second_1120 = TimeSeconds(TimeCurrent()); + int minute_1124 = TimeMinute(TimeCurrent()); + int hour_1128 = TimeHour(TimeCurrent()); + int day_1132 = TimeDay(TimeCurrent()); + int month_1136 = TimeMonth(TimeCurrent()); + int year_1140 = TimeYear(TimeCurrent()); + if (year_1140 < 2030) { + RefreshRates(); + ima_0 = iMA(NULL, PERIOD_M1, G_period_96, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_8 = iMA(NULL, PERIOD_M1, G_period_100, 0, MODE_SMA, PRICE_CLOSE, 0); + istochastic_16 = iStochastic(NULL, PERIOD_M1, 30, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); + istochastic_24 = iStochastic(NULL, PERIOD_M1, 30, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0); + ima_32 = iMA(NULL, PERIOD_M5, G_period_96, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_40 = iMA(NULL, PERIOD_M5, G_period_100, 0, MODE_SMA, PRICE_CLOSE, 0); + istochastic_48 = iStochastic(NULL, PERIOD_M5, 30, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); + istochastic_56 = iStochastic(NULL, PERIOD_M5, 30, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0); + ima_64 = iMA(NULL, PERIOD_M15, G_period_96, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_72 = iMA(NULL, PERIOD_M15, G_period_100, 0, MODE_SMA, PRICE_CLOSE, 0); + istochastic_80 = iStochastic(NULL, PERIOD_M15, 30, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); + istochastic_88 = iStochastic(NULL, PERIOD_M15, 30, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0); + ima_96 = iMA(NULL, PERIOD_M30, G_period_96, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_104 = iMA(NULL, PERIOD_M30, G_period_100, 0, MODE_SMA, PRICE_CLOSE, 0); + istochastic_112 = iStochastic(NULL, PERIOD_M30, 30, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); + istochastic_120 = iStochastic(NULL, PERIOD_M30, 30, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0); + ima_128 = iMA(NULL, PERIOD_H1, G_period_96, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_136 = iMA(NULL, PERIOD_H1, G_period_100, 0, MODE_SMA, PRICE_CLOSE, 0); + istochastic_144 = iStochastic(NULL, PERIOD_H1, 30, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); + istochastic_152 = iStochastic(NULL, PERIOD_H1, 30, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0); + ima_160 = iMA(NULL, PERIOD_H4, G_period_96, 0, MODE_EMA, PRICE_CLOSE, 0); + ima_168 = iMA(NULL, PERIOD_H4, G_period_100, 0, MODE_SMA, PRICE_CLOSE, 0); + istochastic_176 = iStochastic(NULL, PERIOD_H4, 30, 3, 3, MODE_SMA, 0, MODE_MAIN, 0); + istochastic_184 = iStochastic(NULL, PERIOD_H4, 30, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0); + if (istochastic_24 == istochastic_16) color_192 = DarkSlateGray; + if (istochastic_56 == istochastic_48) color_196 = DarkSlateGray; + if (istochastic_88 == istochastic_80) color_200 = DarkSlateGray; + if (istochastic_120 == istochastic_112) color_204 = DarkSlateGray; + if (istochastic_152 == istochastic_144) color_208 = DarkSlateGray; + if (istochastic_184 == istochastic_176) color_212 = DarkSlateGray; + RefreshRates(); + Ld_264 = MarketInfo(Symbol(), MODE_SPREAD); + Ld_272 = NormalizeDouble(Ld_264 * Point, Digits); + point_280 = MarketInfo(Symbol(), MODE_POINT); + Ld_288 = NormalizeDouble(G_pips_104 * Point, Digits); + Ld_296 = NormalizeDouble(G_pips_112 * Point, Digits); + Ld_328 = (ima_0 - Bid - Ld_272) / point_280; + Ld_336 = (ima_8 - Bid - Ld_272) / point_280; + Ld_344 = (Ask - ima_0 - Ld_272) / point_280; + Ld_352 = (Ask - ima_8 - Ld_272) / point_280; + if (istochastic_24 < istochastic_16 && Ld_328 >= Gd_88 && Ld_336 >= Gd_88 && Bid < ima_0 && Bid < ima_8) { + text_216 = "é"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Ld_328 < Gd_88 || Ld_336 < Gd_88 && Bid <= ima_0 && Bid <= ima_8) { + text_216 = "è"; + color_192 = LimeGreen; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid >= ima_0 + Ld_296 && Bid < ima_8 && Ld_336 >= Gd_88) { + text_216 = "é"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid < ima_0 + Ld_296 && Bid > ima_0 && Bid < ima_8 && Ld_336 >= Gd_88) { + text_216 = "ì"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid < ima_0 + Ld_296 && Bid > ima_0 && Bid < ima_8 && Ld_336 < Gd_88) { + text_216 = "è"; + color_192 = LimeGreen; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid >= ima_0 + Ld_296 && Bid < ima_8 && Ld_336 < Gd_88) { + text_216 = "è"; + color_192 = LimeGreen; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid >= ima_8 + Ld_296 && Bid < ima_0 && Ld_328 >= Gd_88) { + text_216 = "é"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid < ima_8 + Ld_296 && Bid > ima_8 && Bid < ima_0 && Ld_328 >= Gd_88) { + text_216 = "ì"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid < ima_8 + Ld_296 && Bid > ima_8 && Bid < ima_0 && Ld_328 < Gd_88) { + text_216 = "è"; + color_192 = LimeGreen; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid >= ima_8 + Ld_296 && Bid < ima_0 && Ld_328 < Gd_88) { + text_216 = "è"; + color_192 = LimeGreen; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid >= ima_0 + Ld_296 && Bid >= ima_8 + Ld_296) { + text_216 = "é"; + color_192 = Lime; + Li_304 = 6; + } + if (istochastic_24 < istochastic_16 && Bid > ima_0 && Bid < ima_0 + Ld_296 && Bid > ima_8 && Bid < ima_8 + Ld_296) { + text_216 = "ì"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid >= ima_0 + Ld_296 && Bid >= ima_8 && Bid < ima_8 + Ld_296) { + text_216 = "ì"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 < istochastic_16 && Bid >= ima_8 + Ld_296 && Bid >= ima_0 && Bid < ima_0 + Ld_296) { + text_216 = "ì"; + color_192 = Lime; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Ld_344 >= Gd_88 && Ld_352 >= Gd_88 && Bid > ima_0 && Bid > ima_8) { + text_216 = "ê"; + color_192 = Red; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Ld_344 < Gd_88 || Ld_352 < Gd_88 && Bid >= ima_0 && Bid >= ima_8) { + text_216 = "è"; + color_192 = OrangeRed; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid <= ima_0 - Ld_296 && Bid > ima_8 && Ld_352 >= Gd_88) { + text_216 = "ê"; + color_192 = Red; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid > ima_0 - Ld_296 && Bid < ima_0 && Bid > ima_8 && Ld_352 >= Gd_88) { + text_216 = "î"; + color_192 = Red; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid > ima_0 - Ld_296 && Bid < ima_0 && Bid > ima_8 && Ld_352 < Gd_88) { + text_216 = "è"; + color_192 = OrangeRed; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid <= ima_0 - Ld_296 && Bid > ima_8 && Ld_352 < Gd_88) { + text_216 = "è"; + color_192 = OrangeRed; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid <= ima_8 - Ld_296 && Bid > ima_0 && Ld_344 >= Gd_88) { + text_216 = "ê"; + color_192 = Red; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid > ima_8 - Ld_296 && Bid < ima_8 && Bid > ima_0 && Ld_344 >= Gd_88) { + text_216 = "î"; + color_192 = Red; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid > ima_8 - Ld_296 && Bid < ima_8 && Bid > ima_0 && Ld_344 < Gd_88) { + text_216 = "è"; + color_192 = OrangeRed; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid <= ima_8 - Ld_296 && Bid > ima_0 && Ld_344 < Gd_88) { + text_216 = "è"; + color_192 = OrangeRed; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid <= ima_0 - Ld_296 && Bid <= ima_8 - Ld_296) { + text_216 = "ê"; + color_192 = Red; + Li_304 = -6; + } + if (istochastic_24 > istochastic_16 && Bid < ima_0 && Bid > ima_0 - Ld_296 && Bid < ima_8 && Bid > ima_8 - Ld_296) { + text_216 = "î"; + color_192 = Red; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid <= ima_0 - Ld_296 && Bid <= ima_8 && Bid > ima_8 - Ld_296) { + text_216 = "î"; + color_192 = Red; + Li_304 = 0; + } + if (istochastic_24 > istochastic_16 && Bid <= ima_8 - Ld_296 && Bid <= ima_0 && Bid > ima_0 - Ld_296) { + text_216 = "î"; + color_192 = Red; + Li_304 = 0; + } + RefreshRates(); + Ld_360 = (ima_32 - Bid - Ld_272) / point_280; + Ld_368 = (ima_40 - Bid - Ld_272) / point_280; + Ld_376 = (Ask - ima_32 - Ld_272) / point_280; + Ld_384 = (Ask - ima_40 - Ld_272) / point_280; + if (istochastic_56 < istochastic_48 && Ld_360 >= Gd_88 && Ld_368 >= Gd_88 && Bid < ima_32 && Bid < ima_40) { + text_224 = "é"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Ld_360 < Gd_88 || Ld_368 < Gd_88 && Bid <= ima_32 && Bid <= ima_40) { + text_224 = "è"; + color_196 = LimeGreen; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid >= ima_32 + Ld_296 && Bid < ima_40 && Ld_368 >= Gd_88) { + text_224 = "é"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid < ima_32 + Ld_296 && Bid > ima_32 && Bid < ima_40 && Ld_368 >= Gd_88) { + text_224 = "ì"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid < ima_32 + Ld_296 && Bid > ima_32 && Bid < ima_40 && Ld_368 < Gd_88) { + text_224 = "è"; + color_196 = LimeGreen; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid >= ima_32 + Ld_296 && Bid < ima_40 && Ld_368 < Gd_88) { + text_224 = "è"; + color_196 = LimeGreen; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid >= ima_40 + Ld_296 && Bid < ima_32 && Ld_360 >= Gd_88) { + text_224 = "é"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid < ima_40 + Ld_296 && Bid > ima_40 && Bid < ima_32 && Ld_360 >= Gd_88) { + text_224 = "ì"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid < ima_40 + Ld_296 && Bid > ima_40 && Bid < ima_32 && Ld_360 < Gd_88) { + text_224 = "è"; + color_196 = LimeGreen; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid >= ima_40 + Ld_296 && Bid < ima_32 && Ld_360 < Gd_88) { + text_224 = "è"; + color_196 = LimeGreen; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid >= ima_32 + Ld_296 && Bid >= ima_40 + Ld_296) { + text_224 = "é"; + color_196 = Lime; + Li_308 = 6; + } + if (istochastic_56 < istochastic_48 && Bid > ima_32 && Bid < ima_32 + Ld_296 && Bid > ima_40 && Bid < ima_40 + Ld_296) { + text_224 = "ì"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid >= ima_32 + Ld_296 && Bid >= ima_40 && Bid < ima_40 + Ld_296) { + text_224 = "ì"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 < istochastic_48 && Bid >= ima_40 + Ld_296 && Bid >= ima_32 && Bid < ima_32 + Ld_296) { + text_224 = "ì"; + color_196 = Lime; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Ld_376 >= Gd_88 && Ld_384 >= Gd_88 && Bid > ima_32 && Bid > ima_40) { + text_224 = "ê"; + color_196 = Red; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Ld_376 < Gd_88 || Ld_384 < Gd_88 && Bid >= ima_32 && Bid >= ima_40) { + text_224 = "è"; + color_196 = OrangeRed; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid <= ima_32 - Ld_296 && Bid > ima_40 && Ld_384 >= Gd_88) { + text_224 = "ê"; + color_196 = Red; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid > ima_32 - Ld_296 && Bid < ima_32 && Bid > ima_40 && Ld_384 >= Gd_88) { + text_224 = "î"; + color_196 = Red; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid > ima_32 - Ld_296 && Bid < ima_32 && Bid > ima_40 && Ld_384 < Gd_88) { + text_224 = "è"; + color_196 = OrangeRed; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid <= ima_32 - Ld_296 && Bid > ima_40 && Ld_384 < Gd_88) { + text_224 = "è"; + color_196 = OrangeRed; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid <= ima_40 - Ld_296 && Bid > ima_32 && Ld_376 >= Gd_88) { + text_224 = "ê"; + color_196 = Red; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid > ima_40 - Ld_296 && Bid < ima_40 && Bid > ima_32 && Ld_376 >= Gd_88) { + text_224 = "î"; + color_196 = Red; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid > ima_40 - Ld_296 && Bid < ima_40 && Bid > ima_32 && Ld_376 < Gd_88) { + text_224 = "è"; + color_196 = OrangeRed; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid <= ima_40 - Ld_296 && Bid > ima_32 && Ld_376 < Gd_88) { + text_224 = "è"; + color_196 = OrangeRed; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid <= ima_32 - Ld_296 && Bid <= ima_40 - Ld_296) { + text_224 = "ê"; + color_196 = Red; + Li_308 = -6; + } + if (istochastic_56 > istochastic_48 && Bid < ima_32 && Bid > ima_32 - Ld_296 && Bid < ima_40 && Bid > ima_40 - Ld_296) { + text_224 = "î"; + color_196 = Red; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid <= ima_32 - Ld_296 && Bid <= ima_40 && Bid > ima_40 - Ld_296) { + text_224 = "î"; + color_196 = Red; + Li_308 = 0; + } + if (istochastic_56 > istochastic_48 && Bid <= ima_40 - Ld_296 && Bid <= ima_32 && Bid > ima_32 - Ld_296) { + text_224 = "î"; + color_196 = Red; + Li_308 = 0; + } + RefreshRates(); + Ld_392 = (ima_64 - Bid - Ld_272) / point_280; + Ld_400 = (ima_72 - Bid - Ld_272) / point_280; + Ld_408 = (Ask - ima_64 - Ld_272) / point_280; + Ld_416 = (Ask - ima_72 - Ld_272) / point_280; + if (istochastic_88 < istochastic_80 && Ld_392 >= Gd_88 && Ld_400 >= Gd_88 && Bid < ima_64 && Bid < ima_72) { + text_232 = "é"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Ld_392 < Gd_88 || Ld_400 < Gd_88 && Bid <= ima_64 && Bid <= ima_72) { + text_232 = "è"; + color_200 = LimeGreen; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid >= ima_64 + Ld_296 && Bid < ima_72 && Ld_400 >= Gd_88) { + text_232 = "é"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid < ima_64 + Ld_296 && Bid > ima_64 && Bid < ima_72 && Ld_400 >= Gd_88) { + text_232 = "ì"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid < ima_64 + Ld_296 && Bid > ima_64 && Bid < ima_72 && Ld_400 < Gd_88) { + text_232 = "è"; + color_200 = LimeGreen; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid >= ima_64 + Ld_296 && Bid < ima_72 && Ld_400 < Gd_88) { + text_232 = "è"; + color_200 = LimeGreen; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid >= ima_72 + Ld_296 && Bid < ima_64 && Ld_392 >= Gd_88) { + text_232 = "é"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid < ima_72 + Ld_296 && Bid > ima_72 && Bid < ima_64 && Ld_392 >= Gd_88) { + text_232 = "ì"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid < ima_72 + Ld_296 && Bid > ima_72 && Bid < ima_64 && Ld_392 < Gd_88) { + text_232 = "è"; + color_200 = LimeGreen; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid >= ima_72 + Ld_296 && Bid < ima_64 && Ld_392 < Gd_88) { + text_232 = "è"; + color_200 = LimeGreen; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid >= ima_64 + Ld_296 && Bid >= ima_72 + Ld_296) { + text_232 = "é"; + color_200 = Lime; + Li_312 = 6; + } + if (istochastic_88 < istochastic_80 && Bid > ima_64 && Bid < ima_64 + Ld_296 && Bid > ima_72 && Bid < ima_72 + Ld_296) { + text_232 = "ì"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid >= ima_64 + Ld_296 && Bid >= ima_72 && Bid < ima_72 + Ld_296) { + text_232 = "ì"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 < istochastic_80 && Bid >= ima_72 + Ld_296 && Bid >= ima_64 && Bid < ima_64 + Ld_296) { + text_232 = "ì"; + color_200 = Lime; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Ld_408 >= Gd_88 && Ld_416 >= Gd_88 && Bid > ima_64 && Bid > ima_72) { + text_232 = "ê"; + color_200 = Red; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Ld_408 < Gd_88 || Ld_416 < Gd_88 && Bid >= ima_64 && Bid >= ima_72) { + text_232 = "è"; + color_200 = OrangeRed; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid <= ima_64 - Ld_296 && Bid > ima_72 && Ld_416 >= Gd_88) { + text_232 = "ê"; + color_200 = Red; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid > ima_64 - Ld_296 && Bid < ima_64 && Bid > ima_72 && Ld_416 >= Gd_88) { + text_232 = "î"; + color_200 = Red; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid > ima_64 - Ld_296 && Bid < ima_64 && Bid > ima_72 && Ld_416 < Gd_88) { + text_232 = "è"; + color_200 = OrangeRed; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid <= ima_64 - Ld_296 && Bid > ima_72 && Ld_416 < Gd_88) { + text_232 = "è"; + color_200 = OrangeRed; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid <= ima_72 - Ld_296 && Bid > ima_64 && Ld_408 >= Gd_88) { + text_232 = "ê"; + color_200 = Red; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid > ima_72 - Ld_296 && Bid < ima_72 && Bid > ima_64 && Ld_408 >= Gd_88) { + text_232 = "î"; + color_200 = Red; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid > ima_72 - Ld_296 && Bid < ima_72 && Bid > ima_64 && Ld_408 < Gd_88) { + text_232 = "è"; + color_200 = OrangeRed; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid <= ima_72 - Ld_296 && Bid > ima_64 && Ld_408 < Gd_88) { + text_232 = "è"; + color_200 = OrangeRed; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid <= ima_64 - Ld_296 && Bid <= ima_72 - Ld_296) { + text_232 = "ê"; + color_200 = Red; + Li_312 = -6; + } + if (istochastic_88 > istochastic_80 && Bid < ima_64 && Bid > ima_64 - Ld_296 && Bid < ima_72 && Bid > ima_72 - Ld_296) { + text_232 = "î"; + color_200 = Red; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid <= ima_64 - Ld_296 && Bid <= ima_72 && Bid > ima_72 - Ld_296) { + text_232 = "î"; + color_200 = Red; + Li_312 = 0; + } + if (istochastic_88 > istochastic_80 && Bid <= ima_72 - Ld_296 && Bid <= ima_64 && Bid > ima_64 - Ld_296) { + text_232 = "î"; + color_200 = Red; + Li_312 = 0; + } + RefreshRates(); + Ld_424 = (ima_96 - Bid - Ld_272) / point_280; + Ld_432 = (ima_104 - Bid - Ld_272) / point_280; + Ld_440 = (Ask - ima_96 - Ld_272) / point_280; + Ld_448 = (Ask - ima_104 - Ld_272) / point_280; + if (istochastic_120 < istochastic_112 && Ld_424 >= Gd_88 && Ld_432 >= Gd_88 && Bid < ima_96 && Bid < ima_104) { + text_240 = "é"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Ld_424 < Gd_88 || Ld_432 < Gd_88 && Bid <= ima_96 && Bid <= ima_104) { + text_240 = "è"; + color_204 = LimeGreen; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid >= ima_96 + Ld_296 && Bid < ima_104 && Ld_432 >= Gd_88) { + text_240 = "é"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid < ima_96 + Ld_296 && Bid > ima_96 && Bid < ima_104 && Ld_432 >= Gd_88) { + text_240 = "ì"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid < ima_96 + Ld_296 && Bid > ima_96 && Bid < ima_104 && Ld_432 < Gd_88) { + text_240 = "è"; + color_204 = LimeGreen; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid >= ima_96 + Ld_296 && Bid < ima_104 && Ld_432 < Gd_88) { + text_240 = "è"; + color_204 = LimeGreen; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid >= ima_104 + Ld_296 && Bid < ima_96 && Ld_424 >= Gd_88) { + text_240 = "é"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid < ima_104 + Ld_296 && Bid > ima_104 && Bid < ima_96 && Ld_424 >= Gd_88) { + text_240 = "ì"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid < ima_104 + Ld_296 && Bid > ima_104 && Bid < ima_96 && Ld_424 < Gd_88) { + text_240 = "è"; + color_204 = LimeGreen; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid >= ima_104 + Ld_296 && Bid < ima_96 && Ld_424 < Gd_88) { + text_240 = "è"; + color_204 = LimeGreen; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid >= ima_96 + Ld_296 && Bid >= ima_104 + Ld_296) { + text_240 = "é"; + color_204 = Lime; + Li_316 = 6; + } + if (istochastic_120 < istochastic_112 && Bid > ima_96 && Bid < ima_96 + Ld_296 && Bid > ima_104 && Bid < ima_104 + Ld_296) { + text_240 = "ì"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid >= ima_96 + Ld_296 && Bid >= ima_104 && Bid < ima_104 + Ld_296) { + text_240 = "ì"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 < istochastic_112 && Bid >= ima_104 + Ld_296 && Bid >= ima_96 && Bid < ima_96 + Ld_296) { + text_240 = "ì"; + color_204 = Lime; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Ld_440 >= Gd_88 && Ld_448 >= Gd_88 && Bid > ima_96 && Bid > ima_104) { + text_240 = "ê"; + color_204 = Red; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Ld_440 < Gd_88 || Ld_448 < Gd_88 && Bid >= ima_96 && Bid >= ima_104) { + text_240 = "è"; + color_204 = OrangeRed; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid <= ima_96 - Ld_296 && Bid > ima_104 && Ld_448 >= Gd_88) { + text_240 = "ê"; + color_204 = Red; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid > ima_96 - Ld_296 && Bid < ima_96 && Bid > ima_104 && Ld_448 >= Gd_88) { + text_240 = "î"; + color_204 = Red; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid > ima_96 - Ld_296 && Bid < ima_96 && Bid > ima_104 && Ld_448 < Gd_88) { + text_240 = "è"; + color_204 = OrangeRed; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid <= ima_96 - Ld_296 && Bid > ima_104 && Ld_448 < Gd_88) { + text_240 = "è"; + color_204 = OrangeRed; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid <= ima_104 - Ld_296 && Bid > ima_96 && Ld_440 >= Gd_88) { + text_240 = "ê"; + color_204 = Red; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid > ima_104 - Ld_296 && Bid < ima_104 && Bid > ima_96 && Ld_440 >= Gd_88) { + text_240 = "î"; + color_204 = Red; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid > ima_104 - Ld_296 && Bid < ima_104 && Bid > ima_96 && Ld_440 < Gd_88) { + text_240 = "è"; + color_204 = OrangeRed; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid <= ima_104 - Ld_296 && Bid > ima_96 && Ld_440 < Gd_88) { + text_240 = "è"; + color_204 = OrangeRed; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid <= ima_96 - Ld_296 && Bid <= ima_104 - Ld_296) { + text_240 = "ê"; + color_204 = Red; + Li_316 = -6; + } + if (istochastic_120 > istochastic_112 && Bid < ima_96 && Bid > ima_96 - Ld_296 && Bid < ima_104 && Bid > ima_104 - Ld_296) { + text_240 = "î"; + color_204 = Red; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid <= ima_96 - Ld_296 && Bid <= ima_104 && Bid > ima_104 - Ld_296) { + text_240 = "î"; + color_204 = Red; + Li_316 = 0; + } + if (istochastic_120 > istochastic_112 && Bid <= ima_104 - Ld_296 && Bid <= ima_96 && Bid > ima_96 - Ld_296) { + text_240 = "î"; + color_204 = Red; + Li_316 = 0; + } + RefreshRates(); + Ld_456 = (ima_128 - Bid - Ld_272) / point_280; + Ld_464 = (ima_136 - Bid - Ld_272) / point_280; + Ld_472 = (Ask - ima_128 - Ld_272) / point_280; + Ld_480 = (Ask - ima_136 - Ld_272) / point_280; + if (istochastic_152 < istochastic_144 && Ld_456 >= Gd_88 && Ld_464 >= Gd_88 && Bid < ima_128 && Bid < ima_136) { + text_248 = "é"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Ld_456 < Gd_88 || Ld_464 < Gd_88 && Bid <= ima_128 && Bid <= ima_136) { + text_248 = "è"; + color_208 = LimeGreen; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid >= ima_128 + Ld_296 && Bid < ima_136 && Ld_464 >= Gd_88) { + text_248 = "é"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid < ima_128 + Ld_296 && Bid > ima_128 && Bid < ima_136 && Ld_464 >= Gd_88) { + text_248 = "ì"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid < ima_128 + Ld_296 && Bid > ima_128 && Bid < ima_136 && Ld_464 < Gd_88) { + text_248 = "è"; + color_208 = LimeGreen; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid >= ima_128 + Ld_296 && Bid < ima_136 && Ld_464 < Gd_88) { + text_248 = "è"; + color_208 = LimeGreen; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid >= ima_136 + Ld_296 && Bid < ima_128 && Ld_456 >= Gd_88) { + text_248 = "é"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid < ima_136 + Ld_296 && Bid > ima_136 && Bid < ima_128 && Ld_456 >= Gd_88) { + text_248 = "ì"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid < ima_136 + Ld_296 && Bid > ima_136 && Bid < ima_128 && Ld_456 < Gd_88) { + text_248 = "è"; + color_208 = LimeGreen; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid >= ima_136 + Ld_296 && Bid < ima_128 && Ld_456 < Gd_88) { + text_248 = "è"; + color_208 = LimeGreen; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid >= ima_128 + Ld_296 && Bid >= ima_136 + Ld_296) { + text_248 = "é"; + color_208 = Lime; + Li_320 = 6; + } + if (istochastic_152 < istochastic_144 && Bid > ima_128 && Bid < ima_128 + Ld_296 && Bid > ima_136 && Bid < ima_136 + Ld_296) { + text_248 = "ì"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid >= ima_128 + Ld_296 && Bid >= ima_136 && Bid < ima_136 + Ld_296) { + text_248 = "ì"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 < istochastic_144 && Bid >= ima_136 + Ld_296 && Bid >= ima_128 && Bid < ima_128 + Ld_296) { + text_248 = "ì"; + color_208 = Lime; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Ld_472 >= Gd_88 && Ld_480 >= Gd_88 && Bid > ima_128 && Bid > ima_136) { + text_248 = "ê"; + color_208 = Red; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Ld_472 < Gd_88 || Ld_480 < Gd_88 && Bid >= ima_128 && Bid >= ima_136) { + text_248 = "è"; + color_208 = OrangeRed; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid <= ima_128 - Ld_296 && Bid > ima_136 && Ld_480 >= Gd_88) { + text_248 = "ê"; + color_208 = Red; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid > ima_128 - Ld_296 && Bid < ima_128 && Bid > ima_136 && Ld_480 >= Gd_88) { + text_248 = "î"; + color_208 = Red; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid > ima_128 - Ld_296 && Bid < ima_128 && Bid > ima_136 && Ld_480 < Gd_88) { + text_248 = "è"; + color_208 = OrangeRed; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid <= ima_128 - Ld_296 && Bid > ima_136 && Ld_480 < Gd_88) { + text_248 = "è"; + color_208 = OrangeRed; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid <= ima_136 - Ld_296 && Bid > ima_128 && Ld_472 >= Gd_88) { + text_248 = "ê"; + color_208 = Red; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid > ima_136 - Ld_296 && Bid < ima_136 && Bid > ima_128 && Ld_472 >= Gd_88) { + text_248 = "î"; + color_208 = Red; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid > ima_136 - Ld_296 && Bid < ima_136 && Bid > ima_128 && Ld_472 < Gd_88) { + text_248 = "è"; + color_208 = OrangeRed; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid <= ima_136 - Ld_296 && Bid > ima_128 && Ld_472 < Gd_88) { + text_248 = "è"; + color_208 = OrangeRed; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid <= ima_128 - Ld_296 && Bid <= ima_136 - Ld_296) { + text_248 = "ê"; + color_208 = Red; + Li_320 = -6; + } + if (istochastic_152 > istochastic_144 && Bid < ima_128 && Bid > ima_128 - Ld_296 && Bid < ima_136 && Bid > ima_136 - Ld_296) { + text_248 = "î"; + color_208 = Red; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid <= ima_128 - Ld_296 && Bid <= ima_136 && Bid > ima_136 - Ld_296) { + text_248 = "î"; + color_208 = Red; + Li_320 = 0; + } + if (istochastic_152 > istochastic_144 && Bid <= ima_136 - Ld_296 && Bid <= ima_128 && Bid > ima_128 - Ld_296) { + text_248 = "î"; + color_208 = Red; + Li_320 = 0; + } + RefreshRates(); + Ld_488 = (ima_160 - Bid - Ld_272) / point_280; + Ld_496 = (ima_168 - Bid - Ld_272) / point_280; + Ld_504 = (Ask - ima_160 - Ld_272) / point_280; + Ld_512 = (Ask - ima_168 - Ld_272) / point_280; + Ls_520 = "new_value_m240_V11" + Symbol(); + if (istochastic_184 < istochastic_176 && Ld_488 >= Gd_88 && Ld_496 >= Gd_88 && Bid < ima_160 && Bid < ima_168) { + text_256 = "é"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Ld_488 < Gd_88 || Ld_496 < Gd_88 && Bid <= ima_160 && Bid <= ima_168) { + text_256 = "è"; + color_212 = LimeGreen; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid >= ima_160 + Ld_296 && Bid < ima_168 && Ld_496 >= Gd_88) { + text_256 = "é"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid < ima_160 + Ld_296 && Bid > ima_160 && Bid < ima_168 && Ld_496 >= Gd_88) { + text_256 = "ì"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid < ima_160 + Ld_296 && Bid > ima_160 && Bid < ima_168 && Ld_496 < Gd_88) { + text_256 = "è"; + color_212 = LimeGreen; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid >= ima_160 + Ld_296 && Bid < ima_168 && Ld_496 < Gd_88) { + text_256 = "è"; + color_212 = LimeGreen; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid >= ima_168 + Ld_296 && Bid < ima_160 && Ld_488 >= Gd_88) { + text_256 = "é"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid < ima_168 + Ld_296 && Bid > ima_168 && Bid < ima_160 && Ld_488 >= Gd_88) { + text_256 = "ì"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid < ima_168 + Ld_296 && Bid > ima_168 && Bid < ima_160 && Ld_488 < Gd_88) { + text_256 = "è"; + color_212 = LimeGreen; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid >= ima_168 + Ld_296 && Bid < ima_160 && Ld_488 < Gd_88) { + text_256 = "è"; + color_212 = LimeGreen; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid >= ima_160 + Ld_296 && Bid >= ima_168 + Ld_296) { + text_256 = "é"; + color_212 = Lime; + Li_324 = 6; + } + if (istochastic_184 < istochastic_176 && Bid > ima_160 && Bid < ima_160 + Ld_296 && Bid > ima_168 && Bid < ima_168 + Ld_296) { + text_256 = "ì"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid >= ima_160 + Ld_296 && Bid >= ima_168 && Bid < ima_168 + Ld_296) { + text_256 = "ì"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 < istochastic_176 && Bid >= ima_168 + Ld_296 && Bid >= ima_160 && Bid < ima_160 + Ld_296) { + text_256 = "ì"; + color_212 = Lime; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Ld_504 >= Gd_88 && Ld_512 >= Gd_88 && Bid > ima_160 && Bid > ima_168) { + text_256 = "ê"; + color_212 = Red; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Ld_504 < Gd_88 || Ld_512 < Gd_88 && Bid >= ima_160 && Bid >= ima_168) { + text_256 = "è"; + color_212 = OrangeRed; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid <= ima_160 - Ld_296 && Bid > ima_168 && Ld_512 >= Gd_88) { + text_256 = "ê"; + color_212 = Red; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid > ima_160 - Ld_296 && Bid < ima_160 && Bid > ima_168 && Ld_512 >= Gd_88) { + text_256 = "î"; + color_212 = Red; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid > ima_160 - Ld_296 && Bid < ima_160 && Bid > ima_168 && Ld_512 < Gd_88) { + text_256 = "è"; + color_212 = OrangeRed; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid <= ima_160 - Ld_296 && Bid > ima_168 && Ld_512 < Gd_88) { + text_256 = "è"; + color_212 = OrangeRed; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid <= ima_168 - Ld_296 && Bid > ima_160 && Ld_504 >= Gd_88) { + text_256 = "ê"; + color_212 = Red; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid > ima_168 - Ld_296 && Bid < ima_168 && Bid > ima_160 && Ld_504 >= Gd_88) { + text_256 = "î"; + color_212 = Red; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid > ima_168 - Ld_296 && Bid < ima_168 && Bid > ima_160 && Ld_504 < Gd_88) { + text_256 = "è"; + color_212 = OrangeRed; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid <= ima_168 - Ld_296 && Bid > ima_160 && Ld_504 < Gd_88) { + text_256 = "è"; + color_212 = OrangeRed; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid <= ima_160 - Ld_296 && Bid <= ima_168 - Ld_296) { + text_256 = "ê"; + color_212 = Red; + Li_324 = -6; + } + if (istochastic_184 > istochastic_176 && Bid < ima_160 && Bid > ima_160 - Ld_296 && Bid < ima_168 && Bid > ima_168 - Ld_296) { + text_256 = "î"; + color_212 = Red; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid <= ima_160 - Ld_296 && Bid <= ima_168 && Bid > ima_168 - Ld_296) { + text_256 = "î"; + color_212 = Red; + Li_324 = 0; + } + if (istochastic_184 > istochastic_176 && Bid <= ima_168 - Ld_296 && Bid <= ima_160 && Bid > ima_160 - Ld_296) { + text_256 = "î"; + color_212 = Red; + Li_324 = 0; + } + ObjectCreate("Vectorial_Bias", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Vectorial_Bias", "VECTORIAL BIAS", 8, "Arial Black", Gold); + ObjectSet("Vectorial_Bias", OBJPROP_CORNER, 0); + ObjectSet("Vectorial_Bias", OBJPROP_XDISTANCE, 44); + ObjectSet("Vectorial_Bias", OBJPROP_YDISTANCE, 55); + ObjectCreate("Sup_Res_1", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Sup_Res_1", "S / R LEVEL 1", 8, "Arial Black", Gold); + ObjectSet("Sup_Res_1", OBJPROP_CORNER, 0); + ObjectSet("Sup_Res_1", OBJPROP_XDISTANCE, 53); + ObjectSet("Sup_Res_1", OBJPROP_YDISTANCE, 86); + ObjectCreate("Sup_Res_2", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Sup_Res_2", "S / R LEVEL 2", 8, "Arial Black", Gold); + ObjectSet("Sup_Res_2", OBJPROP_CORNER, 0); + ObjectSet("Sup_Res_2", OBJPROP_XDISTANCE, 53); + ObjectSet("Sup_Res_2", OBJPROP_YDISTANCE, 104); + ObjectCreate("Positional_Bias", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Positional_Bias", "POSITIONAL BIAS", 8, "Arial Black", Gold); + ObjectSet("Positional_Bias", OBJPROP_CORNER, 0); + ObjectSet("Positional_Bias", OBJPROP_XDISTANCE, 42); + ObjectSet("Positional_Bias", OBJPROP_YDISTANCE, 139); + ObjectCreate("Venom_1_Text", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Text", "VENOM 1", 11, "Arial Black", color_192); + ObjectSet("Venom_1_Text", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Text", OBJPROP_XDISTANCE, 160); + ObjectSet("Venom_1_Text", OBJPROP_YDISTANCE, 23); + ObjectCreate("Venom_1_Sig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Sig", text_216, 20, "Wingdings", color_192); + ObjectSet("Venom_1_Sig", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Sig", OBJPROP_XDISTANCE, 185); + ObjectSet("Venom_1_Sig", OBJPROP_YDISTANCE, 50); + ObjectCreate("Venom_2_Text", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Text", "VENOM 2", 11, "Arial Black", color_196); + ObjectSet("Venom_2_Text", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Text", OBJPROP_XDISTANCE, 260); + ObjectSet("Venom_2_Text", OBJPROP_YDISTANCE, 23); + ObjectCreate("Venom_2_Sig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Sig", text_224, 20, "Wingdings", color_196); + ObjectSet("Venom_2_Sig", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Sig", OBJPROP_XDISTANCE, 285); + ObjectSet("Venom_2_Sig", OBJPROP_YDISTANCE, 50); + ObjectCreate("Venom_3_Text", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Text", "VENOM 3", 11, "Arial Black", color_200); + ObjectSet("Venom_3_Text", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Text", OBJPROP_XDISTANCE, 360); + ObjectSet("Venom_3_Text", OBJPROP_YDISTANCE, 23); + ObjectCreate("Venom_3_Sig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Sig", text_232, 20, "Wingdings", color_200); + ObjectSet("Venom_3_Sig", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Sig", OBJPROP_XDISTANCE, 385); + ObjectSet("Venom_3_Sig", OBJPROP_YDISTANCE, 50); + ObjectCreate("Venom_4_Text", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Text", "VENOM 4", 11, "Arial Black", color_204); + ObjectSet("Venom_4_Text", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Text", OBJPROP_XDISTANCE, 460); + ObjectSet("Venom_4_Text", OBJPROP_YDISTANCE, 23); + ObjectCreate("Venom_4_Sig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Sig", text_240, 20, "Wingdings", color_204); + ObjectSet("Venom_4_Sig", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Sig", OBJPROP_XDISTANCE, 485); + ObjectSet("Venom_4_Sig", OBJPROP_YDISTANCE, 50); + ObjectCreate("Venom_5_Text", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Text", "VENOM 5", 11, "Arial Black", color_208); + ObjectSet("Venom_5_Text", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Text", OBJPROP_XDISTANCE, 560); + ObjectSet("Venom_5_Text", OBJPROP_YDISTANCE, 23); + ObjectCreate("Venom_5_Sig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Sig", text_248, 20, "Wingdings", color_208); + ObjectSet("Venom_5_Sig", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Sig", OBJPROP_XDISTANCE, 585); + ObjectSet("Venom_5_Sig", OBJPROP_YDISTANCE, 50); + ObjectCreate("Venom_6_Text", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Text", "VENOM 6", 11, "Arial Black", color_212); + ObjectSet("Venom_6_Text", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Text", OBJPROP_XDISTANCE, 660); + ObjectSet("Venom_6_Text", OBJPROP_YDISTANCE, 23); + ObjectCreate("Venom_6_Sig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Sig", text_256, 20, "Wingdings", color_212); + ObjectSet("Venom_6_Sig", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Sig", OBJPROP_XDISTANCE, 685); + ObjectSet("Venom_6_Sig", OBJPROP_YDISTANCE, 50); + if (Bid > ima_0 && Bid > ima_8 && ima_0 > ima_8) { + Ld_532 = (Bid - ima_0) / point_280; + dbl2str_540 = DoubleToStr(Ld_532, 0); + y_528 = 85; + Li_564 = TRUE; + } + if (Bid > ima_0 && Bid > ima_8 && ima_8 > ima_0) { + Ld_532 = (Bid - ima_8) / point_280; + dbl2str_540 = DoubleToStr(Ld_532, 0); + y_528 = 85; + Li_564 = TRUE; + } + if (Bid > ima_0 && Bid > ima_8 && ima_8 == ima_0) { + Ld_532 = (Bid - ima_8) / point_280; + dbl2str_540 = DoubleToStr(Ld_532, 0); + y_528 = 85; + Li_564 = TRUE; + } + if (Bid < ima_0 && Bid < ima_8 && ima_0 < ima_8) { + Ld_532 = (ima_0 - Bid) / point_280; + dbl2str_540 = DoubleToStr(Ld_532, 0); + y_528 = 102; + Li_564 = TRUE; + } + if (Bid < ima_0 && Bid < ima_8 && ima_8 < ima_0) { + Ld_532 = (ima_8 - Bid) / point_280; + dbl2str_540 = DoubleToStr(Ld_532, 0); + y_528 = 102; + Li_564 = TRUE; + } + if (Bid < ima_0 && Bid < ima_8 && ima_8 == ima_0) { + Ld_532 = (ima_8 - Bid) / point_280; + dbl2str_540 = DoubleToStr(Ld_532, 0); + y_528 = 102; + Li_564 = TRUE; + } + if (ima_0 > ima_8 && Bid < ima_0 && Bid > ima_8) { + dbl2str_548 = DoubleToStr((ima_0 - Bid) / point_280, 0); + dbl2str_556 = DoubleToStr((Bid - ima_8) / point_280, 0); + Li_564 = FALSE; + } + if (ima_0 < ima_8 && Bid > ima_0 && Bid < ima_8) { + dbl2str_548 = DoubleToStr((ima_8 - Bid) / point_280, 0); + dbl2str_556 = DoubleToStr((Bid - ima_0) / point_280, 0); + Li_564 = FALSE; + } + if (Li_564 == FALSE) { + ObjectCreate("Venom_1_Up_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Up_Range", "( " + dbl2str_548 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_1_Up_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Up_Range", OBJPROP_XDISTANCE, 187); + ObjectSet("Venom_1_Up_Range", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_1_Down_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Down_Range", "( " + dbl2str_556 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_1_Down_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Down_Range", OBJPROP_XDISTANCE, 187); + ObjectSet("Venom_1_Down_Range", OBJPROP_YDISTANCE, 102); + } else { + ObjectDelete("Venom_1_Up_Range"); + ObjectDelete("Venom_1_Down_Range"); + } + if (Li_564 == TRUE && Ld_532 >= 0.5) { + ObjectCreate("Venom_1_Eyesig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Eyesig", "¥", 15, "Wingdings", color_192); + ObjectSet("Venom_1_Eyesig", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Eyesig", OBJPROP_XDISTANCE, 165); + ObjectSet("Venom_1_Eyesig", OBJPROP_YDISTANCE, y_528); + ObjectCreate("Venom_1_Eyeprice", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Eyeprice", dbl2str_540, 12, "Arial Narrow", Gold); + ObjectSet("Venom_1_Eyeprice", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Eyeprice", OBJPROP_XDISTANCE, 187); + ObjectSet("Venom_1_Eyeprice", OBJPROP_YDISTANCE, y_528); + } else { + ObjectDelete("Venom_1_Eyesig"); + ObjectDelete("Venom_1_Eyeprice"); + } + ObjectCreate("Venom_1_Eyehi", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Eyehi", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_1_Eyehi", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Eyehi", OBJPROP_XDISTANCE, 165); + ObjectSet("Venom_1_Eyehi", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_1_Eyelo", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Eyelo", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_1_Eyelo", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Eyelo", OBJPROP_XDISTANCE, 165); + ObjectSet("Venom_1_Eyelo", OBJPROP_YDISTANCE, 102); + if (Bid > ima_32 && Bid > ima_40 && ima_32 > ima_40) { + Ld_572 = (Bid - ima_32) / point_280; + dbl2str_580 = DoubleToStr(Ld_572, 0); + y_568 = 85; + Li_604 = TRUE; + } + if (Bid > ima_32 && Bid > ima_40 && ima_40 > ima_32) { + Ld_572 = (Bid - ima_40) / point_280; + dbl2str_580 = DoubleToStr(Ld_572, 0); + y_568 = 85; + Li_604 = TRUE; + } + if (Bid > ima_32 && Bid > ima_40 && ima_40 == ima_32) { + Ld_572 = (Bid - ima_40) / point_280; + dbl2str_580 = DoubleToStr(Ld_572, 0); + y_568 = 85; + Li_604 = TRUE; + } + if (Bid < ima_32 && Bid < ima_40 && ima_32 < ima_40) { + Ld_572 = (ima_32 - Bid) / point_280; + dbl2str_580 = DoubleToStr(Ld_572, 0); + y_568 = 102; + Li_604 = TRUE; + } + if (Bid < ima_32 && Bid < ima_40 && ima_40 < ima_32) { + Ld_572 = (ima_40 - Bid) / point_280; + dbl2str_580 = DoubleToStr(Ld_572, 0); + y_568 = 102; + Li_604 = TRUE; + } + if (Bid < ima_32 && Bid < ima_40 && ima_40 == ima_32) { + Ld_572 = (ima_40 - Bid) / point_280; + dbl2str_580 = DoubleToStr(Ld_572, 0); + y_568 = 102; + Li_604 = TRUE; + } + if (ima_32 > ima_40 && Bid < ima_32 && Bid > ima_40) { + dbl2str_588 = DoubleToStr((ima_32 - Bid) / point_280, 0); + dbl2str_596 = DoubleToStr((Bid - ima_40) / point_280, 0); + Li_604 = FALSE; + } + if (ima_32 < ima_40 && Bid > ima_32 && Bid < ima_40) { + dbl2str_588 = DoubleToStr((ima_40 - Bid) / point_280, 0); + dbl2str_596 = DoubleToStr((Bid - ima_32) / point_280, 0); + Li_604 = FALSE; + } + if (Li_604 == FALSE) { + ObjectCreate("Venom_2_Up_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Up_Range", "( " + dbl2str_588 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_2_Up_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Up_Range", OBJPROP_XDISTANCE, 287); + ObjectSet("Venom_2_Up_Range", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_2_Down_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Down_Range", "( " + dbl2str_596 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_2_Down_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Down_Range", OBJPROP_XDISTANCE, 287); + ObjectSet("Venom_2_Down_Range", OBJPROP_YDISTANCE, 102); + } else { + ObjectDelete("Venom_2_Up_Range"); + ObjectDelete("Venom_2_Down_Range"); + } + if (Li_604 == TRUE && Ld_572 >= 0.5) { + ObjectCreate("Venom_2_Eyesig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Eyesig", "¥", 15, "Wingdings", color_196); + ObjectSet("Venom_2_Eyesig", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Eyesig", OBJPROP_XDISTANCE, 265); + ObjectSet("Venom_2_Eyesig", OBJPROP_YDISTANCE, y_568); + ObjectCreate("Venom_2_Eyeprice", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Eyeprice", dbl2str_580, 12, "Arial Narrow", Gold); + ObjectSet("Venom_2_Eyeprice", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Eyeprice", OBJPROP_XDISTANCE, 287); + ObjectSet("Venom_2_Eyeprice", OBJPROP_YDISTANCE, y_568); + } else { + ObjectDelete("Venom_2_Eyesig"); + ObjectDelete("Venom_2_Eyeprice"); + } + ObjectCreate("Venom_2_Eyehi", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Eyehi", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_2_Eyehi", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Eyehi", OBJPROP_XDISTANCE, 265); + ObjectSet("Venom_2_Eyehi", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_2_Eyelo", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Eyelo", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_2_Eyelo", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Eyelo", OBJPROP_XDISTANCE, 265); + ObjectSet("Venom_2_Eyelo", OBJPROP_YDISTANCE, 102); + if (Bid > ima_64 && Bid > ima_72 && ima_64 > ima_72) { + Ld_612 = (Bid - ima_64) / point_280; + dbl2str_620 = DoubleToStr(Ld_612, 0); + y_608 = 85; + Li_644 = TRUE; + } + if (Bid > ima_64 && Bid > ima_72 && ima_72 > ima_64) { + Ld_612 = (Bid - ima_72) / point_280; + dbl2str_620 = DoubleToStr(Ld_612, 0); + y_608 = 85; + Li_644 = TRUE; + } + if (Bid > ima_64 && Bid > ima_72 && ima_72 == ima_64) { + Ld_612 = (Bid - ima_72) / point_280; + dbl2str_620 = DoubleToStr(Ld_612, 0); + y_608 = 85; + Li_644 = TRUE; + } + if (Bid < ima_64 && Bid < ima_72 && ima_64 < ima_72) { + Ld_612 = (ima_64 - Bid) / point_280; + dbl2str_620 = DoubleToStr(Ld_612, 0); + y_608 = 102; + Li_644 = TRUE; + } + if (Bid < ima_64 && Bid < ima_72 && ima_72 < ima_64) { + Ld_612 = (ima_72 - Bid) / point_280; + dbl2str_620 = DoubleToStr(Ld_612, 0); + y_608 = 102; + Li_644 = TRUE; + } + if (Bid < ima_64 && Bid < ima_72 && ima_72 == ima_64) { + Ld_612 = (ima_72 - Bid) / point_280; + dbl2str_620 = DoubleToStr(Ld_612, 0); + y_608 = 102; + Li_644 = TRUE; + } + if (ima_64 > ima_72 && Bid < ima_64 && Bid > ima_72) { + dbl2str_628 = DoubleToStr((ima_64 - Bid) / point_280, 0); + dbl2str_636 = DoubleToStr((Bid - ima_72) / point_280, 0); + Li_644 = FALSE; + } + if (ima_64 < ima_72 && Bid > ima_64 && Bid < ima_72) { + dbl2str_628 = DoubleToStr((ima_72 - Bid) / point_280, 0); + dbl2str_636 = DoubleToStr((Bid - ima_64) / point_280, 0); + Li_644 = FALSE; + } + if (Li_644 == FALSE) { + ObjectCreate("Venom_3_Up_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Up_Range", "( " + dbl2str_628 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_3_Up_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Up_Range", OBJPROP_XDISTANCE, 387); + ObjectSet("Venom_3_Up_Range", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_3_Down_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Down_Range", "( " + dbl2str_636 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_3_Down_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Down_Range", OBJPROP_XDISTANCE, 387); + ObjectSet("Venom_3_Down_Range", OBJPROP_YDISTANCE, 102); + } else { + ObjectDelete("Venom_3_Up_Range"); + ObjectDelete("Venom_3_Down_Range"); + } + if (Li_644 == TRUE && Ld_612 >= 0.5) { + ObjectCreate("Venom_3_Eyesig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Eyesig", "¥", 15, "Wingdings", color_200); + ObjectSet("Venom_3_Eyesig", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Eyesig", OBJPROP_XDISTANCE, 365); + ObjectSet("Venom_3_Eyesig", OBJPROP_YDISTANCE, y_608); + ObjectCreate("Venom_3_Eyeprice", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Eyeprice", dbl2str_620, 12, "Arial Narrow", Gold); + ObjectSet("Venom_3_Eyeprice", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Eyeprice", OBJPROP_XDISTANCE, 387); + ObjectSet("Venom_3_Eyeprice", OBJPROP_YDISTANCE, y_608); + } else { + ObjectDelete("Venom_3_Eyesig"); + ObjectDelete("Venom_3_Eyeprice"); + } + ObjectCreate("Venom_3_Eyehi", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Eyehi", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_3_Eyehi", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Eyehi", OBJPROP_XDISTANCE, 365); + ObjectSet("Venom_3_Eyehi", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_3_Eyelo", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Eyelo", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_3_Eyelo", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Eyelo", OBJPROP_XDISTANCE, 365); + ObjectSet("Venom_3_Eyelo", OBJPROP_YDISTANCE, 102); + if (Bid > ima_96 && Bid > ima_104 && ima_96 > ima_104) { + Ld_652 = (Bid - ima_96) / point_280; + dbl2str_660 = DoubleToStr(Ld_652, 0); + y_648 = 85; + Li_684 = TRUE; + } + if (Bid > ima_96 && Bid > ima_104 && ima_104 > ima_96) { + Ld_652 = (Bid - ima_104) / point_280; + dbl2str_660 = DoubleToStr(Ld_652, 0); + y_648 = 85; + Li_684 = TRUE; + } + if (Bid > ima_96 && Bid > ima_104 && ima_104 == ima_96) { + Ld_652 = (Bid - ima_104) / point_280; + dbl2str_660 = DoubleToStr(Ld_652, 0); + y_648 = 85; + Li_684 = TRUE; + } + if (Bid < ima_96 && Bid < ima_104 && ima_96 < ima_104) { + Ld_652 = (ima_96 - Bid) / point_280; + dbl2str_660 = DoubleToStr(Ld_652, 0); + y_648 = 102; + Li_684 = TRUE; + } + if (Bid < ima_96 && Bid < ima_104 && ima_104 < ima_96) { + Ld_652 = (ima_104 - Bid) / point_280; + dbl2str_660 = DoubleToStr(Ld_652, 0); + y_648 = 102; + Li_684 = TRUE; + } + if (Bid < ima_96 && Bid < ima_104 && ima_104 == ima_96) { + Ld_652 = (ima_104 - Bid) / point_280; + dbl2str_660 = DoubleToStr(Ld_652, 0); + y_648 = 102; + Li_684 = TRUE; + } + if (ima_96 > ima_104 && Bid < ima_96 && Bid > ima_104) { + dbl2str_668 = DoubleToStr((ima_96 - Bid) / point_280, 0); + dbl2str_676 = DoubleToStr((Bid - ima_104) / point_280, 0); + Li_684 = FALSE; + } + if (ima_96 < ima_104 && Bid > ima_96 && Bid < ima_104) { + dbl2str_668 = DoubleToStr((ima_104 - Bid) / point_280, 0); + dbl2str_676 = DoubleToStr((Bid - ima_96) / point_280, 0); + Li_684 = FALSE; + } + if (Li_684 == FALSE) { + ObjectCreate("Venom_4_Up_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Up_Range", "( " + dbl2str_668 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_4_Up_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Up_Range", OBJPROP_XDISTANCE, 487); + ObjectSet("Venom_4_Up_Range", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_4_Down_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Down_Range", "( " + dbl2str_676 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_4_Down_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Down_Range", OBJPROP_XDISTANCE, 487); + ObjectSet("Venom_4_Down_Range", OBJPROP_YDISTANCE, 102); + } else { + ObjectDelete("Venom_4_Up_Range"); + ObjectDelete("Venom_4_Down_Range"); + } + if (Li_684 == TRUE && Ld_652 >= 0.5) { + ObjectCreate("Venom_4_Eyesig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Eyesig", "¥", 15, "Wingdings", color_204); + ObjectSet("Venom_4_Eyesig", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Eyesig", OBJPROP_XDISTANCE, 465); + ObjectSet("Venom_4_Eyesig", OBJPROP_YDISTANCE, y_648); + ObjectCreate("Venom_4_Eyeprice", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Eyeprice", dbl2str_660, 12, "Arial Narrow", Gold); + ObjectSet("Venom_4_Eyeprice", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Eyeprice", OBJPROP_XDISTANCE, 487); + ObjectSet("Venom_4_Eyeprice", OBJPROP_YDISTANCE, y_648); + } else { + ObjectDelete("Venom_4_Eyesig"); + ObjectDelete("Venom_4_Eyeprice"); + } + ObjectCreate("Venom_4_Eyehi", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Eyehi", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_4_Eyehi", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Eyehi", OBJPROP_XDISTANCE, 465); + ObjectSet("Venom_4_Eyehi", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_4_Eyelo", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Eyelo", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_4_Eyelo", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Eyelo", OBJPROP_XDISTANCE, 465); + ObjectSet("Venom_4_Eyelo", OBJPROP_YDISTANCE, 102); + if (Bid > ima_128 && Bid > ima_136 && ima_128 > ima_136) { + Ld_692 = (Bid - ima_128) / point_280; + dbl2str_700 = DoubleToStr(Ld_692, 0); + y_688 = 85; + Li_724 = TRUE; + } + if (Bid > ima_128 && Bid > ima_136 && ima_136 > ima_128) { + Ld_692 = (Bid - ima_136) / point_280; + dbl2str_700 = DoubleToStr(Ld_692, 0); + y_688 = 85; + Li_724 = TRUE; + } + if (Bid > ima_128 && Bid > ima_136 && ima_136 == ima_128) { + Ld_692 = (Bid - ima_136) / point_280; + dbl2str_700 = DoubleToStr(Ld_692, 0); + y_688 = 85; + Li_724 = TRUE; + } + if (Bid < ima_128 && Bid < ima_136 && ima_128 < ima_136) { + Ld_692 = (ima_128 - Bid) / point_280; + dbl2str_700 = DoubleToStr(Ld_692, 0); + y_688 = 102; + Li_724 = TRUE; + } + if (Bid < ima_128 && Bid < ima_136 && ima_136 < ima_128) { + Ld_692 = (ima_136 - Bid) / point_280; + dbl2str_700 = DoubleToStr(Ld_692, 0); + y_688 = 102; + Li_724 = TRUE; + } + if (Bid < ima_128 && Bid < ima_136 && ima_136 == ima_128) { + Ld_692 = (ima_136 - Bid) / point_280; + dbl2str_700 = DoubleToStr(Ld_692, 0); + y_688 = 102; + Li_724 = TRUE; + } + if (ima_128 > ima_136 && Bid < ima_128 && Bid > ima_136) { + dbl2str_708 = DoubleToStr((ima_128 - Bid) / point_280, 0); + dbl2str_716 = DoubleToStr((Bid - ima_136) / point_280, 0); + Li_724 = FALSE; + } + if (ima_128 < ima_136 && Bid > ima_128 && Bid < ima_136) { + dbl2str_708 = DoubleToStr((ima_136 - Bid) / point_280, 0); + dbl2str_716 = DoubleToStr((Bid - ima_128) / point_280, 0); + Li_724 = FALSE; + } + if (Li_724 == FALSE) { + ObjectCreate("Venom_5_Up_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Up_Range", "( " + dbl2str_708 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_5_Up_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Up_Range", OBJPROP_XDISTANCE, 587); + ObjectSet("Venom_5_Up_Range", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_5_Down_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Down_Range", "( " + dbl2str_716 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_5_Down_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Down_Range", OBJPROP_XDISTANCE, 587); + ObjectSet("Venom_5_Down_Range", OBJPROP_YDISTANCE, 102); + } else { + ObjectDelete("Venom_5_Up_Range"); + ObjectDelete("Venom_5_Down_Range"); + } + if (Li_724 == TRUE && Ld_692 >= 0.5) { + ObjectCreate("Venom_5_Eyesig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Eyesig", "¥", 15, "Wingdings", color_208); + ObjectSet("Venom_5_Eyesig", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Eyesig", OBJPROP_XDISTANCE, 565); + ObjectSet("Venom_5_Eyesig", OBJPROP_YDISTANCE, y_688); + ObjectCreate("Venom_5_Eyeprice", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Eyeprice", dbl2str_700, 12, "Arial Narrow", Gold); + ObjectSet("Venom_5_Eyeprice", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Eyeprice", OBJPROP_XDISTANCE, 587); + ObjectSet("Venom_5_Eyeprice", OBJPROP_YDISTANCE, y_688); + } else { + ObjectDelete("Venom_5_Eyesig"); + ObjectDelete("Venom_5_Eyeprice"); + } + ObjectCreate("Venom_5_Eyehi", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Eyehi", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_5_Eyehi", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Eyehi", OBJPROP_XDISTANCE, 565); + ObjectSet("Venom_5_Eyehi", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_5_Eyelo", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Eyelo", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_5_Eyelo", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Eyelo", OBJPROP_XDISTANCE, 565); + ObjectSet("Venom_5_Eyelo", OBJPROP_YDISTANCE, 102); + if (Bid > ima_160 && Bid > ima_168 && ima_160 > ima_168) { + Ld_732 = (Bid - ima_160) / point_280; + dbl2str_740 = DoubleToStr(Ld_732, 0); + y_728 = 85; + Li_764 = TRUE; + } + if (Bid > ima_160 && Bid > ima_168 && ima_168 > ima_160) { + Ld_732 = (Bid - ima_168) / point_280; + dbl2str_740 = DoubleToStr(Ld_732, 0); + y_728 = 85; + Li_764 = TRUE; + } + if (Bid > ima_160 && Bid > ima_168 && ima_168 == ima_160) { + Ld_732 = (Bid - ima_168) / point_280; + dbl2str_740 = DoubleToStr(Ld_732, 0); + y_728 = 85; + Li_764 = TRUE; + } + if (Bid < ima_160 && Bid < ima_168 && ima_160 < ima_168) { + Ld_732 = (ima_160 - Bid) / point_280; + dbl2str_740 = DoubleToStr(Ld_732, 0); + y_728 = 102; + Li_764 = TRUE; + } + if (Bid < ima_160 && Bid < ima_168 && ima_168 < ima_160) { + Ld_732 = (ima_168 - Bid) / point_280; + dbl2str_740 = DoubleToStr(Ld_732, 0); + y_728 = 102; + Li_764 = TRUE; + } + if (Bid < ima_160 && Bid < ima_168 && ima_168 == ima_160) { + Ld_732 = (ima_168 - Bid) / point_280; + dbl2str_740 = DoubleToStr(Ld_732, 0); + y_728 = 102; + Li_764 = TRUE; + } + if (ima_160 > ima_168 && Bid < ima_160 && Bid > ima_168) { + dbl2str_748 = DoubleToStr((ima_160 - Bid) / point_280, 0); + dbl2str_756 = DoubleToStr((Bid - ima_168) / point_280, 0); + Li_764 = FALSE; + } + if (ima_160 < ima_168 && Bid > ima_160 && Bid < ima_168) { + dbl2str_748 = DoubleToStr((ima_168 - Bid) / point_280, 0); + dbl2str_756 = DoubleToStr((Bid - ima_160) / point_280, 0); + Li_764 = FALSE; + } + if (Li_764 == FALSE) { + ObjectCreate("Venom_6_Up_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Up_Range", "( " + dbl2str_748 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_6_Up_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Up_Range", OBJPROP_XDISTANCE, 687); + ObjectSet("Venom_6_Up_Range", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_6_Down_Range", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Down_Range", "( " + dbl2str_756 + " )", 12, "Arial Narrow", Gray); + ObjectSet("Venom_6_Down_Range", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Down_Range", OBJPROP_XDISTANCE, 687); + ObjectSet("Venom_6_Down_Range", OBJPROP_YDISTANCE, 102); + } else { + ObjectDelete("Venom_6_Up_Range"); + ObjectDelete("Venom_6_Down_Range"); + } + if (Li_764 == TRUE && Ld_732 >= 0.5) { + ObjectCreate("Venom_6_Eyesig", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Eyesig", "¥", 15, "Wingdings", color_212); + ObjectSet("Venom_6_Eyesig", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Eyesig", OBJPROP_XDISTANCE, 665); + ObjectSet("Venom_6_Eyesig", OBJPROP_YDISTANCE, y_728); + ObjectCreate("Venom_6_Eyeprice", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Eyeprice", dbl2str_740, 12, "Arial Narrow", Gold); + ObjectSet("Venom_6_Eyeprice", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Eyeprice", OBJPROP_XDISTANCE, 687); + ObjectSet("Venom_6_Eyeprice", OBJPROP_YDISTANCE, y_728); + } else { + ObjectDelete("Venom_6_Eyesig"); + ObjectDelete("Venom_6_Eyeprice"); + } + ObjectCreate("Venom_6_Eyehi", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Eyehi", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_6_Eyehi", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Eyehi", OBJPROP_XDISTANCE, 665); + ObjectSet("Venom_6_Eyehi", OBJPROP_YDISTANCE, 85); + ObjectCreate("Venom_6_Eyelo", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Eyelo", "¥", 15, "Wingdings", DarkSlateGray); + ObjectSet("Venom_6_Eyelo", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Eyelo", OBJPROP_XDISTANCE, 665); + ObjectSet("Venom_6_Eyelo", OBJPROP_YDISTANCE, 102); + var_name_768 = "start_saat" + Symbol(); + Li_unused_776 = GlobalVariableGet(var_name_768); + var_name_780 = "venom_signal_buy" + Symbol(); + var_name_788 = "venom_signal_sell" + Symbol(); + bool_796 = IsConnected(); + if (bool_796 == TRUE) { + if (Li_304 == 6 && Li_308 == 6 && Li_312 == 6 && Li_316 == 6 && Li_320 == 6 && Li_324 == 6 && hour_1128 > 6 && hour_1128 < 16) GlobalVariableSet(var_name_780, 6); + if (Li_304 == -6 && Li_308 == -6 && Li_312 == -6 && Li_316 == -6 && Li_320 == -6 && Li_324 == -6 && hour_1128 > 6 && hour_1128 < 16) GlobalVariableSet(var_name_788, -6); + } + if (Venom_Alert == TRUE && bool_796 == TRUE) { + digits_800 = MarketInfo(Symbol(), MODE_DIGITS); + if (Li_304 == 6 && Li_308 == 6 && Li_312 == 6 && Li_316 == 6 && Li_320 == 6 && Li_324 == 6 && hour_1128 > 6 && hour_1128 < 16) Alert(Symbol() + " BUY!!! " + DoubleToStr(Bid, digits_800)); + if (Li_304 == -6 && Li_308 == -6 && Li_312 == -6 && Li_316 == -6 && Li_320 == -6 && Li_324 == -6 && hour_1128 > 6 && hour_1128 < 16) Alert(Symbol() + " SELL!!! " + DoubleToStr(Bid, digits_800)); + } + ima_808 = iMA(NULL, PERIOD_M1, 16, 0, MODE_SMA, PRICE_CLOSE, 0); + ibands_816 = iBands(NULL, PERIOD_M1, 16, 1, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_824 = iBands(NULL, PERIOD_M1, 16, 1, 0, PRICE_CLOSE, MODE_LOWER, 0); + ibands_832 = iBands(NULL, PERIOD_M1, 16, 3, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_840 = iBands(NULL, PERIOD_M1, 16, 3, 0, PRICE_CLOSE, MODE_LOWER, 0); + ima_848 = iMA(NULL, PERIOD_M5, 16, 0, MODE_SMA, PRICE_CLOSE, 0); + ibands_856 = iBands(NULL, PERIOD_M5, 16, 1, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_864 = iBands(NULL, PERIOD_M5, 16, 1, 0, PRICE_CLOSE, MODE_LOWER, 0); + ibands_872 = iBands(NULL, PERIOD_M5, 16, 3, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_880 = iBands(NULL, PERIOD_M5, 16, 3, 0, PRICE_CLOSE, MODE_LOWER, 0); + ima_888 = iMA(NULL, PERIOD_M15, 16, 0, MODE_SMA, PRICE_CLOSE, 0); + ibands_896 = iBands(NULL, PERIOD_M15, 16, 1, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_904 = iBands(NULL, PERIOD_M15, 16, 1, 0, PRICE_CLOSE, MODE_LOWER, 0); + ibands_912 = iBands(NULL, PERIOD_M15, 16, 3, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_920 = iBands(NULL, PERIOD_M15, 16, 3, 0, PRICE_CLOSE, MODE_LOWER, 0); + ima_928 = iMA(NULL, PERIOD_M30, 16, 0, MODE_SMA, PRICE_CLOSE, 0); + ibands_936 = iBands(NULL, PERIOD_M30, 16, 1, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_944 = iBands(NULL, PERIOD_M30, 16, 1, 0, PRICE_CLOSE, MODE_LOWER, 0); + ibands_952 = iBands(NULL, PERIOD_M30, 16, 3, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_960 = iBands(NULL, PERIOD_M30, 16, 3, 0, PRICE_CLOSE, MODE_LOWER, 0); + ima_968 = iMA(NULL, PERIOD_H1, 16, 0, MODE_SMA, PRICE_CLOSE, 0); + ibands_976 = iBands(NULL, PERIOD_H1, 16, 1, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_984 = iBands(NULL, PERIOD_H1, 16, 1, 0, PRICE_CLOSE, MODE_LOWER, 0); + ibands_992 = iBands(NULL, PERIOD_H1, 16, 3, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_1000 = iBands(NULL, PERIOD_H1, 16, 3, 0, PRICE_CLOSE, MODE_LOWER, 0); + ima_1008 = iMA(NULL, PERIOD_H4, 16, 0, MODE_SMA, PRICE_CLOSE, 0); + ibands_1016 = iBands(NULL, PERIOD_H4, 16, 1, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_1024 = iBands(NULL, PERIOD_H4, 16, 1, 0, PRICE_CLOSE, MODE_LOWER, 0); + ibands_1032 = iBands(NULL, PERIOD_H4, 16, 3, 0, PRICE_CLOSE, MODE_UPPER, 0); + ibands_1040 = iBands(NULL, PERIOD_H4, 16, 3, 0, PRICE_CLOSE, MODE_LOWER, 0); + if (Bid > ima_808 && Bid <= ibands_816) { + color_1048 = Lime; + text_1072 = "Ÿ"; + } + if (Bid > ibands_816 && Bid < ibands_832) { + color_1048 = Lime; + text_1072 = "l"; + } + if (Bid >= ibands_832) { + color_1048 = DarkGreen; + text_1072 = "l"; + } + if (Bid < ima_808 && Bid >= ibands_824) { + color_1048 = Red; + text_1072 = "Ÿ"; + } + if (Bid < ibands_824 && Bid > ibands_840) { + color_1048 = Red; + text_1072 = "l"; + } + if (Bid <= ibands_840) { + color_1048 = Maroon; + text_1072 = "l"; + } + if (Bid > ima_848 && Bid <= ibands_856) { + color_1052 = Lime; + text_1080 = "Ÿ"; + } + if (Bid > ibands_856 && Bid < ibands_872) { + color_1052 = Lime; + text_1080 = "l"; + } + if (Bid >= ibands_872) { + color_1052 = DarkGreen; + text_1080 = "l"; + } + if (Bid < ima_848 && Bid >= ibands_864) { + color_1052 = Red; + text_1080 = "Ÿ"; + } + if (Bid < ibands_864 && Bid > ibands_880) { + color_1052 = Red; + text_1080 = "l"; + } + if (Bid <= ibands_880) { + color_1052 = Maroon; + text_1080 = "l"; + } + if (Bid > ima_888 && Bid <= ibands_896) { + color_1056 = Lime; + text_1088 = "Ÿ"; + } + if (Bid > ibands_896 && Bid < ibands_912) { + color_1056 = Lime; + text_1088 = "l"; + } + if (Bid >= ibands_912) { + color_1056 = DarkGreen; + text_1088 = "l"; + } + if (Bid < ima_888 && Bid >= ibands_904) { + color_1056 = Red; + text_1088 = "Ÿ"; + } + if (Bid < ibands_904 && Bid > ibands_920) { + color_1056 = Red; + text_1088 = "l"; + } + if (Bid <= ibands_920) { + color_1056 = Maroon; + text_1088 = "l"; + } + if (Bid > ima_928 && Bid <= ibands_936) { + color_1060 = Lime; + text_1096 = "Ÿ"; + } + if (Bid > ibands_936 && Bid < ibands_952) { + color_1060 = Lime; + text_1096 = "l"; + } + if (Bid >= ibands_952) { + color_1060 = DarkGreen; + text_1096 = "l"; + } + if (Bid < ima_928 && Bid >= ibands_944) { + color_1060 = Red; + text_1096 = "Ÿ"; + } + if (Bid < ibands_944 && Bid > ibands_960) { + color_1060 = Red; + text_1096 = "l"; + } + if (Bid <= ibands_960) { + color_1060 = Maroon; + text_1096 = "l"; + } + if (Bid > ima_968 && Bid <= ibands_976) { + color_1064 = Lime; + text_1104 = "Ÿ"; + } + if (Bid > ibands_976 && Bid < ibands_992) { + color_1064 = Lime; + text_1104 = "l"; + } + if (Bid >= ibands_992) { + color_1064 = DarkGreen; + text_1104 = "l"; + } + if (Bid < ima_968 && Bid >= ibands_984) { + color_1064 = Red; + text_1104 = "Ÿ"; + } + if (Bid < ibands_984 && Bid > ibands_1000) { + color_1064 = Red; + text_1104 = "l"; + } + if (Bid <= ibands_1000) { + color_1064 = Maroon; + text_1104 = "l"; + } + if (Bid > ima_1008 && Bid <= ibands_1016) { + color_1068 = Lime; + text_1112 = "Ÿ"; + } + if (Bid > ibands_1016 && Bid < ibands_1032) { + color_1068 = Lime; + text_1112 = "l"; + } + if (Bid >= ibands_1032) { + color_1068 = DarkGreen; + text_1112 = "l"; + } + if (Bid < ima_1008 && Bid >= ibands_1024) { + color_1068 = Red; + text_1112 = "Ÿ"; + } + if (Bid < ibands_1024 && Bid > ibands_1040) { + color_1068 = Red; + text_1112 = "l"; + } + if (Bid <= ibands_1040) { + color_1068 = Maroon; + text_1112 = "l"; + } + ObjectCreate("Venom_1_Box", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_1_Box", text_1072, 30, "Wingdings", color_1048); + ObjectSet("Venom_1_Box", OBJPROP_CORNER, 0); + ObjectSet("Venom_1_Box", OBJPROP_XDISTANCE, 180); + ObjectSet("Venom_1_Box", OBJPROP_YDISTANCE, 126); + ObjectCreate("Venom_2_Box", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_2_Box", text_1080, 30, "Wingdings", color_1052); + ObjectSet("Venom_2_Box", OBJPROP_CORNER, 0); + ObjectSet("Venom_2_Box", OBJPROP_XDISTANCE, 280); + ObjectSet("Venom_2_Box", OBJPROP_YDISTANCE, 126); + ObjectCreate("Venom_3_Box", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_3_Box", text_1088, 30, "Wingdings", color_1056); + ObjectSet("Venom_3_Box", OBJPROP_CORNER, 0); + ObjectSet("Venom_3_Box", OBJPROP_XDISTANCE, 380); + ObjectSet("Venom_3_Box", OBJPROP_YDISTANCE, 126); + ObjectCreate("Venom_4_Box", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_4_Box", text_1096, 30, "Wingdings", color_1060); + ObjectSet("Venom_4_Box", OBJPROP_CORNER, 0); + ObjectSet("Venom_4_Box", OBJPROP_XDISTANCE, 480); + ObjectSet("Venom_4_Box", OBJPROP_YDISTANCE, 126); + ObjectCreate("Venom_5_Box", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_5_Box", text_1104, 30, "Wingdings", color_1064); + ObjectSet("Venom_5_Box", OBJPROP_CORNER, 0); + ObjectSet("Venom_5_Box", OBJPROP_XDISTANCE, 580); + ObjectSet("Venom_5_Box", OBJPROP_YDISTANCE, 126); + ObjectCreate("Venom_6_Box", OBJ_LABEL, WindowFind("Third Wave FX VENOM (" + Symbol() + ")"), 0, 0); + ObjectSetText("Venom_6_Box", text_1112, 30, "Wingdings", color_1068); + ObjectSet("Venom_6_Box", OBJPROP_CORNER, 0); + ObjectSet("Venom_6_Box", OBJPROP_XDISTANCE, 680); + ObjectSet("Venom_6_Box", OBJPROP_YDISTANCE, 126); + } + return (0); +} \ No newline at end of file diff --git a/Waddah_Attar_BUY_SELL_Vol.mq4 b/Waddah_Attar_BUY_SELL_Vol.mq4 new file mode 100644 index 0000000..bcd2d22 --- /dev/null +++ b/Waddah_Attar_BUY_SELL_Vol.mq4 @@ -0,0 +1,93 @@ +//+------------------------------------------------------------------+ +//| Waddah Attar Buy Sell Volume | +//| Copyright © 2007, ww.metaforex.net | +//| Waddah Attar www.metaforex.net | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2007, www.metaforex.net" +#property link "www.metaforex.net" +//---- +#property indicator_separate_window +#property indicator_buffers 3 +#property indicator_color1 Green +#property indicator_color2 Red +#property indicator_color3 Yellow +//---- buffers +double P1; +double P2; +double P1Buffer[]; +double P2Buffer[]; +double P3Buffer[]; +//---- +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { + SetIndexBuffer(0, P1Buffer); + SetIndexBuffer(1, P2Buffer); + SetIndexBuffer(2, P3Buffer); +//---- + SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2); + SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2); + SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 2); +//---- + IndicatorDigits(0); + Comment("Waddah Attar Buy Sell Volume www.metaforex.net"); + return(0); + } +//+------------------------------------------------------------------+ +//| Custor indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { + Comment(""); + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int start() + { + + int i,ii; + static int pii=-1; + + for(i = 0; i iClose(Symbol(),PERIOD_M1,i+1)) + { + P1 = P1+(iVolume(Symbol(),PERIOD_M1,i)); + } + if (iClose(Symbol(),PERIOD_M1,i)=0; i--) + { + pa[i] = (2*Close[i]+High[i]+Low[i])/4; + + scost5=0; + for(k=0; k < AVERAGE; k++) + scost5 += Volume[i+k]*pa[i+k]; + + svolume5=0; + for(k=0; k < AVERAGE; k++) + svolume5 += Volume[i+k]; + + if(svolume5==0)continue; + pa5[i] = scost5/svolume5; + + min = LLV(pa5,i,PERIOD); + max = HHV(pa5,i,PERIOD); + + rsv[i] = ((pa5[i] - min)/MathMax(max-min,Point))*100; + } + +//--- wma + for(i=limit; i>=0; i--) + pak[i] = iMAOnArray(rsv,0,AVERAGE,0,MODE_LWMA,i); + + for(i=limit; i>=0; i--) + pad[i] = iMAOnArray(pak,0,AVERAGE,0,MODE_LWMA,i); + +//--- histo + for(i=limit; i>=0; i--) + { + if(pak[i]>pad[i]) + { + BullHBuffer[i]=pak[i]; + ZeroBuffer[i]=pad[i]; + BearHBuffer[i]=0; + } + else + { + BearHBuffer[i]=pad[i]; + ZeroBuffer[i]=pak[i]; + BullHBuffer[i]=0; + } + } +//--- + return(0); + } +//+------------------------------------------------------------------+ +//| LLV | +//+------------------------------------------------------------------+ +double LLV(double &buffer[],int index, int period) +{ + int total = ArraySize(buffer); + double min = buffer[index]; + for(int i = index+1; i max) max = buffer[i]; + return(max); +} +//+------------------------------------------------------------------+ + diff --git a/arbitrage.mq4 b/arbitrage.mq4 new file mode 100644 index 0000000..2d4a705 --- /dev/null +++ b/arbitrage.mq4 @@ -0,0 +1,518 @@ +//+------------------------------------------------------------------+ +//| Arbitrage.mq4 | +//| Copyright 2015, MetaQuotes Software Corp. | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2015, MetaQuotes Software Corp." +#property link "https://www.mql5.com" +#property description"Arbitrage by pipPod" +#property version "1.00" +#property indicator_separate_window +#property indicator_buffers 2 +#property indicator_plots 2 +//--- plot Base +#property indicator_type1 DRAW_LINE +#property indicator_color1 clrLimeGreen +#property indicator_style1 STYLE_SOLID +#property indicator_width1 2 +//--- plot Quote +#property indicator_type2 DRAW_LINE +#property indicator_color2 clrFireBrick +#property indicator_style2 STYLE_SOLID +#property indicator_width2 2 +ushort indicator_width3; +//--- indicator levels +#property indicator_levelcolor clrLightSlateGray +//--- +double indicator_level1= 0; +double indicator_level2= .2; +double indicator_level3= -.2; +double indicator_level4= 20; +double indicator_level5= -20; +double indicator_level6= 30; +double indicator_level7= -30; +double indicator_level8= 100; +double indicator_level9=-100; +//--- +enum indicators + { + INDICATOR_MACD, //Moving Average Convergence/Divergence + INDICATOR_STOCHASTIC, //Stochastic Oscillator + INDICATOR_RSI, //Relative Strength Index + INDICATOR_CCI, //Commodity Channel Index + INDICATOR_RVI, //Relative Vigor Index + INDICATOR_DEMARK, //DeMarker Oscillator + }; +//--- indicator to show +input indicators Indicator=INDICATOR_MACD; +//--- index timeframe +input ENUM_TIMEFRAMES TimeFrame=0; +//--- indicator parameters +input string MACD; +input int FastEMA=12; //Fast EMA Period +input int SlowEMA=26; //Slow EMA Period +input int SignalSMA=9; //Signal SMA Period +input ENUM_APPLIED_PRICE MACDPrice=PRICE_CLOSE; //MACD Price +//--- +input string Stochastic; +input int Kperiod=7; //K Period +input int Dperiod=3; //D Period +input int Slowing=3; +input ENUM_STO_PRICE PriceField=STO_LOWHIGH; //Price Field +//--- +input string RSI; +input int RSIPeriod=14; //RSI Period +input ENUM_APPLIED_PRICE RSIPrice=PRICE_CLOSE; //RSI Price +//--- +input string CCI; +input int CCIPeriod=14; //CCI Period +input ENUM_APPLIED_PRICE CCIPrice=PRICE_CLOSE; //CCI Price +//--- +input string RVI; +input int RVIPeriod=14; //RVI Period +//--- +input string DeMarker; +input int DeMarkerPeriod=14; //DeMarker Period +input string _;//--- +input bool ColorBars=true; //Color Bars +input bool FillBuffers=true; //Fill Buffers +input string __;//--- +input bool AlertsOn=false; +//---index buffers for drawing +double BaseBuffer[]; +double QoteBuffer[]; +//---currency variables for calculation +#define USDJPY "USDJPY" +//--- +string base, + quote, + symbol1, + symbol2, + symbol3; +//--- +double index1, + index2, + index3, + baseIndex, + qoteIndex; +//--- +bool baseUSD=false, + quoteUSD=false, + quoteJPY=false, + quoteJPY1=false, + quoteJPY2=false, + quoteJPY3=false; +//---set index colors +color color1 = indicator_color1, + color2 = indicator_color2, + colorFill; +//--- +string shortName; +long chartID=ChartID(); +short window; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//---currencies to show + base = StringSubstr(_Symbol,0,3); //Base currency name + quote= StringSubstr(_Symbol,3,3); //Quote currency name + if(_Symbol=="EURUSD") + { + color1 = clrRoyalBlue; + color2 = clrLimeGreen; + quoteUSD = true; + symbol1 = _Symbol; + symbol2 = "EURJPY"; + quoteJPY2 = true; + symbol3 = USDJPY; + quoteJPY3 = true; + } + if(_Symbol=="EURJPY") + { + color1 = clrRoyalBlue; + color2 = clrYellow; + quoteJPY = true; + symbol1 = _Symbol; + quoteJPY1 = true; + symbol2 = "EURUSD"; + symbol3 = USDJPY; + quoteJPY3 = true; + } + if(_Symbol=="GBPUSD") + { + color1 = clrSilver; + color2 = clrLimeGreen; + quoteUSD = true; + symbol1 = _Symbol; + symbol2 = "GBPJPY"; + quoteJPY2 = true; + symbol3 = USDJPY; + quoteJPY3 = true; + } + if(_Symbol=="GBPJPY") + { + color1 = clrSilver; + color2 = clrYellow; + quoteJPY = true; + symbol1 = _Symbol; + quoteJPY1 = true; + symbol2 = "GBPUSD"; + symbol3 = USDJPY; + quoteJPY3 = true; + } + if(_Symbol=="AUDUSD") + { + color1 = clrDarkOrange; + color2 = clrLimeGreen; + quoteUSD = true; + symbol1 = _Symbol; + symbol2 = "AUDJPY"; + quoteJPY2 = true; + symbol3 = USDJPY; + quoteJPY3 = true; + } + if(_Symbol=="USDCAD") + { + color1 = clrLimeGreen; + color2 = clrWhiteSmoke; + baseUSD = true; + symbol1 = _Symbol; + symbol2 = "CADJPY"; + quoteJPY2 = true; + symbol3 = USDJPY; + quoteJPY3 = true; + } + if(_Symbol=="USDCHF") + { + color1 = clrLimeGreen; + color2 = clrFireBrick; + baseUSD = true; + symbol1 = _Symbol; + symbol2 = "CHFJPY"; + quoteJPY2 = true; + symbol3 = USDJPY; + quoteJPY3 = true; + } + if(_Symbol==USDJPY) + { + color1 = clrLimeGreen; + color2 = clrYellow; + quoteJPY = true; + symbol1 = _Symbol; + quoteJPY1 = true; + symbol2 = "EURUSD"; + symbol3 = "EURJPY"; + quoteJPY3 = true; + } +//---set timeframes + string timeFrame = StringSubstr(EnumToString(TimeFrame),7); + if(timeFrame=="CURRENT") + timeFrame = ""; +//--- + switch(Indicator) + { + case INDICATOR_MACD: + shortName=StringFormat("Arbitrage MACD %s(%d,%d,%d)", + timeFrame,FastEMA,SlowEMA,SignalSMA); + IndicatorSetInteger(INDICATOR_DIGITS,5); + IndicatorSetInteger(INDICATOR_LEVELS,1); + IndicatorSetDouble(INDICATOR_LEVELVALUE,0,indicator_level1); + break; + case INDICATOR_STOCHASTIC: + shortName=StringFormat("Arbitrage Stochastic %s(%d,%d,%d)", + timeFrame,Kperiod,Dperiod,Slowing); + IndicatorSetInteger(INDICATOR_DIGITS,0); + IndicatorSetInteger(INDICATOR_LEVELS,3); + IndicatorSetDouble(INDICATOR_LEVELVALUE,0,indicator_level1); + IndicatorSetDouble(INDICATOR_LEVELVALUE,1,indicator_level6); + IndicatorSetDouble(INDICATOR_LEVELVALUE,2,indicator_level7); + break; + case INDICATOR_RSI: + shortName=StringFormat("Arbitrage RSI %s(%d)", + timeFrame,RSIPeriod); + IndicatorSetInteger(INDICATOR_DIGITS,0); + IndicatorSetInteger(INDICATOR_LEVELS,3); + IndicatorSetDouble(INDICATOR_LEVELVALUE,0,indicator_level1); + IndicatorSetDouble(INDICATOR_LEVELVALUE,1,indicator_level4); + IndicatorSetDouble(INDICATOR_LEVELVALUE,2,indicator_level5); + break; + case INDICATOR_CCI: + shortName=StringFormat("Arbitrage CCI %s(%d)", + timeFrame,CCIPeriod); + IndicatorSetInteger(INDICATOR_DIGITS,0); + IndicatorSetInteger(INDICATOR_LEVELS,3); + IndicatorSetDouble(INDICATOR_LEVELVALUE,0,indicator_level1); + IndicatorSetDouble(INDICATOR_LEVELVALUE,1,indicator_level8); + IndicatorSetDouble(INDICATOR_LEVELVALUE,2,indicator_level9); + break; + case INDICATOR_RVI: + shortName=StringFormat("Arbitrage RVI %s(%d)", + timeFrame,RVIPeriod); + IndicatorSetInteger(INDICATOR_DIGITS,3); + IndicatorSetInteger(INDICATOR_LEVELS,3); + IndicatorSetDouble(INDICATOR_LEVELVALUE,0,indicator_level1); + IndicatorSetDouble(INDICATOR_LEVELVALUE,1,indicator_level2); + IndicatorSetDouble(INDICATOR_LEVELVALUE,2,indicator_level3); + break; + case INDICATOR_DEMARK: + shortName=StringFormat("Arbitrage DeMarker %s(%d)", + timeFrame,DeMarkerPeriod); + IndicatorSetInteger(INDICATOR_DIGITS,3); + IndicatorSetInteger(INDICATOR_LEVELS,3); + IndicatorSetDouble(INDICATOR_LEVELVALUE,0,indicator_level1); + IndicatorSetDouble(INDICATOR_LEVELVALUE,1,indicator_level2); + IndicatorSetDouble(INDICATOR_LEVELVALUE,2,indicator_level3); + } + IndicatorSetString(INDICATOR_SHORTNAME,shortName); + window = ChartWindowFind(chartID,shortName); + int xStart = 4; //label coordinates + int xIncrement = 25; + int yStart = 16; + ObjectCreate(base,xStart,yStart,color1); + xStart += xIncrement; + ObjectCreate(quote,xStart,yStart,color2); +//---index buffers + SetIndexBuffer(0,BaseBuffer,INDICATOR_DATA); + SetIndexBuffer(1,QoteBuffer,INDICATOR_DATA); + SetIndexStyle(0,EMPTY,EMPTY,EMPTY,color1); + SetIndexStyle(1,EMPTY,EMPTY,EMPTY,color2); + SetIndexLabel(0,base); + SetIndexLabel(1,quote); +//---color bars + if(ColorBars) + { + if(ChartGetInteger(0,CHART_COLOR_CANDLE_BULL)!=color1) + { + ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,color1); + ChartSetInteger(0,CHART_COLOR_CHART_UP,color1); + } + if(ChartGetInteger(0,CHART_COLOR_CANDLE_BEAR)!=color2) + { + ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,color2); + ChartSetInteger(0,CHART_COLOR_CHART_DOWN,color2); + } + } +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +#define INVERT -1 +#define BUY "BUY" +#define SELL "SELL" +int OnCalculate(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[]) + { +//--- + int limit = rates_total-prev_calculated; + if(prev_calculated>rates_total || prev_calculated<=0) + { + int barsWindow = (int)ChartGetInteger(chartID,CHART_VISIBLE_BARS)+100; + if(iBars(symbol1,TimeFrame)<=barsWindow || + iBars(symbol2,TimeFrame)<=barsWindow || + iBars(symbol3,TimeFrame)<=barsWindow) + return(0); + SetIndexDrawBegin(0,rates_total-barsWindow); + SetIndexDrawBegin(1,rates_total-barsWindow); + limit = barsWindow; +//--- + if(FillBuffers) + { + ushort scale = ChartGetInteger(chartID,CHART_SCALE); + switch(scale) + { + case 5: indicator_width3 = 24; break; + case 4: indicator_width3 = 12; break; + case 3: indicator_width3 = 6; break; + case 2: indicator_width3 = 3; break; + default: indicator_width3 = 1; + } + } + } + if(prev_calculated>0 && NewBar(time[0])) + limit++; +//--- + for(int i=limit;i>=0 && !IsStopped();i--) + { + int shift = iBarShift(NULL,TimeFrame,time[i]); + switch(Indicator) + { + case INDICATOR_MACD: + index1 = iMACD(symbol1,TimeFrame,FastEMA,SlowEMA,SignalSMA,MACDPrice,MODE_MAIN,shift); + index2 = iMACD(symbol2,TimeFrame,FastEMA,SlowEMA,SignalSMA,MACDPrice,MODE_MAIN,shift); + index3 = iMACD(symbol3,TimeFrame,FastEMA,SlowEMA,SignalSMA,MACDPrice,MODE_MAIN,shift); + if(quoteJPY1) + index1 /= 100; + if(quoteJPY2) + index2 /= 100; + if(quoteJPY3) + index3 /= 100; + break; + case INDICATOR_STOCHASTIC: + index1 = iStochastic(symbol1,TimeFrame,Kperiod,Dperiod,Slowing,MODE_SMA,PriceField,MODE_MAIN,shift)-50; + index2 = iStochastic(symbol2,TimeFrame,Kperiod,Dperiod,Slowing,MODE_SMA,PriceField,MODE_MAIN,shift)-50; + index3 = iStochastic(symbol3,TimeFrame,Kperiod,Dperiod,Slowing,MODE_SMA,PriceField,MODE_MAIN,shift)-50; + break; + case INDICATOR_RSI: + index1 = iRSI(symbol1,TimeFrame,RSIPeriod,RSIPrice,shift)-50; + index2 = iRSI(symbol2,TimeFrame,RSIPeriod,RSIPrice,shift)-50; + index3 = iRSI(symbol3,TimeFrame,RSIPeriod,RSIPrice,shift)-50; + break; + case INDICATOR_CCI: + index1 = iCCI(symbol1,TimeFrame,CCIPeriod,CCIPrice,shift); + index2 = iCCI(symbol2,TimeFrame,CCIPeriod,CCIPrice,shift); + index3 = iCCI(symbol3,TimeFrame,CCIPeriod,CCIPrice,shift); + break; + case INDICATOR_RVI: + index1 = iRVI(symbol1,TimeFrame,RVIPeriod,MODE_MAIN,shift); + index2 = iRVI(symbol2,TimeFrame,RVIPeriod,MODE_MAIN,shift); + index3 = iRVI(symbol3,TimeFrame,RVIPeriod,MODE_MAIN,shift); + break; + case INDICATOR_DEMARK: + index1 = iDeMarker(symbol1,TimeFrame,DeMarkerPeriod,shift)-.5; + index2 = iDeMarker(symbol2,TimeFrame,DeMarkerPeriod,shift)-.5; + index3 = iDeMarker(symbol3,TimeFrame,DeMarkerPeriod,shift)-.5; + } +//--- + if(quoteUSD) + { + baseIndex = (index1+index2)/2; + index1 *= INVERT; + qoteIndex = (index1+index3)/2; + } + if(quoteJPY) + { + if(_Symbol==USDJPY) + index2 *= INVERT; + baseIndex = (index1+index2)/2; + index1 *= INVERT; + index3 *= INVERT; + qoteIndex = (index1+index3)/2; + } + if(baseUSD) + { + baseIndex = (index1+index3)/2; + index1 *= INVERT; + qoteIndex = (index1+index2)/2; + } +//--- + BaseBuffer[i] = baseIndex; + QoteBuffer[i] = qoteIndex; +//--- + if(FillBuffers) + { + colorFill = (baseIndex>qoteIndex)?color1:color2; + ObjectCreate((string)(uint)time[i],time[i],BaseBuffer[i],QoteBuffer[i]); + } +//--- + if(AlertsOn && prev_calculated>0) + { + static datetime timePrev; + if(BaseBuffer[i]>QoteBuffer[i] && + BaseBuffer[i+1]QoteBuffer[i+1] && + timePrev!=time[0]) + { + Alert(SELL+_Symbol); + timePrev = time[0]; + } + } + } +//--- return value of prev_calculated for next call + return(rates_total); + } +//+------------------------------------------------------------------+ +//| Custom indicator deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { + // delete labels + ObjectDelete(chartID,base); + ObjectDelete(chartID,quote); + ObjectsDeleteAll(chartID,window,OBJ_TREND); + return; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void ObjectCreate(string currency, + int x, + int y, + color clr) + { + if(!ObjectCreate(chartID,currency,OBJ_LABEL,window,0,0)) + { + Print(__FUNCTION__,": error ",GetLastError()); + return; + } + ObjectSetString(chartID,currency,OBJPROP_TEXT,currency); + ObjectSetString(chartID,currency,OBJPROP_FONT,"Arial Bold"); + ObjectSetInteger(chartID,currency,OBJPROP_FONTSIZE,8); + ObjectSetInteger(chartID,currency,OBJPROP_COLOR,clr); + ObjectSetInteger(chartID,currency,OBJPROP_XDISTANCE,x); + ObjectSetInteger(chartID,currency,OBJPROP_YDISTANCE,y); + return; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +#define OBJ_NONE -1 +void ObjectCreate(string object_name, + const datetime &time, + const double &high, + const double &low) + { + if(ObjectFind(chartID,object_name)!=OBJ_NONE) + ObjectDelete(chartID,object_name); + if(!ObjectCreate(chartID,object_name,OBJ_TREND,window,time,high,time,low)) + { + Print(__FUNCTION__,": error ",GetLastError()); + return; + } + ObjectSetInteger(chartID,object_name,OBJPROP_WIDTH,indicator_width3); + ObjectSetInteger(chartID,object_name,OBJPROP_COLOR,colorFill); + ObjectSetInteger(chartID,object_name,OBJPROP_RAY,false); + ObjectSetInteger(chartID,object_name,OBJPROP_HIDDEN,true); + ObjectSetInteger(chartID,object_name,OBJPROP_SELECTABLE,false); + return; + } +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool NewBar(const datetime &time) + { + static datetime currTime1[1], + currTime2[1], + currTime3[1], + prevTime; + if(CopyTime(symbol1,TimeFrame,time,1,currTime1)!=1 || + CopyTime(symbol2,TimeFrame,time,1,currTime2)!=1 || + CopyTime(symbol3,TimeFrame,time,1,currTime3)!=1) + return(false); + if(prevTime!=currTime1[0] && + prevTime!=currTime2[0] && + prevTime!=currTime3[0]) + { + prevTime = currTime1[0]; + return(true); + } + return(false); + } +//-------------------------------------------------------------------+ \ No newline at end of file diff --git a/closeatprofit.mq4 b/closeatprofit.mq4 new file mode 100644 index 0000000..4ba85f5 --- /dev/null +++ b/closeatprofit.mq4 @@ -0,0 +1,448 @@ +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2011 Matus German www.MTexperts.net" + +extern bool useProfitToClose = true; +extern double profitToClose = 0.05; +extern bool useLossToClose = false; +extern double lossToClose = 100; +extern bool AllSymbols = true; +extern bool PendingOrders = true; +extern double MaxSlippage = 0; +extern bool showMenu = true; +extern color menuColor = White; +extern color variablesColor = Red; +extern int font = 14; + +double pips2dbl, pips2point, pipValue, maxSlippage, + profit; + +bool clear; + +int medzera = 8, + trades; + +double menulots; +//+------------------------------------------------------------------+ +//| expert initialization function | +//+------------------------------------------------------------------+ +int init() + { +//---- + + Comment("Copyright © 2011, Matus German"); + + if (Digits == 5 || Digits == 3) // Adjust for five (5) digit brokers. + { + pips2dbl = Point*10; pips2point = 10;pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*10; + } + else + { + pips2dbl = Point; pips2point = 1;pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*1; + } + + clear = true; + + if(showMenu) + { + DrawMenu(); + } +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| expert deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + if(showMenu) + { + ObjectDelete("name"); + ObjectDelete("Openl"); + ObjectDelete("Open"); + ObjectDelete("Lotsl"); + ObjectDelete("Lots"); + ObjectDelete("Profitl"); + ObjectDelete("Profit"); + } +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| expert start function | +//+------------------------------------------------------------------+ +int start() +{ +//---- + if(showMenu) + { + ReDrawMenu(); + } + + if(!clear) + { + if(AllSymbols) + { + if(PendingOrders) + if(CloseDeleteAll()) + clear=true; + else + return; + if(!PendingOrders) + if(CloseDeleteAllNonPending()) + clear=true; + else + return; + } + if(!AllSymbols) + { + if(PendingOrders) + if(CloseDeleteAllCurrent()) + clear=true; + else + return; + if(!PendingOrders) + if(CloseDeleteAllCurrentNonPending()) + clear=true; + else + return; + } + } + + profit = ProfitCheck(); + if(useProfitToClose) + { + if(profit>profitToClose) + { + if(AllSymbols) + { + if(PendingOrders) + if(!CloseDeleteAll()) + clear=false; + if(!PendingOrders) + if(!CloseDeleteAllNonPending()) + clear=false; + } + if(!AllSymbols) + { + if(PendingOrders) + if(!CloseDeleteAllCurrent()) + clear=false; + if(!PendingOrders) + if(!CloseDeleteAllCurrentNonPending()) + clear=false; + } + } + } + + if(useLossToClose) + { + if(profit<-lossToClose) + { + if(AllSymbols) + { + if(PendingOrders) + if(!CloseDeleteAll()) + clear=false; + if(!PendingOrders) + if(!CloseDeleteAllNonPending()) + clear=false; + } + if(!AllSymbols) + { + if(PendingOrders) + if(!CloseDeleteAllCurrent()) + clear=false; + if(!PendingOrders) + if(!CloseDeleteAllCurrentNonPending()) + clear=false; + } + } + } +//---- + return(0); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////// +bool CloseDeleteAll() +{ + int total = OrdersTotal(); + for (int cnt = total-1 ; cnt >=0 ; cnt--) + { + OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); + + if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) + { + switch(OrderType()) + { + case OP_BUY : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet)) + return(false); + }break; + case OP_SELL : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet)) + return(false); + }break; + } + + + if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT) + if(!OrderDelete(OrderTicket())) + { + Print("Error deleting " + OrderType() + " order : ",GetLastError()); + return (false); + } + } + } + return (true); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////// +// delete all on current chart +bool CloseDeleteAllCurrent() +{ + int total = OrdersTotal(); + for (int cnt = total-1 ; cnt >=0 ; cnt--) + { + OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); + + if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) + { + if(OrderSymbol()==Symbol()) + { + switch(OrderType()) + { + case OP_BUY : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet)) + return(false); + }break; + + case OP_SELL : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet)) + return(false); + }break; + } + + + if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT) + if(!OrderDelete(OrderTicket())) + { + return (false); + } + } + } + } + return (true); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////// +// left pending orders +bool CloseDeleteAllNonPending() +{ + int total = OrdersTotal(); + for (int cnt = total-1 ; cnt >=0 ; cnt--) + { + OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); + + if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) + { + switch(OrderType()) + { + case OP_BUY : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet)) + return(false); + }break; + case OP_SELL : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet)) + return(false); + }break; + } + } + } + return (true); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////// +// delete all on current chart left pending +bool CloseDeleteAllCurrentNonPending() +{ + int total = OrdersTotal(); + for (int cnt = total-1 ; cnt >=0 ; cnt--) + { + OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); + + if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) + { + if(OrderSymbol()==Symbol()) + { + switch(OrderType()) + { + case OP_BUY : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet)) + return(false); + }break; + + case OP_SELL : + { + if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet)) + return(false); + }break; + } + } + } + } + return (true); +} + + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +double ProfitCheck() +{ + double profit=0; + int total = OrdersTotal(); + for (int cnt = total-1 ; cnt >=0 ; cnt--) + { + OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); + if(AllSymbols) + profit+=OrderProfit(); + else if(OrderSymbol()==Symbol()) + profit+=OrderProfit(); + } + return(profit); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////// +bool DrawMenu() +{ + ObjectCreate("name",OBJ_LABEL,0,0,0,0,0); + ObjectCreate("Openl",OBJ_LABEL,0,0,0,0,0); + ObjectCreate("Open",OBJ_LABEL,0,0,0,0,0); + ObjectCreate("Lotsl",OBJ_LABEL,0,0,0,0,0); + ObjectCreate("Lots",OBJ_LABEL,0,0,0,0,0); + ObjectCreate("Profitl",OBJ_LABEL,0,0,0,0,0); + ObjectCreate("Profit",OBJ_LABEL,0,0,0,0,0); + + medzera = 8; + + trades = Opened(); + menulots = Lots(); + + ObjectSetText( "name", "CloseAtProfit", font+1, "Arial",menuColor); + ObjectSet("name",OBJPROP_XDISTANCE,medzera*font); + ObjectSet("name",OBJPROP_YDISTANCE,10+font); + ObjectSet("name",OBJPROP_CORNER,1); + + ObjectSetText("Openl", "Opened trades: ", font, "Arial",menuColor); + ObjectSet("Openl",OBJPROP_XDISTANCE,medzera*font); + ObjectSet("Openl",OBJPROP_YDISTANCE,10+2*(font+2)); + ObjectSet("Openl",OBJPROP_CORNER,1); + + ObjectSetText("Open", ""+trades, font, "Arial",variablesColor); + ObjectSet("Open",OBJPROP_XDISTANCE,3*font); + ObjectSet("Open",OBJPROP_YDISTANCE,10+2*(font+2)); + ObjectSet("Open",OBJPROP_CORNER,1); + + ObjectSetText("Lotsl", "Lots of opened positions: ", font, "Arial",menuColor); + ObjectSet("Lotsl",OBJPROP_XDISTANCE,medzera*font); + ObjectSet("Lotsl",OBJPROP_YDISTANCE,10+3*(font+2)); + ObjectSet("Lotsl",OBJPROP_CORNER,1); + + ObjectSetText("Lots", DoubleToStr(menulots,2), font, "Arial",variablesColor); + ObjectSet("Lots",OBJPROP_XDISTANCE,3*font); + ObjectSet("Lots",OBJPROP_YDISTANCE,10+3*(font+2)); + ObjectSet("Lots",OBJPROP_CORNER,1); + + ObjectSetText("Profitl", "Profit of opened positions: ", font, "Arial",menuColor); + ObjectSet("Profitl",OBJPROP_XDISTANCE,medzera*font); + ObjectSet("Profitl",OBJPROP_YDISTANCE,10+4*(font+2)); + ObjectSet("Profitl",OBJPROP_CORNER,1); + + ObjectSetText("Profit", DoubleToStr(profit,2), font, "Arial",variablesColor); + ObjectSet("Profit",OBJPROP_XDISTANCE,3*font); + ObjectSet("Profit",OBJPROP_YDISTANCE,10+4*(font+2)); + ObjectSet("Profit",OBJPROP_CORNER,1); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////// +bool ReDrawMenu() +{ + medzera = 8; + + trades = Opened(); + menulots = Lots(); + + ObjectSetText("Open", ""+trades, font, "Arial",variablesColor); + ObjectSetText("Lots", DoubleToStr(menulots,2), font, "Arial",variablesColor); + ObjectSetText("Profit", DoubleToStr(profit,2), font, "Arial",variablesColor); +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +int Opened() +{ + int total = OrdersTotal(); + int count = 0; + for (int cnt = total-1 ; cnt >=0 ; cnt--) + { + OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); + if(AllSymbols) + { + if(PendingOrders) + count++; + if(!PendingOrders) + if(OrderType()==OP_BUY || OrderType()==OP_SELL) + count++; + } + if(!AllSymbols) + { + if(OrderSymbol()==Symbol()) + { + if(PendingOrders) + count++; + if(!PendingOrders) + if(OrderType()==OP_BUY || OrderType()==OP_SELL) + count++; + } + } + } + return (count); +} + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////// +double Lots() +{ + int total = OrdersTotal(); + double lots = 0; + for (int cnt = total-1 ; cnt >=0 ; cnt--) + { + OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); + if(AllSymbols) + { + if(PendingOrders) + lots+=OrderLots(); + if(!PendingOrders) + if(OrderType()==OP_BUY || OrderType()==OP_SELL) + lots+=OrderLots(); + } + if(!AllSymbols) + { + if(OrderSymbol()==Symbol()) + { + if(PendingOrders) + lots+=OrderLots(); + if(!PendingOrders) + if(OrderType()==OP_BUY || OrderType()==OP_SELL) + lots+=OrderLots(); + } + } + } + return (lots); +} + + diff --git a/cracked_Mega_Fx.mq4 b/cracked_Mega_Fx.mq4 new file mode 100644 index 0000000..1f8541f --- /dev/null +++ b/cracked_Mega_Fx.mq4 @@ -0,0 +1,156 @@ +#property copyright "Cracked by Forex Winners" +#property link "Forex Winners" + +#property indicator_separate_window +#property indicator_buffers 6 +#property indicator_color1 Black +#property indicator_color2 Lime +#property indicator_color3 Red +#property indicator_color4 Yellow +#property indicator_color5 Lime +#property indicator_color6 Red + +extern bool ALERTS = TRUE; +extern bool SoundAlerts = TRUE; +extern string SoundAlertFile = "alert.wave"; +extern bool eMailAlerts = TRUE; +int G_bars_96; +int Gi_100 = 21; +double G_ibuf_104[]; +double G_ibuf_108[]; +double G_ibuf_112[]; +double G_ibuf_116[]; +double G_ibuf_120[]; +double G_ibuf_124[]; + +// E37F0136AA3FFAF149B351F6A4C948E9 +int init() { + SetIndexStyle(0, DRAW_NONE); + SetIndexStyle(1, DRAW_LINE, EMPTY, 3); + SetIndexStyle(2, DRAW_LINE, EMPTY, 3); + SetIndexStyle(3, DRAW_LINE, EMPTY, 3); + SetIndexStyle(4, DRAW_ARROW, EMPTY, 2); + SetIndexArrow(4, 225); + SetIndexStyle(5, DRAW_ARROW, EMPTY, 2); + SetIndexArrow(5, 226); + IndicatorDigits(Digits + 0); + SetIndexBuffer(0, G_ibuf_104); + SetIndexBuffer(1, G_ibuf_108); + SetIndexBuffer(2, G_ibuf_112); + SetIndexBuffer(3, G_ibuf_116); + SetIndexBuffer(4, G_ibuf_120); + SetIndexBuffer(5, G_ibuf_124); + IndicatorShortName("MEGAFXPROFIT © www.megafxprofit.com"); + SetIndexLabel(0, NULL); + SetIndexLabel(1, NULL); + SetIndexLabel(2, NULL); + SetIndexLabel(3, NULL); + SetIndexLabel(4, NULL); + return (0); +} + +// EA2B2676C28C0DB26D39331A336C6B92 +int start() { + double Ld_0; + double Ld_8; + double Ld_16; + string Ls_104; + string Ls_112; + string Ls_120; + int Li_24 = IndicatorCounted(); + double Ld_28 = 0; + double Ld_36 = 0; + double Ld_unused_44 = 0; + double Ld_unused_52 = 0; + double Ld_60 = 0; + double Ld_unused_68 = 0; + double low_76 = 0; + double high_84 = 0; + if (Li_24 > 0) Li_24--; + int Li_92 = Bars - Li_24; + for (int Li_96 = 0; Li_96 < Li_92; Li_96++) { + high_84 = High[iHighest(NULL, 0, MODE_HIGH, Gi_100, Li_96)]; + low_76 = Low[iLowest(NULL, 0, MODE_LOW, Gi_100, Li_96)]; + Ld_16 = (High[Li_96] + Low[Li_96]) / 2.0; + Ld_28 = 0.66 * ((Ld_16 - low_76) / (high_84 - low_76) - 0.5) + 0.67 * Ld_36; + Ld_28 = MathMin(MathMax(Ld_28, -0.999), 0.999); + G_ibuf_104[Li_96] = MathLog((Ld_28 + 1.0) / (1 - Ld_28)) / 2.0 + Ld_60 / 2.0; + Ld_36 = Ld_28; + Ld_60 = G_ibuf_104[Li_96]; + } + bool Li_100 = TRUE; + for (Li_96 = Li_92 - 2; Li_96 >= 0; Li_96--) { + G_ibuf_116[Li_96] = 0; + Ld_8 = G_ibuf_104[Li_96 + 1]; + Ld_0 = G_ibuf_104[Li_96 + 2]; + if ((Ld_8 < 0.0 && Ld_0 > 0.0) || Ld_8 < 0.0) { + Li_100 = FALSE; + if (Ld_8 < 0.0 && Ld_0 > 0.0) { + Ls_104 = Symbol() + ", TF:" + f0_0(Period()); + Ls_112 = Ls_104 + ", MEGAFXPROFIT SELL SIGNAL for Level: " + Ld_8; + Ls_120 = Ls_112 + " @ " + TimeToStr(TimeLocal(), TIME_SECONDS); + if (Bars > G_bars_96) { + G_bars_96 = Bars; + f0_1(Ls_120, Ls_112); + } + } + } + if ((Ld_8 > 0.0 && Ld_0 < 0.0) || Ld_8 > 0.0) { + Li_100 = TRUE; + if (Ld_8 > 0.0 && Ld_0 < 0.0) { + Ls_104 = Symbol() + ", TF:" + f0_0(Period()); + Ls_112 = Ls_104 + ", MEGAFXPROFIT BUY SIGNAL for Level: " + Ld_8; + Ls_120 = Ls_112 + " @ " + TimeToStr(TimeLocal(), TIME_SECONDS); + if (Bars > G_bars_96) { + G_bars_96 = Bars; + f0_1(Ls_120, Ls_112); + } + } + } + if (!Li_100) { + G_ibuf_112[Li_96] = Ld_8; + G_ibuf_108[Li_96] = 0.0; + } else { + G_ibuf_108[Li_96] = Ld_8; + G_ibuf_112[Li_96] = 0.0; + } + } + for (Li_96 = 0; Li_96 < Li_92; Li_96++) { + if (G_ibuf_108[Li_96] > 0.0 && G_ibuf_108[Li_96 + 1] == 0.0) G_ibuf_120[Li_96] = G_ibuf_108[Li_96]; + if (G_ibuf_112[Li_96] < 0.0 && G_ibuf_112[Li_96 + 1] == 0.0) G_ibuf_124[Li_96] = G_ibuf_112[Li_96]; + } + return (0); +} + +// FF3DED0DF4360E36577F1A7C4D36796A +void f0_1(string As_0, string As_8) { + if (ALERTS) Alert(As_0); + if (SoundAlerts) PlaySound(SoundAlertFile); + if (eMailAlerts) SendMail(As_8, As_0); +} + +// A9BA851E539886467D4ECFDDCA93F414 +string f0_0(int Ai_0) { + switch (Ai_0) { + case 1: + return ("M1"); + case 5: + return ("M5"); + case 15: + return ("M15"); + case 30: + return ("M30"); + case 60: + return ("H1"); + case 240: + return ("H4"); + case 1440: + return ("D1"); + case 10080: + return ("W1"); + case 43200: + return ("MN1"); + } + WindowRedraw(); + return (Period()); +} diff --git a/eXclusive_MTF_RSI.mq4 b/eXclusive_MTF_RSI.mq4 new file mode 100644 index 0000000..f8dd97e --- /dev/null +++ b/eXclusive_MTF_RSI.mq4 @@ -0,0 +1,275 @@ +//+------------------------------------------------------------------+ +//| eXclusive MTF RSI.mq4 | +//| Copyright © 2013, mt4exclusive.com | +//| http://www.mt4exclusive.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright © 2013, mt4exclusive.com" +#property link "http://www.mt4exclusive.com" +#property indicator_color1 Red +#property indicator_color2 Lime +#property indicator_color3 Orange +#property indicator_color4 Blue +#property indicator_color5 White +#property indicator_color6 Green +#property indicator_color7 Yellow +#property indicator_color8 Moccasin + +#property indicator_separate_window +#property indicator_minimum 0 +#property indicator_maximum 100 +#property indicator_buffers 8 +#property indicator_level1 70 +#property indicator_level2 30 +#property indicator_level3 50 + +extern int RSIperiod=14; +extern int RSIprice =0; +extern string RSI_Price_note_1="CLOSE= 0, OPEN=1, HIGH=2, LOW=3"; +extern string RESI_Price_note2="MEDIAN=4, TYPICAL=5, WEIGHTED=6"; + +extern bool ShowRSI_M1 = true; +extern bool ShowRSI_M5 = true; +extern bool ShowRSI_M15 = true; +extern bool ShowRSI_M30 = true; +extern bool ShowRSI_M60 = true; +extern bool ShowRSI_M240= true; +extern bool ShowRSI_M1440=true; +extern bool ShowRSI_M10080=true; + +extern color M1_color=Red; +extern color M5_color=Lime; +extern color M15_color=Orange; +extern color M30_color=Blue; +extern color M60_color=White; +extern color M240_color=Green; +extern color M1440_color=Yellow; +extern color M10080_color=Moccasin; + +double M1Buffer[]; +double M5Buffer[]; +double M15Buffer[]; +double M30Buffer[]; +double M60Buffer[]; +double M240Buffer[]; +double M1440Buffer[]; +double M10080Buffer[]; + +int TF1=1; +int TF5=5; +int TF15=15; +int TF30=30; +int TF60=60; +int TF240=240; +int TF1440=1440; +int TF10080=10080; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { +//---- indicators +//============================================================================================ + + SetIndexBuffer(0,M1Buffer); + SetIndexLabel(0,"M1 RSI"); + SetIndexStyle(0,DRAW_LINE,0,1,M1_color); +//============================================================================================ + SetIndexBuffer(1,M5Buffer); + SetIndexLabel(1,"M5 RSI"); + SetIndexStyle(1,DRAW_LINE,0,1,M5_color); +//============================================================================================ + SetIndexBuffer(2,M15Buffer); + SetIndexLabel(2,"M15 RSI"); + SetIndexStyle(2,DRAW_LINE,0,1,M15_color); +//============================================================================================ + SetIndexBuffer(3,M30Buffer); + SetIndexLabel(3,"M30 RSI"); + SetIndexStyle(3,DRAW_LINE,0,1,M30_color); +//============================================================================================ + SetIndexBuffer(4,M60Buffer); + SetIndexLabel(4,"H1 RSI"); + SetIndexStyle(4,DRAW_LINE,0,1,M60_color); +//============================================================================================ + SetIndexBuffer(5,M240Buffer); + SetIndexLabel(5,"H4 RSI"); + SetIndexStyle(5,DRAW_LINE,0,1,M240_color); +//============================================================================================ + SetIndexBuffer(6,M1440Buffer); + SetIndexLabel(6,"D1 RSI"); + SetIndexStyle(6,DRAW_LINE,0,1,M1440_color); +//============================================================================================ + SetIndexBuffer(7,M10080Buffer); + SetIndexLabel(7,"W1 RSI"); + SetIndexStyle(7,DRAW_LINE,0,1,M10080_color); +//============================================================================================ + + IndicatorShortName("eXclusive MTF_RSI("+RSIperiod+")"); + + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + ObjectDelete("M1RSI"); + ObjectDelete("M5RSI"); + ObjectDelete("M15RSI"); + ObjectDelete("M30RSI"); + ObjectDelete("H1RSI"); + ObjectDelete("H4RSI"); + ObjectDelete("D1RSI"); + ObjectDelete("W1RSI"); + ObjectDelete("M1ValueRSI"); + ObjectDelete("M5ValueRSI"); + ObjectDelete("M15ValueRSI"); + ObjectDelete("M30ValueRSI"); + ObjectDelete("H1ValueRSI"); + ObjectDelete("H4ValueRSI"); + ObjectDelete("D1ValueRSI"); + ObjectDelete("W1ValueRSI"); + +//---- + return(0); + } +//============================================================================================ +int start() + { + if(ShowRSI_M1 && Period()<=1) {start1();CreateLabel("M1_RSI",10,30,2,M1_color,"M1",10);CreateLabel("M1Value_RSI",10,10,2,M1_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF1,RSIperiod,0,0),1),1),10);} + if(ShowRSI_M5 && Period()<=5) {start2();CreateLabel("M5_RSI",50,30,2,M5_color,"M5",10);CreateLabel("M5Value_RSI",50,10,2,M5_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF5,RSIperiod,0,0),1),1),10);} + if(ShowRSI_M15 && Period()<=15) {start3();CreateLabel("M15_RSI",90,30,2,M15_color,"M15",10);CreateLabel("M15Value_RSI",90,10,2,M15_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF15,RSIperiod,0,0),1),1),10);} + if(ShowRSI_M30 && Period()<=30) {start4();CreateLabel("M30_RSI",130,30,2,M30_color,"M30",10);CreateLabel("M30Value_RSI",130,10,2,M30_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF30,RSIperiod,0,0),1),1),10);} + if(ShowRSI_M60 && Period()<=60) {start5();CreateLabel("H1_RSI",170,30,2,M60_color,"H1",10);CreateLabel("H1Value_RSI",170,10,2,M60_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF60,RSIperiod,0,0),1),1),10);} + if(ShowRSI_M240 && Period()<=240) {start6();CreateLabel("H4_RSI",210,30,2,M240_color,"H4",10);CreateLabel("H4Value_RSI",210,10,2,M240_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF240,RSIperiod,0,0),1),1),10);} + if(ShowRSI_M1440 && Period()<=1440) {start7();CreateLabel("D1_RSI",250,30,2,M1440_color,"D1",10);CreateLabel("D1Value_RSI",250,10,2,M1440_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF1440,RSIperiod,0,0),1),1),10);} + if(ShowRSI_M10080 && Period()<=10080) {start8();CreateLabel("W1_RSI",290,30,2,M10080_color,"W1",10);CreateLabel("W1Value_RSI",290,10,2,M10080_color,DoubleToStr(NormalizeDouble(iRSI(NULL,TF10080,RSIperiod,0,0),1),1),10);} + + return(0); + } +//============================================================================================ +//============================================================================================ +int start1() + { + datetime TimeArray1[]; + int i,limit,y=0,counted_bars=IndicatorCounted(); + ArrayCopySeries(TimeArray1,MODE_TIME,Symbol(),1); + limit=Bars-counted_bars; + for(i=0,y=0;i 0) limit=Bars-counted_bars; + if(counted_bars < 0) return(0); + if(counted_bars ==0) limit=Bars-MA_Length-1; + for(shift=limit;shift>=0;shift--) + { + if(useMA_HiLoEnvelope) + { + double bprice=iMA(NULL,0,MA_Length,0,MA_Mode,2,shift); + double sprice=iMA(NULL,0,MA_Length,0,MA_Mode,3,shift); + } + else + { + bprice=iMA(NULL,0,MA_Length,0,MA_Mode,MA_Price,shift); + sprice=iMA(NULL,0,MA_Length,0,MA_Mode,MA_Price,shift); + } + smax[shift]=bprice + Kv*iATR(NULL,0,ATR_Length,shift); + smin[shift]=sprice - Kv*iATR(NULL,0,ATR_Length,shift); + trend[shift]=trend[shift+1]; + if(usePrice_HiLoBreak) + { + if(High[shift] > smax[shift+1])trend[shift]= 1; + if(Low[shift] < smin[shift+1])trend[shift]=-1; + } + else + { + if(bprice > smax[shift+1])trend[shift]= 1; + if(sprice < smin[shift+1])trend[shift]=-1; + } + if(trend[shift] >0) + { + if(smin[shift] < smin[shift+1]) smin[shift]=smin[shift+1]; + UpBuffer[shift]=smin[shift] - (MoneyRisk - 1)*iATR(NULL,0,ATR_Length,shift); + if(UpBuffer[shift] < UpBuffer[shift+1] && UpBuffer[shift+1]!=EMPTY_VALUE) UpBuffer[shift]=UpBuffer[shift+1]; + if(trend[shift+1]!=trend[shift]) UpSignal[shift]=UpBuffer[shift]; + else UpSignal[shift]=EMPTY_VALUE; + DnBuffer[shift]=EMPTY_VALUE; + DnSignal[shift]=EMPTY_VALUE; + } + else + if(trend[shift] <0) + { + if(smax[shift]>smax[shift+1]) smax[shift]=smax[shift+1]; + DnBuffer[shift]=smax[shift] + (MoneyRisk - 1)*iATR(NULL,0,ATR_Length,shift); + if(DnBuffer[shift] > DnBuffer[shift+1]) DnBuffer[shift]=DnBuffer[shift+1]; + if(trend[shift+1]!=trend[shift]) DnSignal[shift]=DnBuffer[shift]; + else DnSignal[shift]=EMPTY_VALUE; + UpBuffer[shift]=EMPTY_VALUE; + UpSignal[shift]=EMPTY_VALUE; + } + } +//---- + string Message; + if(trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert) + { + Message=" "+Symbol()+" M"+Period()+": VCS Signal for BUY"; + if(AlertMode>0)Alert (Message); + UpTrendAlert=true; DownTrendAlert=false; + } + if(trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert) + { + Message=" "+Symbol()+" M"+Period()+": VCS Signal for SELL"; + if(AlertMode>0)Alert (Message); + DownTrendAlert=true; UpTrendAlert=false; + } +//---- + + +//+--------- TRO MODIFICATION ---------------------------------------+ + + if ( Trigger && Sound.Alert ) + { + if( Close[0] > UpBuffer[0] && UpBuffer[0]!= EMPTY_VALUE ) { Trigger = False ; Alert(symbol," ", tChartPeriod, " Fiji Trend - BUY "+ DoubleToStr(UpBuffer[0] ,digits)); } + if( Close[0] < DnBuffer[0] && DnBuffer[0]!= EMPTY_VALUE ) { Trigger = False ; Alert(symbol," ", tChartPeriod, " Fiji Trend - SELL "+ DoubleToStr(DnBuffer[0] ,digits)); } + + } + + if(Show.PriceBox) { DoBox() ; } + + OldBars = Bars ; + +//+--------- TRO MODIFICATION ---------------------------------------+ +//---- + return(0); + } +//+------------------------------------------------------------------+ + + +//+--------- TRO MODIFICATION ---------------------------------------+ +void DoBox() +{ + + + if (ObjectFind(tShortName+"01") != 0) + { + ObjectCreate(tShortName+"01",OBJ_ARROW,0,Time[0],UpBuffer[0]); + ObjectSet(tShortName+"01",OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); + ObjectSet(tShortName+"01",OBJPROP_COLOR,indicator_color1); + ObjectSet(tShortName+"01",OBJPROP_WIDTH,myBoxWidth); + } + else + { + ObjectMove(tShortName+"01",0,Time[0],UpBuffer[0]); + ObjectSet(tShortName+"01",OBJPROP_COLOR,indicator_color1); + } + + if (ObjectFind(tShortName+"02") != 0) + { + ObjectCreate(tShortName+"02",OBJ_ARROW,0,Time[0],DnBuffer[0]); + ObjectSet(tShortName+"02",OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE); + ObjectSet(tShortName+"02",OBJPROP_COLOR,indicator_color2); + ObjectSet(tShortName+"02",OBJPROP_WIDTH,myBoxWidth); + } + else + { + ObjectMove(tShortName+"02",0,Time[0],DnBuffer[0]); + ObjectSet(tShortName+"02",OBJPROP_COLOR,indicator_color2); + } + + + + + return(0); +} + + +//+--------- TRO MODIFICATION ---------------------------------------+ + +string TimeFrameToString(int tf) +{ + string tfs; + switch(tf) { + case PERIOD_M1: tfs="M1" ; break; + case PERIOD_M5: tfs="M5" ; break; + case PERIOD_M15: tfs="M15" ; break; + case PERIOD_M30: tfs="M30" ; break; + case PERIOD_H1: tfs="H1" ; break; + case PERIOD_H4: tfs="H4" ; break; + case PERIOD_D1: tfs="D1" ; break; + case PERIOD_W1: tfs="W1" ; break; + case PERIOD_MN1: tfs="MN"; + } + return(tfs); +} + + + +//+--------- TRO MODIFICATION ---------------------------------------+ \ No newline at end of file diff --git a/holy grail EA.mq4 b/holy grail EA.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..93c961146f4ad6ff9497c2dd2ddf3c35162b6aa6 GIT binary patch literal 439310 zcmeFa`I8k#lJ9$dtued*Lp9glyh5ObMO%-M8JoJf4T7Oc>gmz+!w?`fR|psiwZzc< zzd!%vx4hgVG9pi&S^$Y-Wl*P1#^T}OTey38zQ1^Xacc4I8~k(1AbfxEzZU;8{64wZ z9DeRB^uu3w_P){Q{QbPo-cKVlo<_`n`y3iE{wn)!HDKKuAf(^P1)u-R+HCH97VQ5u ze4jsS7PZfxy*K@t`TYUb{~A8)Z$Yn~8ZqY5%-**JE6)TeqiGIc))=gSPre6QM{b`# z(~BSVf8T!Vsi5UseUnG`xyrt@9Mgc0r#bFei~rigG4t@FIZuwh2Rq(IpXpon_cr|2 z2=wr8)qC7mu#92dT>NeE+T9K-r+kputR*7{!2Bi;Iif_V32xs{MV{K5q{^{D;N$#m&Vfdve`c zeLb|gX8&KZzpw7Kxoj=Iw9h;C{g?K?dS0`!ZrPLD!#A5Ia~_)n+FUT}W$XQw$p%JP z4rkedRUT&D+s3`{4014_y1e*l_*OFU?*=VAb$9XY;*qu7O)Z~T-@n;+&+NPV_WQem zuOHgC4^2Wm9@;Y2gJHGs{N`Sd%{?jdf9)CETCQu^U*mPZ+0yfP==|-HYVR1OhfIIp z`0uEGN)9S{0?Pn8em?N*^MRtbMzjlsV_`ty-&-4Ov^?tnw>YYwJStQLM*er=y$3e) zEt4}h7yrj3%4L%`cTCD$v2RZpk3V0Ww>}>&K3tqL%S3vV5q%^+)Bnk^61egU`}}OM zlKAVkNe0P)_PjR-iN>5?4ASm~NkRU)Z4yp05;#6Ei|d2IHoCC)`Haa||F(Rhzsjdr zRo+w2PZ(^19eMO{*d_gsRAP4|!LU32$Nob0N*dj@PrJ6CNFik0Bm4V1Tjk?HDoKiM z+P8NNcZ||n_f?bPt_ALx6bJuT?VBsM^3WkjzGpV_gIQysKXwdj=!D#Fyjxcnf44Co zTPq~*9o&f;7`6`O`A3Y+zNGRN4~dD@FJ&-E#qx$ z5x6&SfUNy_utKmdrq)4U#un#mruXdc6T?paZ2w~ojbXXEM?>vZ-Laj$GDz6F*1HXP zK$~H8+et9d7wq)c@LrR`mO+Os!d{KNb{zAKuzufgvTN&?g~xe$jOPsb94u$qao;5V zrqP`C7MY7x`Dl=an~To}Y3{Jx9jFZ36Pb&=q2;520;FgA@L_rWZ5TcCD05%6^Y>jF z^Qn#Wz|NOY!FTrm+2Iqo7gp{MmcDiddg@`~;Q-U7VT|2l6z3Ag`qoDO-hN~mGa45E zcxSOKp#OvItkYfWED{s$cxv+_ksPPcy>!^aL2AQ4(uA8vap0lFZ<%U)yoc-`%gAjT zFWW=tRP2bXHQMr$(-XSLbp*Bpy7anzC)pL0+|oPV-{t-tleNhIYbNuMu^%NqK$}U* zWVpbd?1d)-F1M@|dk5{w8oY0xPY%53t3N7BG{ym^KKiCf*L+Uv+oV`FehQP7Gj4l) zwyE2=8FsfUYmKpEJIY!5{|wd=8c`Mq`UCsp6WgaVO?fx&gaUl;_JY@PTDIOSj6TiN-QddJ-LI3La$2ag3l3}2Ju z_u~WgM%IDPPY%@k++Ocbo4v6j*v-p^tK0S?+Z2v(@w&Ihi*jv{5Aw{2Zk&69r;hql zrgJpRW78p$C(>LxIpY1jHfSCsAXYlxTsC=Fo-6tGYts|8uO-jo9Cq}-eHO=>^DW=^ z*M_FUGAlhs*KB226liYji)XfG#_j!Mj&i;+cCh{!_vv6Aa7G1FXmm6U^4euG(%M_` znRDw6Yx(^E(YF0fPrkii|NJccZ}wShjkcRcSL`S{{@Ji=KMcA64U5)%Z}?$V_Xh2{ zYcSvo=bM+q{~L>q0T%2k@bUY-Z_%u7-N+v8LHTb(kAE)o+t-!|br|dkhbDnf6cK!nv^IUA}Ly|76f(*$JCZ&ChYi zxao;~C!V}CtdO(otzkFs+5e&qsNmCtU#Feks8A56uj}?dJATV{R<;%+oiSMzdo?xI zhsOdTqaGE6tmTerugA7VB0hL`pI7TWH+#Kj3^#YIze88z?fikpd0?0?#|ivrYQ1B- zo#|{<4(-vx910UPY#60vp6`w5*r};&{wQ;aXLU$=YpQ4OwOeh*X?o6cPPbfj z)+s5f{hj8Jxzv`UM{7Cfx!pPizgTKt zEdIm13H3RJsK-}kGZJ;d-+(7Wu@@`@w+l-A`$#ve<#p4I^w4QW{$YF;`pIL|aJcWD z{$JR+>89C+@-=hv+nF`S4eP~;i++Am^ttoz49B--6<}ipMy}Wx7Z-mXM#*syRz*xG z*7Dt8ZQ@lCwT#E&^vt<6M<+PxU$pNy`w2I|vwW;e!`dzm@r}Hi^7Fj06ypcyU+$gh z%TZQY<7LCO_K2Nl|85$dzA#!~bo>SU%!3Pxb1&I#8;KawpKOdT_eMFIu|%OnwxC$x zWG{r1EB3h!ZJX-*5QjHN<2m;Pm3YjdA7N3?{_{ElBRbqQ4o8v@$ql+LJreN9Ukn5I zcCPPXmpvlqNu$&pN{+})!_uFIJqBAyir`G`jUYzyYLxrKDUlPdJe2`YaQvTa2k@S0 zJoco-n9I+1?R)padISI{6*IiN=jnbvWZY$cDE)<#pX>yS^i%%a9pii=GxCrtF7$Hm zeCw-!Xnp{#WMh!l!s#Qk+WqwIPfPl^-)K?p3o+Yr47c0b&;{n8x!^j@FC4v{`4s56 zb)J~>-*NnoC_7YGS_sI?RVzbm7Hd@;pS6)oE|Publ;ZXzMd3<~^W zih?0O6q7*8VmtUVd^f~#`Hs)ZGCf#+m_s{W_c~APw=d<6D^G0R`6ZtlHci8OK2psS zcq*ZNJX1s#$*oY#PI}e(0Y9awf%(*X$oY zL$dhMv9b^Nw6W)H_ZH+{vHn(MMD6=NZ`nKHx95B>oP>5~4FA`kyYxnD-q-2**)Y4V z^jwyHCsx|`MY9v~g!kIH_0^wcuD3>epc&`(nKye6_Ik!%yXCV?`)Bez(=F%B6#f$S zt@K?Bd)e=j+pIQv_QsSe2ncc;jqV&G%9mw`Wlp?{>gAyr}H$;*>o+(aAgtx?C#tcs*pZ;gV z3%-%CmcSF)qsloVUib4JHiDI#J9ljF?<4!~xhs^vFt2Y+<4*4zwk|Txh$iFV z+Zs;tC-={;er{GS5VZf$Xy~Txx7(+?h9hvk&rz+&B>4AdYx zIkA7@zh|(3pA&nulHs{xP-3~G#d|RM96;v#>AwSKa6k9+?iz)IyYaq>2f-g41*b&r z;#6)TJOr0LH7N0@Ag3Z%1FRA2CvU+$B(k)g4py8p5$T`zT|CX1C?w*~*5;YTnzI}& z?;s)v?pdGr42u6Yyq&jCoQr-myNE1tuq>a?`vXSVC7}O)Z%pU+8;gG*d~lBk-_Et6 z--Er(!!7er@f4rpEu&9z;;t?J)4YOwM(#P!JFm_4sn!10jlJEB^=faB1LBq}ac2(~7wvl}Sk@g}su`fippr}-JqVQRz}#d4XqJoinLQBp zFAeZ{i+bkXd``Dvv9oK^j#@9CE94;B5H8iuae5Z-=#D{fY|au#3TLl6*>bv}hI}Z! z#FFN|vo1B4`{&D1T!J{4x^zcV9Bl008BfonT2_YlpZrZ$^RM=UB`~iyeqVH!^6rUl zptYd*dQHwtb8!SL+~q|+ZKvIY`_L4n%*xal)G?+CWd|U4gja{E-v786Qo<4a;R~|a zMRoGIx(0)<$bwPsQlD>Jf&nLfaO@H68KfU~OR(|CUB*6fT~|XsZ=ay&n`Uk4#wC9L zzZi|PQ%=)$i>nrWQ&#VewGy_*)EE|BFR}uqht~PSz<=x^8cey{TNbrLD=ZtUrm1oV z503{~zcn7V4KA`?k?mtVIQ=+PFI$6S8*4yz=0Ap8v|F|p`F>M)GubQ8)AruvmWoeh zS4WFhCbwkP8H3*8&z8`Jc}o>%WvpIgi(Pb>owKos<6hMEu(LOeV!1~kyIMZT`!=ey zEEW)O#0W0&dXl)rgXfz=wLyy;M%jIx=kqZxDmyD^hEH~c9);B1>#z{JXaFy#xneD=6Gs-%4$8h6b%V97y55( zKF9KyKY8|^@oj!`$MA@C{mi~q=DYHwU4n+ha*s)CN07#x5OfO(n*tvS7C6>%mJ<=Z z#&*W)$P(tVeTQ`C6vilw>bAS~_xN$0v9oJf5l)3SV8LI;$~bZC3@6InBqPIW9G|8( zjpoLf3aPK#apg(4#-FeNZoqflwuW7L^0}?Ssp6%b@qBN`xO`+|Ua)_nUHLPKu)ItW|4Rzgb~5k8C|o%QYlgL2XL}9fLt((e0AuSz8)&%OH##^^<1pa@NE4 zKttnu(wQ^UfX^`}3kuBVGr8Yo;G7vJV0kF0dc-X;=p*jU%8JLCc@3UVu`uCG!coKDo+wCOr2~sCCr_Jn%?;uVq87l2@TASLE<6^M#a9hS%nr(E<`M zbE{*2*E|Dw6z|$ovcV+9M2YY@ItmXXGT12y8pHx1CW7tk{OQ^}#@5{xP7!{7*-Ctm z1>(|c?!3C|THbC2TP4PB8s8%`xMh|7-0~l4by!*AC-Ojku-2?g-y%`?3mK(7axa%t zX`Hf_`yh43`r2lTIt<%36MkLrkAIt*7@X_(p6__<40 zdo-F-@tySwh3Hh)@-FYJ5h z3H)fy;2*uSo9LIeYOlTAwKZ|8DbuK)JH*f=9!qRtd2+$Ew7&CKNStwwqE?f&iSJXu zq4TZ0;iWC;u*jClRw6fyo|x^WUfFv2VA6geo-=KC_h%8WJ)C8!^hc4kh;1U+vvdg^ zs+E^`{R1)1ybx8z>x_gJ;7?u8HPdFSGZ^6k8C9n|i8K}*RJqTU5xc*q~v6lUL+h+dG-~*<=nKu(X z$7kk}o)O15&*;>}Q`x(I-VPgNHQ#kUo6gbCf+jd~W7th;=X-|3an}EH(@k-{R{vJ3 zx=q}c!0)A}`JBi|8m-2C-{bC9>DY4fee3rPpEp&1@D})JrQd%(G;?mFaOMcRSnI_a zj1}+~d_c=NXLH(X|M;|F)K=!a^u~6sF0Ce~!g^H4!qxyAdJZ~(qN$iv-e_n?M*`o0 z=P_(fThI6TL8}UyaqP7r&6FHG5^*Kwe#~DZ27Gaxg?a2(CLD59gN&2k{TAqRL zzlFURgUqrkjd9Rf=ocdW`JNCukspmSuKwX3Wa?34KS=w@lNFd2?`OEPUyeER%_HWV zKVKdx+o|?&5=y_y zvRk)WZPo;##osf_1^dN+kPP{TSg%*61Ig(8jZ2MQ@4TbxoxfSuyWATf&flmvYu37_ z&Sg;29C>q8ZI}x$7dRw}WQEwfRPE~Ug` z&pg+-Ik-`&r`=|{Ux8ut;W=ZF11 zYgXzhn^`pAzG`Z##+hrwU<|0xH}|YPlzCWaT&4%UHTKkrqr~UMJ^wLP!_bn?4cFio zs+M=6Tp9I5m*d$rRQN^Pkr*<5?+tjw+Rqpp+r_cQc{Ek$kR3MLZg(#;5P!k^I~Z{q zdATP8IC0=dmgl^bizUo%J#1P99_qklKH&bA_6I3*(I|{;aPE;Hml*qzokiGBgwWlz0YG zo+<$j?`l{C2DpG+4|Klt5*$u#U8H^C>H@hwloWs>rIGM|MwA$- zkk376NRK!mIpS`D(-V;|?(LFCDXzV5e}OxVl<@{`kv2S&_qASwtR-NEE?rlyN|m)8 z=Q62<)5z2WL#mA}Y_&0p-9%o{!8zRXMZPfEEE#mgFw&w_{HRc?>~?G)u+A9+34=8E zT>$rHLuSt9`If%dd5*}C z-?qYQ@xoTiDIPlo8^zz?0j@mbcbv7gJnC8JT9vU*+0LQEOQ`C;ig1Q?)_yJ4@%^{#9bxYj-hsEVDhA%%f0)%7ynIxjE*ocJ zB_Yv~`-;!y$p2Bzv}~Ml{S&_F|J0D9tI!BoSIARN(_<}$^wr%qS|I~`&93XpwR?B##)=!scU-2jBELnw$ zL}P6cflyAD@|uY3F_P%bzJ!tp<6zR#de9#Q6=&zo#m#2(`?usF4=svn1?nx zsUl;LPTZ-X-54T$Q=Xf3+G2!ql`bQ}Ld_%P`giu`%6!uD4GMdbhvGBAiCm8pxMWML zk5gd0zrok)cvyzj7{|{~ZYv57=c%}jRLhQ1n=r3zDdCc+0scNX157#&H}-YXGHwk{ zDCI&8$5=AJkNLhBJC)^7NTR@kC>|b}9^X%SuD|NmC06nd1qNdN;Mgfy7*OioRs8LD zeM+8bVMM#?)DiP~cAc_K%W=puU^nA!(_oSxjTU*-id*^UQ#9+*Gx!$i2))bShJGn2 zr9~_McTYAco0-2pvwyxGB>Vr}+xuFwgLRkffx&}d^c$N)G7>2{Wg7&y3vVSA@?Bp; zlsdxy%2f3FB!qd6WIfsMBnsI8+Lu2}$vCp;k z&82PgJj8&`gj#)w2 zG|)KQ#t1%2sr@$wyD;E@kFmc!+LKQcv1V0-p&}|4Be|`}(nrHztls_aJe3}o54q(J zyleC2EFakiI!}m3`HUp{$uNTyU71Xec3*iN)Kd%}?|L^R3 zdFmaX8RO7Y-m`+(#gF%S#uAnKB*zi%U0QLbIY)75fq&5im|7|bCf(gBHq*>C`$dG zPlDc~u60<~*d|AuIMXs)q?F(p>OL2gG$M$nxkedHc^#_0T1$mC{^rrD!_jLk%~fV} zK{a9jWefSvkkN&Hg=V-LUf%nikN;&mAh=bt;?E{SnDae5@hi@n@6>GVXC=*>9e+sR zT%Ww20UUH`&=>gq!iTqM9F_4P>&rby^x~gv%o7$JRAqe#Y|rX&u^!HyK{BsF>c$#*Ld>gN)rVOaVJl-t28`SIA(@mwT2A3 zOlnRAYdWQIl%?M^|9#*u#YXiceW0_rI|mfBhpqh3S3TNetbFPaU(jjv1_*)Li4 z{?_DkUh^f}wfnPsKeygg0H^9E`2bKbwof_x=^zZf*Y4o+Br)%1R(8eZVn}p92Zt?C=006W`|PU# zH?^NU^mmR)Xe`wtAihIxF<8eMQ=}Q((+a$Dld}cAw-s*%?0Kf^wvU{w*-2%zd zS-Kw#k}Vf<-$&JGes*fV^^ZMyXqI3=Ip+NhYr~IAEZw-%&SwedvclW@83S#NEV*bp zk-OUXYuH)cPSI@?veS8wGc|m_GOewhZ&`29nBXbbDcZhmtNGsMdeiVG$&7q)yoHRO zi#K{77v3(9sHl#G`EHgRtD9CKS)qRRm*0X{J4tUil0C4ZXCM z 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�=CT|O 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 literal 0 HcmV?d00001 diff --git a/ifibonacci.mq4 b/ifibonacci.mq4 new file mode 100644 index 0000000000000000000000000000000000000000..d8a848a62fb0b4c63650d006f53b15dee1f23db5 GIT binary patch literal 63096 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 DG23{n literal 0 HcmV?d00001 diff --git a/ind_aMU.mq4 b/ind_aMU.mq4 new file mode 100644 index 0000000..ba1ccab --- /dev/null +++ b/ind_aMU.mq4 @@ -0,0 +1,109 @@ +//+------------------------------------------------------------------+ +//| ind_aMU.mq4 | +//| Yuriy Tokman (YTG) | +//| yuriytokman@gmail.com | +//+------------------------------------------------------------------+ +#property copyright "Yuriy Tokman (YTG)" +#property link "yuriytokman@gmail.com" + +#property indicator_chart_window + +#property indicator_buffers 2 +#property indicator_color1 Green +#property indicator_color2 Red +#property indicator_width1 2 +#property indicator_width2 2 + +extern int period_fast = 12; +extern int period_slow = 21; +extern int ma_shift = 0; +extern int ma_method = 0; +extern int applied_price = 0; + +extern string Advisers_free_of_charge = "ytg.com.ua";// EA FREE - ytg.com.ua + +double B0[]; +double B1[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +int init() + { +//---- indicators + SetIndexStyle(0, 4); + SetIndexBuffer(0, B0); + SetIndexStyle(1, 4); + SetIndexBuffer(1, B1); + GetAvtor(); +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator deinitialization function | +//+------------------------------------------------------------------+ +int deinit() + { +//---- + +//---- + return(0); + } +//+------------------------------------------------------------------+ +//| Custom indicator iteration function | +//+------------------------------------------------------------------+ +int start() + { +//---- + int limit , i;GetYTG(); + int counted_bars=IndicatorCounted(); + if(counted_bars<0) return(-1); + if(counted_bars>0) counted_bars--; + limit=Bars-counted_bars; + + for(i=0; i2)count = 0; + color color_Y = Red; + color color_T = Lime; + color color_G = Blue; + if(count==1){color_Y = Crimson;color_T = LimeGreen;color_G = DodgerBlue;} + if(count==2){color_Y = OrangeRed;color_T = ForestGreen;color_G = RoyalBlue;} + + Label("ytg_Y","Y" ,3,40,20,25,"Arial Black",color_Y); + Label("ytg_T","T" ,3,25,5,25,"Arial Black",color_T); + Label("ytg_G","G" ,3,13,32,25,"Arial Black",color_G); + } +//----+ \ No newline at end of file diff --git a/rsima_bands nmc 6 lines.mq4 b/rsima_bands nmc 6 lines.mq4 new file mode 100644 index 0000000..d7c46a2 --- /dev/null +++ b/rsima_bands nmc 6 lines.mq4 @@ -0,0 +1,515 @@ +//+------------------------------------------------------------------+ +//| rsimabands | +//| | +//+------------------------------------------------------------------+ + +#property copyright "www.forex-station.com" +#property link "www.forex-station.com" + +#property indicator_separate_window +#property indicator_buffers 7 +#property indicator_color1 clrNONE +#property indicator_color2 clrBlack +#property indicator_color3 clrNONE +#property indicator_color4 clrBlue +#property indicator_color5 clrRed +#property indicator_color6 clrMagenta +#property indicator_color7 clrNONE +#property indicator_width2 2 +#property indicator_width4 2 +#property indicator_width5 2 +#property indicator_width6 9 +#property indicator_width7 2 +#property indicator_levelcolor clrWhite + +// +// +// +// +// + +enum enPrices +{ + pr_close, // Close + pr_open, // Open + pr_high, // High + pr_low, // Low + pr_median, // Median + pr_typical, // Typical + pr_weighted, // Weighted + pr_average, // Average (high+low+open+close)/4 + pr_medianb, // Average median body (open+close)/2 + pr_tbiased, // Trend biased price + pr_haclose, // Heiken ashi close + pr_haopen , // Heiken ashi open + pr_hahigh, // Heiken ashi high + pr_halow, // Heiken ashi low + pr_hamedian, // Heiken ashi median + pr_hatypical, // Heiken ashi typical + pr_haweighted, // Heiken ashi weighted + pr_haaverage, // Heiken ashi average + pr_hamedianb, // Heiken ashi median body + pr_hatbiased // Heiken ashi trend biased price +}; +enum enRsiTypes +{ + rsi_rsi, // Regular RSI + rsi_wil, // Wilders RSI + rsi_rsx, // RSX2 + rsi_cut // Cuttlers RSI +}; + +extern double RsiPeriod = 21; +extern enRsiTypes RsiType = 2; +extern enPrices RsiPrice = 8; +extern int Depth = 2; +extern double Speed = 0.5; +extern int RsiPriceLinePeriod = 2; +extern ENUM_MA_METHOD RsiPriceLineMAMode = MODE_LWMA; +extern int RsiSignalLinePeriod = 7; +extern ENUM_MA_METHOD RsiSignalLineMAMode = MODE_LWMA; +extern int VolatilityBandPeriod = 34; +extern ENUM_MA_METHOD VolatilityBandMAMode = MODE_LWMA; +extern double VolatilityBandMultiplier = 2.00; +extern double LevelDn = 15; +extern double LevelDn1 = -11; +extern double LevelMid = 35; +extern double LevelMid1 = 65; +extern double LevelUp = 85; +extern double LevelUp1 = 115; +extern bool ColorOnSlope = true; +extern bool verticalLinesVisible = false; // Show vertical lines +extern bool linesOnNewest = true; // Lines on newest bar? +extern string verticalLinesID = "TDI Lines"; // Lines ID +extern color verticalLinesUpColor = clrDeepSkyBlue; // Lines up color +extern color verticalLinesDnColor = clrPaleVioletRed; // Lines down color +extern ENUM_LINE_STYLE verticalLinesStyle = STYLE_DOT; // Lines style +extern int verticalLinesWidth = 0; // lines width + +// +// +// +// +// + +double rsi[]; +double rsiPriceLine[]; +double buffer1[]; +double buffer2[]; +double rsiSignalLine[]; +double bandUp[]; +double bandMiddle[]; +double bandDown[]; +double slope[]; +double trend[]; + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +// +// +// +// +// + +int init() +{ + IndicatorBuffers(10); + SetIndexBuffer(0,bandUp); + SetIndexBuffer(1,bandMiddle); + SetIndexBuffer(2,bandDown); + SetIndexBuffer(3,rsiPriceLine); + SetIndexBuffer(4,buffer1); + SetIndexBuffer(5,buffer2); + SetIndexBuffer(6,rsiSignalLine); + SetIndexBuffer(7,rsi); + SetIndexBuffer(8,slope); + SetIndexBuffer(9,trend); + SetLevelValue(0,LevelUp); + SetLevelValue(1,LevelUp1); + SetLevelValue(2,LevelMid); + SetLevelValue(3,LevelMid1); + SetLevelValue(4,LevelDn); + SetLevelValue(5,LevelDn1); + + Speed = MathMax(MathMin(1.5,Speed),0.1); + Depth = MathMax(MathMin(10 ,Depth),1); + + IndicatorShortName(getRsiName((int)RsiType)+ " Ma ("+DoubleToStr(RsiPeriod,2)+")"); + +return(0); +} +int deinit() +{ + string tlookFor = verticalLinesID+":"; + int tlookForLength = StringLen(tlookFor); + for (int i=ObjectsTotal()-1; i>=0; i--) + { + string objectName = ObjectName(i); + if (StringSubstr(objectName,0,tlookForLength) == tlookFor) ObjectDelete(objectName); + } +return(0); +} +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +// +// +// +// +// + +int start() +{ + int counted_bars=IndicatorCounted(); + int i,limit; + + if(counted_bars<0) return(-1); + if(counted_bars>0) counted_bars--; + limit = MathMin(Bars-counted_bars,Bars-1); + + // + // + // + // + // + + if (slope[limit]==-1) CleanPoint(limit,buffer1,buffer2); + for (i=limit; i >= 0; i--) rsi[i] = iRsi(getPrice(RsiPrice,Open,Close,High,Low,i),RsiPeriod,RsiType,i); + for (i=limit; i >= 0; i--) + { + rsiPriceLine[i] = iMAOnArray(rsi,0,RsiPriceLinePeriod,0,RsiPriceLineMAMode,i); + rsiSignalLine[i] = iMAOnArray(rsi,0,RsiSignalLinePeriod,0,RsiSignalLineMAMode,i); + double deviation = iStdDevOnArray(rsi,0,VolatilityBandPeriod,0,VolatilityBandMAMode,i); + double average = iMAOnArray(rsi,0,VolatilityBandPeriod,0,VolatilityBandMAMode,i); + bandUp[i] = average+VolatilityBandMultiplier*deviation; + bandDown[i] = average-VolatilityBandMultiplier*deviation; + bandMiddle[i] = average; + buffer1[i] = EMPTY_VALUE; + buffer2[i] = EMPTY_VALUE; + trend[i] = (i50) ? 1 : (rsiPriceLine[i]<50) ? -1 : trend[i+1] : 0; + slope[i] = slope[i+1]; + if (ColorOnSlope) + { + if (rsiPriceLine[i]>rsiPriceLine[i+1]) slope[i] = 1; + if (rsiPriceLine[i]rsiSignalLine[i]) slope[i] = 1; + if (rsiPriceLine[i]=pr_haclose && price<=pr_hatbiased) + { + if (ArrayRange(workHa,0)!= Bars) ArrayResize(workHa,Bars); + int r = Bars-i-1; + + // + // + // + // + // + + double haOpen; + if (r>0) + haOpen = (workHa[r-1][instanceNo+2] + workHa[r-1][instanceNo+3])/2.0; + else haOpen = (open[i]+close[i])/2; + double haClose = (open[i] + high[i] + low[i] + close[i]) / 4.0; + double haHigh = MathMax(high[i], MathMax(haOpen,haClose)); + double haLow = MathMin(low[i] , MathMin(haOpen,haClose)); + + if(haOpen haOpen) + return((haHigh+haClose)/2.0); + else return((haLow+haClose)/2.0); + } + } + + // + // + // + // + // + + switch (price) + { + case pr_close: return(close[i]); + case pr_open: return(open[i]); + case pr_high: return(high[i]); + case pr_low: return(low[i]); + case pr_median: return((high[i]+low[i])/2.0); + case pr_medianb: return((open[i]+close[i])/2.0); + case pr_typical: return((high[i]+low[i]+close[i])/3.0); + case pr_weighted: return((high[i]+low[i]+close[i]+close[i])/4.0); + case pr_average: return((high[i]+low[i]+close[i]+open[i])/4.0); + case pr_tbiased: + if (close[i]>open[i]) + return((high[i]+close[i])/2.0); + else return((low[i]+close[i])/2.0); + } + return(0); +} + +//------------------------------------------------------------------ +// +//------------------------------------------------------------------ +// +// +// +// +// +// + +string rsiMethodNames[] = {"rsi","Wilders rsi","rsx2","Cuttler RSI"}; +string getRsiName(int method) +{ + int max = ArraySize(rsiMethodNames)-1; + method=MathMax(MathMin(method,max),0); return(rsiMethodNames[method]); +} + + +// +// +// +// +// + +double workRsi[][13]; +#define _price 0 +#define _change 1 +#define _changa 2 + +double iRsi(double price, double period, int rsiMode, int i, int instanceNo=0) +{ + if (ArrayRange(workRsi,0)!=Bars) ArrayResize(workRsi,Bars); + int z = instanceNo*13; + int r = Bars-i-1; + + // + // + // + // + // + + workRsi[r][z+_price] = price; + switch (rsiMode) + { + case 0: + double alpha = 1.0/period; + if (r=0; k++) sum += MathAbs(workRsi[r-k][z+_price]-workRsi[r-k-1][z+_price]); + workRsi[r][z+_change] = (workRsi[r][z+_price]-workRsi[0][z+_price])/MathMax(k,1); + workRsi[r][z+_changa] = sum/MathMax(k,1); + } + else + { + double change = workRsi[r][z+_price]-workRsi[r-1][z+_price]; + workRsi[r][z+_change] = workRsi[r-1][z+_change] + alpha*( change - workRsi[r-1][z+_change]); + workRsi[r][z+_changa] = workRsi[r-1][z+_changa] + alpha*(MathAbs(change) - workRsi[r-1][z+_changa]); + } + if (workRsi[r][z+_changa] != 0) + return(50.0*(workRsi[r][z+_change]/workRsi[r][z+_changa]+1)); + else return(50.0); + + // + // + // + // + // + + case 1 : + workRsi[r][z+1] = iSmma(0.5*(MathAbs(workRsi[r][z+_price]-workRsi[r-1][z+_price])+(workRsi[r][z+_price]-workRsi[r-1][z+_price])),0.5*(period-1),Bars-i-1,instanceNo*2+0); + workRsi[r][z+2] = iSmma(0.5*(MathAbs(workRsi[r][z+_price]-workRsi[r-1][z+_price])-(workRsi[r][z+_price]-workRsi[r-1][z+_price])),0.5*(period-1),Bars-i-1,instanceNo*2+1); + if((workRsi[r][z+1] + workRsi[r][z+2]) != 0) + return(100.0 * workRsi[r][z+1]/(workRsi[r][z+1] + workRsi[r][z+2])); + else return(50); + + // + // + // + // + // + + case 2 : + double Kg = (3.0)/(2.0+period), Hg = 1.0-Kg; + if (r 0) sump += diff; + if (diff < 0) sumn -= diff; + } + if (sumn > 0) + return(100.0-100.0/(1.0+sump/sumn)); + else return(50); + } + return(50); +} + +// +// +// +// +// + +double workSmma[][2]; +double iSmma(double price, double period, int r, int instanceNo=0) +{ + if (ArrayRange(workSmma,0)!= Bars) ArrayResize(workSmma,Bars); + + // + // + // + // + // + + if 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 literal 0 HcmV?d00001